github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/preflight/util/schema.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package util 21 22 import ( 23 v1 "k8s.io/apimachinery/pkg/apis/meta/v1" 24 "k8s.io/apimachinery/pkg/runtime" 25 "k8s.io/apimachinery/pkg/runtime/schema" 26 "k8s.io/apimachinery/pkg/runtime/serializer" 27 utilruntime "k8s.io/apimachinery/pkg/util/runtime" 28 29 preflightv1beta2 "github.com/1aal/kubeblocks/externalapis/preflight/v1beta2" 30 ) 31 32 var Scheme = runtime.NewScheme() 33 var Codecs = serializer.NewCodecFactory(Scheme) 34 var ParameterCodec = runtime.NewParameterCodec(Scheme) 35 var localSchemeBuilder = runtime.SchemeBuilder{ 36 preflightv1beta2.AddToScheme, 37 } 38 39 // AddToScheme adds all types of this clientset into the given scheme. This allows composition 40 // of clientsets, like in: 41 // 42 // import ( 43 // "k8s.io/client-go/kubernetes" 44 // clientsetscheme "k8s.io/client-go/kubernetes/scheme" 45 // aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" 46 // ) 47 // 48 // kclientset, _ := kubernetes.NewForConfig(c) 49 // _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) 50 // 51 // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types 52 // correctly. 53 var AddToScheme = localSchemeBuilder.AddToScheme 54 55 func init() { 56 v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) 57 utilruntime.Must(AddToScheme(Scheme)) 58 }