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}
        }
        

client-go之listers包源码分析相关推荐

  1. Brpc 服务端收包源码分析(一)

    文章目录 server端使用 brpc::Server::AddService初始化各种数据 StartInternal内部其余服务也调用该函数 接收连接套接字StartAccept请求 ResetF ...

  2. Golang日志框架lumberjack包源码分析

    github地址:  https://github.com/natefinch/lumberjack 获取源码 go get gopkg.in/natefinch/lumberjack.v2 介绍 l ...

  3. java.util.concurrent 包源码分析之Fork/Join框架

    在JDK7引入了Fork/Join框架,所谓Fork/Join框架,个人理解,有一种分治的策略在里边:Fork分解任务成独立的子任务,用多线程去执行这些子任务,Join合并子任务的结果.这样就能使用多 ...

  4. Java多线程 -- JUC包源码分析2 -- Copy On Write/CopyOnWriteArrayList/CopyOnWriteArraySet

    本人新书出版,对技术感兴趣的朋友请关注: https://mp.weixin.qq.com/s/uq2cw2Lgf-s4nPHJ4WH4aw 上1篇讲述了Java并发编程的第1个基本思想–CAS/乐观 ...

  5. SpringBoot Jar包构建源码分析

    我们知道,SpringBoot仅凭一个Jar包就能将我们构建的整个工程跑起来,如果你也想知道这个能跑起来的jar内部结构是如何构建出来的,请耐心读完本篇,本篇内容可能有点多,但包你有收获.如果读完没有 ...

  6. 【SemiDrive源码分析】【X9芯片启动流程】21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇

    [SemiDrive源码分析][X9芯片启动流程]21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇 一.Mailbox for Linux 驱动框架分 ...

  7. MapReduce中Client提交Job源码分析

    回顾 在进行submit源码分析之前,先来回顾一下WordCount案例(点击查看WordCount案例).仔细回想一下曾经Client都干了点啥?获取对象-->一通set-->job.w ...

  8. Docker源码分析(二):Docker Client创建与命令执行

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part2 1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引 ...

  9. 【投屏】Scrcpy源码分析三(Client篇-投屏阶段)

    Scrcpy源码分析系列 [投屏]Scrcpy源码分析一(编译篇) [投屏]Scrcpy源码分析二(Client篇-连接阶段) [投屏]Scrcpy源码分析三(Client篇-投屏阶段) [投屏]Sc ...

最新文章

  1. CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
  2. Windows系统安装Oracle 11g客户端
  3. 又一轮电邮中间人攻击来袭 企业如何自保?
  4. tomcat linux dump,Linux下Tomcat常用命令与配置
  5. 通过字符串的方式读取文件的内容
  6. Web前端---HTML+CSS+JS实现的圣诞抓礼物小游戏
  7. PXA300平台2D图形加速器性能测试与分析
  8. Android录屏解决方案调研
  9. iOS面试前的准备计划(2022)
  10. excel浏览器直接下载
  11. EM与PX的对应关系
  12. 【Python_PyQtGraph 学习笔记(四)】基于PyQtGraph设置槽函数,实现保存图片到本地的功能
  13. 小松鼠邮件服务器搭建(很简单的哦!)
  14. 应用金数据在线订单功能 为中小企业带来真正价值
  15. Android Studio TCP客户端实现
  16. [python]线性规划作图及求解
  17. 实现NRF24L01自动对频功能
  18. 计算机一级中的进制,计算机一级课程中介绍的不同进制数转换方法之数学原理.doc...
  19. 全网最详细解法----leetCode-17--电话号码的字母组合,Java入门你值得拥有
  20. java 判断文件是否存在 存在就删除_java中如何判断文件是否存在,不存在则新建文件...

热门文章

  1. 自动灌溉c语言,基于计算机C语言温室雨水自动化灌溉系统设计.doc
  2. 微信公众号开发不能下载文件处理方式
  3. 空间复杂度计算超全整理!!(一起手撕复杂度计算
  4. matlab trapz 离散点,MATLAB求解方程之trapz函数
  5. 遭遇职场冷暴力能怎么办?
  6. springboot整合My_batis 排错
  7. 熬不过“冬天”,又一跨境电商平台关停
  8. 计算机毕业设计Android图书馆教室座位预约系统app
  9. python面向对象-老王开枪
  10. h5 调用后置摄像头