*
* * Copyright (c) 2024 China Unicom Digital Technology Co., Ltd.
* * openFuyao is licensed under Mulan PSL v2.
* * You can use this software according to the terms and conditions of the Mulan PSL v2.
* * You may obtain a copy of Mulan PSL v2 at:
* * http://license.coscl.org.cn/MulanPSL2
* * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* * See the Mulan PSL v2 for more details.
*
*/
package apps
import (
"sync"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
colocationv1 "openfuyao.com/colocation-management/pkg/apis/v1"
)
var (
schemeOnce sync.Once
schemeInstance *runtime.Scheme
)
func GetScheme() *runtime.Scheme {
schemeOnce.Do(func() {
schemeInstance = runtime.NewScheme()
utilruntime.Must(scheme.AddToScheme(schemeInstance))
utilruntime.Must(colocationv1.AddToScheme(schemeInstance))
schemeInstance.AddUnversionedTypes(v1.SchemeGroupVersion,
&v1.UpdateOptions{},
&v1.DeleteOptions{},
&v1.CreateOptions{})
})
return schemeInstance
}