代码位置:k8s.io/apimachinery/pkg/runtime
SchemeBuilder
Overview
SchemeBuilder
用于存放处理 Scheme 的函数
type SchemeBuilder []func(*Scheme) error
NewSchemeBuilder
创建并初始化 SchemeBuilder
func NewSchemeBuilder(funcs ...func(*Scheme) error) SchemeBuilder {var sb SchemeBuildersb.Register(funcs...)return sb}
Register
向 SchemeBuilder 注册处理 Scheme 的函数
func (sb *SchemeBuilder) Register(funcs ...func(*Scheme) error) {for _, f := range funcs {*sb = append(*sb, f)}}
AddToScheme
将 SchemeBuilder 中的函数作用于 Scheme
func (sb *SchemeBuilder) AddToScheme(s *Scheme) error {for _, f := range *sb {if err := f(s); err != nil {return err}}return nil}
Usage
v1
var (SchemeBuilderV1 = runtime.NewSchemeBuilder(addKnownTypes)AddToScheme = SchemeBuilder.AddToScheme)func addKnownTypes(scheme *runtime.Scheme) error { ... }
v2
var (SchemeBuilderV2 = runtime.NewSchemeBuilder()AddToScheme = SchemeBuilder.AddToScheme)func init() { SchemeBuilder.Register(addKnownTypes) }func addKnownTypes(scheme *runtime.Scheme) error { ... }
AddToScheme
scheme := runtime.NewScheme()if err := SchemeBuilderV1.AddToScheme(scheme); err != nil { ... }if err := SchemeBuilderV2.AddToScheme(scheme); err != nil { ... }
