client-go之listers包源码分析
listers包源码分析
- listers包
- admissionregistration包
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追加到reterr = 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追加到reterr = 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
client-go之listers包源码分析相关推荐
- Brpc 服务端收包源码分析(一)
文章目录 server端使用 brpc::Server::AddService初始化各种数据 StartInternal内部其余服务也调用该函数 接收连接套接字StartAccept请求 ResetF ...
- Golang日志框架lumberjack包源码分析
github地址: https://github.com/natefinch/lumberjack 获取源码 go get gopkg.in/natefinch/lumberjack.v2 介绍 l ...
- java.util.concurrent 包源码分析之Fork/Join框架
在JDK7引入了Fork/Join框架,所谓Fork/Join框架,个人理解,有一种分治的策略在里边:Fork分解任务成独立的子任务,用多线程去执行这些子任务,Join合并子任务的结果.这样就能使用多 ...
- Java多线程 -- JUC包源码分析2 -- Copy On Write/CopyOnWriteArrayList/CopyOnWriteArraySet
本人新书出版,对技术感兴趣的朋友请关注: https://mp.weixin.qq.com/s/uq2cw2Lgf-s4nPHJ4WH4aw 上1篇讲述了Java并发编程的第1个基本思想–CAS/乐观 ...
- SpringBoot Jar包构建源码分析
我们知道,SpringBoot仅凭一个Jar包就能将我们构建的整个工程跑起来,如果你也想知道这个能跑起来的jar内部结构是如何构建出来的,请耐心读完本篇,本篇内容可能有点多,但包你有收获.如果读完没有 ...
- 【SemiDrive源码分析】【X9芯片启动流程】21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇
[SemiDrive源码分析][X9芯片启动流程]21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇 一.Mailbox for Linux 驱动框架分 ...
- MapReduce中Client提交Job源码分析
回顾 在进行submit源码分析之前,先来回顾一下WordCount案例(点击查看WordCount案例).仔细回想一下曾经Client都干了点啥?获取对象-->一通set-->job.w ...
- Docker源码分析(二):Docker Client创建与命令执行
http://www.infoq.com/cn/articles/docker-source-code-analysis-part2 1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引 ...
- 【投屏】Scrcpy源码分析三(Client篇-投屏阶段)
Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...
最新文章
- CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
- Windows系统安装Oracle 11g客户端
- 又一轮电邮中间人攻击来袭 企业如何自保?
- tomcat linux dump,Linux下Tomcat常用命令与配置
- 通过字符串的方式读取文件的内容
- Web前端---HTML+CSS+JS实现的圣诞抓礼物小游戏
- PXA300平台2D图形加速器性能测试与分析
- Android录屏解决方案调研
- iOS面试前的准备计划(2022)
- excel浏览器直接下载
- EM与PX的对应关系
- 【Python_PyQtGraph 学习笔记(四)】基于PyQtGraph设置槽函数,实现保存图片到本地的功能
- 小松鼠邮件服务器搭建(很简单的哦!)
- 应用金数据在线订单功能 为中小企业带来真正价值
- Android Studio TCP客户端实现
- [python]线性规划作图及求解
- 实现NRF24L01自动对频功能
- 计算机一级中的进制,计算机一级课程中介绍的不同进制数转换方法之数学原理.doc...
- 全网最详细解法----leetCode-17--电话号码的字母组合,Java入门你值得拥有
- java 判断文件是否存在 存在就删除_java中如何判断文件是否存在,不存在则新建文件...