代码位置: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 SchemeBuilder
sb.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 { ... }