listers包源码分析
listers包
从cache.Indexer中获取原生k8s的对象/列表
admissionregistration包
以admissionregistration包做分析,其他的类似,不在分析
- v1
- expansion_generated.go 用于扩展resource client
- 接口
// MutatingWebhookConfigurationListerExpansion 将自定义方法添加到MutatingWebhookConfigurationLister。 type MutatingWebhookConfigurationListerExpansion interface{} // ValidatingWebhookConfigurationListerExpansion 将自定义方法添加到ValidatingWebhookConfigurationLister。 type ValidatingWebhookConfigurationListerExpansion interface{}
- 接口
- mutatingwebhookconfiguration.go
- 接口
// MutatingWebhookConfigurationLister 获取 MutatingWebhookConfigurations。这里返回的所有对象都必须被视为只读(因为是从缓存中获取的且是指针对象)。 type MutatingWebhookConfigurationLister interface { // List 列出索引器(缓存)所有 MutatingWebhookConfigurations。此处返回的对象必须被视为只读(因为是从缓存中获取的且是指针对象)。 List(selector labels.Selector) (ret []*v1.MutatingWebhookConfiguration, err error) // Get 从给定名称的索引中检索 MutatingWebhookConfiguration。此处返回的对象必须被视为只读(因为是从缓存中获取的且是指针对象)。 Get(name string) (*v1.MutatingWebhookConfiguration, error) // 扩展Lister接口的接口 MutatingWebhookConfigurationListerExpansion }
- 结构体
// mutatingWebhookConfigurationLister 实现了 MutatingWebhookConfigurationLister 接口。 type mutatingWebhookConfigurationLister struct { // 缓存索引 indexer cache.Indexer } // List 列出索引器中的所有 MutatingWebhookConfigurations。 func (s *mutatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1.MutatingWebhookConfiguration, err error) { // cache.ListAll是tools包的方法(以后做分析),根据索引器,标签选择器获取全部obj追加到ret err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.MutatingWebhookConfiguration)) }) return ret, err } // Get 从给定索引值(一般顺序是 名称(keyFunc到下步)->索引名称(indexFunc到下步)->索引值(items.get到下步)->items中get)在索引中检索 MutatingWebhookConfiguration。 func (s *mutatingWebhookConfigurationLister) Get(name string) (*v1.MutatingWebhookConfiguration, error) { // 这里的name是Index中value中的一个值(索引值),直接从包含有全部对象缓存的map中获取 obj, exists, err := s.indexer.GetByKey(name) if err != nil { return nil, err } if !exists { return nil, errors.NewNotFound(v1.Resource("mutatingwebhookconfiguration"), name) } return obj.(*v1.MutatingWebhookConfiguration), nil }
- 函数
// NewMutatingWebhookConfigurationLister 返回一个新的 MutatingWebhookConfigurationLister。 func NewMutatingWebhookConfigurationLister(indexer cache.Indexer) MutatingWebhookConfigurationLister { return &mutatingWebhookConfigurationLister{indexer: indexer} }
- 接口
- validatingwebhookconfiguration.go
- 接口
// ValidatingWebhookConfigurationLister 获取 ValidatingWebhookConfiguration 列表。这里返回的所有对象都必须被视为只读(因为是从缓存中获取的且是指针对象)。 type ValidatingWebhookConfigurationLister interface { // List 列出索引器中的所有 ValidatingWebhookConfigurations。此处返回的对象必须被视为只读(因为是从缓存中获取的且是指针对象)。 List(selector labels.Selector) (ret []*v1.ValidatingWebhookConfiguration, err error) // Get 从给定名称的索引中检索 ValidatingWebhookConfiguration。此处返回的对象必须被视为只读(因为是从缓存中获取的且是指针对象)。 Get(name string) (*v1.ValidatingWebhookConfiguration, error) ValidatingWebhookConfigurationListerExpansion }
- 结构体
// validatingWebhookConfigurationLister 实现了 ValidatingWebhookConfigurationLister 接口。 type validatingWebhookConfigurationLister struct { // 索引器(缓存resource) indexer cache.Indexer } // List 列出索引器中的所有 ValidatingWebhookConfigurations。 func (s *validatingWebhookConfigurationLister) List(selector labels.Selector) (ret []*v1.ValidatingWebhookConfiguration, err error) { // cache.ListAll是tools包的方法(以后做分析),根据索引器,标签选择器获取全部obj追加到ret err = cache.ListAll(s.indexer, selector, func(m interface{}) { ret = append(ret, m.(*v1.ValidatingWebhookConfiguration)) }) return ret, err } // // Get 从给定索引值(一般顺序是 名称(keyFunc到下步)->索引名称(indexFunc到下步)->索引值(items.get到下步)->items中get)在索引中检索 ValidatingWebhookConfiguration。 func (s *validatingWebhookConfigurationLister) Get(name string) (*v1.ValidatingWebhookConfiguration, error) { // 这里的name是Index中value中的一个值(索引值),直接从包含有全部对象缓存的map中获取 obj, exists, err := s.indexer.GetByKey(name) if err != nil { return nil, err } if !exists { return nil, errors.NewNotFound(v1.Resource("validatingwebhookconfiguration"), name) } return obj.(*v1.ValidatingWebhookConfiguration), nil }
- 函数
// NewValidatingWebhookConfigurationLister 返回一个新的 ValidatingWebhookConfigurationLister。 func NewValidatingWebhookConfigurationLister(indexer cache.Indexer) ValidatingWebhookConfigurationLister { return &validatingWebhookConfigurationLister{indexer: indexer} }
- 接口
- expansion_generated.go 用于扩展resource client