上一篇文章中,我们主要介绍了 kubernetes 中资源的服务层接口定义,包括增删改查类接口,以及操作的策略类接口。在本篇文章里, 我们主要来介绍资源增删改查类接口的实现。
对于增删改查类接口实现,图解和源码如下:
// k8s.io/apiserver/pkg/registry/generic/registry/store.go
type GenericStore interface {
GetCreateStrategy() rest.RESTCreateStrategy
GetUpdateStrategy() rest.RESTUpdateStrategy
GetDeleteStrategy() rest.RESTDeleteStrategy
}
type Store struct {
NewFunc func() runtime.Object
NewListFunc func() runtime.Object
CreateStrategy rest.RESTCreateStrategy
UpdateStrategy rest.RESTUpdateStrategy
DeleteStrategy rest.RESTDeleteStrategy
Storage DryRunnableStorage
KeyRootFunc func(ctx context.Context) string
KeyFunc func(ctx context.Context, name string) (string, error)
ObjectNameFunc func(obj runtime.Object) (string, error)
......
}
func (e *Store) New() runtime.Object{...} ==>Storage
func (e *Store) NewList() runtime.Object{...}==>Lister
func (e *Store) List(ctx context.Context, options *metainternalversion.ListOptions) (runtime.Object, error) {...}
func (e *Store) NamespaceScoped() bool {...}==>Scoper
func (e *Store) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error){...}==>Getter
func (e *Store) Watch(ctx context.Context, options *metainternalversion.ListOptions) (watch.Interface, error)==>{...}Watcher
func (e *Store) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error)==>{...}Creater
func (e *Store) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error){...}==>Updater
func (e *Store) Delete(ctx context.Context, name string, deleteValidation rest.ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error){...} ==>GracefulDeleter
func (e *Store) DeleteCollection(ctx context.Context, deleteValidation rest.ValidateObjectFunc, options *metav1.DeleteOptions, listOptions *metainternalversion.ListOptions) (runtime.Object, error){...}==>CollectionDeleter
func (e *Store) GetCreateStrategy() rest.RESTCreateStrategy{...} ==>GenericStore
func (e *Store) GetUpdateStrategy() rest.RESTUpdateStrategy{...}
func (e *Store) GetDeleteStrategy() rest.RESTDeleteStrategy{...}
目前先我们写到这里,在下一篇文章中我们继续来介绍资源数据服务层策略类型接口的实现。