var ( // Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. // NOTE: If you are copying this file to start a new api group, STOP! Copy the // extensions group instead. This Scheme is special and should appear ONLY in // the api group, unless you really know what you're doing. // TODO(lavalamp): make the above error impossible. Scheme = runtime.NewScheme()
// Codecs provides access to encoding and decoding for the scheme Codecs = serializer.NewCodecFactory(Scheme)
// ParameterCodec handles versioning of objects that are converted to query parameters. ParameterCodec = runtime.NewParameterCodec(Scheme) )
导入 k8s.io/kubernetes/pkg/controlplane 后,在该包下的 import_known_versions.go 文件中,导入了所有 apiserver 支持的 API groups。
// Install registers the API group and adds types to a scheme funcInstall(scheme *runtime.Scheme) { utilruntime.Must(apps.AddToScheme(scheme)) utilruntime.Must(v1beta1.AddToScheme(scheme)) utilruntime.Must(v1beta2.AddToScheme(scheme)) utilruntime.Must(v1.AddToScheme(scheme)) utilruntime.Must(scheme.SetVersionPriority(v1.SchemeGroupVersion, v1beta2.SchemeGroupVersion, v1beta1.SchemeGroupVersion)) }
var ( // SchemeBuilder stores functions to add things to a scheme. SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme applies all stored functions t oa scheme. AddToScheme = SchemeBuilder.AddToScheme )
// GroupName is the group name use in this package const GroupName = "apps"
// SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
// Adds the list of known types to the given scheme. funcaddKnownTypes(scheme *runtime.Scheme)error { // TODO this will get cleaned up with the scheme types are fixed scheme.AddKnownTypes(SchemeGroupVersion, &DaemonSet{}, &DaemonSetList{}, &Deployment{}, &DeploymentList{}, &DeploymentRollback{}, &autoscaling.Scale{}, &StatefulSet{}, &StatefulSetList{}, &ControllerRevision{}, &ControllerRevisionList{}, &ReplicaSet{}, &ReplicaSetList{}, ) returnnil }
// SchemeBuilder collects functions that add things to a scheme. It's to allow // code to compile without explicitly referencing generated types. You should // declare one in each package that will have generated deep copy or conversion // functions. type SchemeBuilder []func(*Scheme)error
// Register adds a scheme setup function to the list. func(sb *SchemeBuilder) Register(funcs ...func(*Scheme) error) { for _, f := range funcs { *sb = append(*sb, f) } }
// NewSchemeBuilder calls Register for you. funcNewSchemeBuilder(funcs ...func(*Scheme)error) SchemeBuilder { var sb SchemeBuilder sb.Register(funcs...) return sb }
// AddToScheme applies all the stored functions to the scheme. A non-nil error // indicates that one function failed and the attempt was abandoned. func(sb *SchemeBuilder) AddToScheme(s *Scheme) error { for _, f := range *sb { if err := f(s); err != nil { return err } } returnnil }