client-go之listers包源码分析

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}
        }
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值