salt 源码之 执行流程

1.salt 命令的开始脚本
[[email protected] ~]# which salt
/usr/bin/salt
[[email protected] ~]# cat /usr/bin/salt
#!/usr/bin/python2.6
‘‘‘
Publish commands to the salt system from the command line on the master.
‘‘‘

from salt.scripts import salt_main

if __name__ == ‘__main__‘:
    salt_main()

可以看到salt命令实际上是调用的是:
salt.scripts文件中的salt_main()函数而已

2.salt_main函数如下

client = salt.cli.salt.SaltCMD()
client.run()

salt_main函数建立一个salt.cli.salt.SaltCMD实例client,然后执行该实例的run方法

run方法执行内容如下:

self.parse_args()  #解析命令行选项
local = salt.client.get_local_client(self.get_config_file_path(),
                                   skip_perm_errors=skip_perm_errors)

生成一个字典kwargs ;该字典稍后会作为参数传递给执行函数
以 salt ‘*‘ test.ping 为例

kwargs = {
‘tgt‘: ‘*‘, 
‘show_timeout‘: True,
‘delimiter‘: ‘:‘,
‘expr_form‘: ‘glob‘,
‘timeout‘: 5, ‘arg‘: [],
‘fun‘: ‘test.ping‘,
‘show_jid‘: False
    }

执行:
local.cmd_cli(**kwargs)
在看cmd_cli方法执行内容前,需看local实例具体做的那些事情

3.local = salt.client.get_local_client(self.get_config_file_path(),skip_perm_errors=skip_perm_errors)

执行内容:

local = salt.client.get_local_client(‘/etc/salt/master‘,False)

salt.client.get_local_client 是一个函数,该函数返回LocalClient()实例

4.LocalClient 类实例化时

时间: 2024-10-10 07:29:51

salt 源码之 执行流程的相关文章

Volley源码(2):执行网络请求的流程

上一篇(http://blog.csdn.net/szxgg/article/details/51345859)讲述了当我们调用Volley.newRequest()时,Volley内部这个类做了什么,其实Volley这个类就做了一件事情,就是实例化了RequesQueue,这也符合设计模式中的单一职责,其实主要的处理都在其他类中,有三个类最重要,HttpStack/Network/RequestQueue,之后会讲解这些类的关系及作用,那首先还是结合我们使用Volley时的情形来看看源码内部执

boost.asio源码剖析(三) ---- 流程分析

* 常见流程分析之一(Tcp异步连接) 我们用一个简单的demo分析Tcp异步连接的流程: 1 #include <iostream> 2 #include <boost/asio.hpp> 3 4 // 异步连接回调函数 5 void on_connect(boost::system::error_code ec) 6 { 7 if (ec) // 连接失败, 输出错误码 8 std::cout << "async connect error:"

spring boot 源码解析 启动流程

spring boot 源码解析 启动流程 在面试过程中经常被问到过spring boot的启动流程,今天就翻一下源码整体看一下: 首先,新建一个启动类,可以看到是首先调用的SpringApplication的静态方法run @SpringBootApplication public class SourceReadApplillcation { public static void main(String[] args) { SpringApplication.run(SourceReadAp

Linux编译安装源码包的流程

本文参考:http://www.linuxfromscratch.org/lfs/view/7.10-rc1/chapter05/generalinstructions.html 流程: 1.  下载并解压源码包2.  运行:configure3.  编译:make4.  安装:make install 编译时需要注意一个原则:不要在解压的包中直接执行./configure.make.make install等命令,需要在源码目录下另外新建一个目录,在新建的目录中执行以上命令. 例子:这里以源码

Skynet服务器框架(二) C源码剖析启动流程

引言: 之前我们已经完成了在Linux下配置安装 skynet 的环境,并成功启动了 skynet 服务框架,为了从底层更好地理解整个框架的实现过程,我们有必要剖析一下源码,由于底层的源码都是用C语言写的,lua脚本基本是用来进行业务层开发,所以我们从C源码开始解读框架.打开下载包的 skynet-src 目录,这里是skynet框架的核心C源码,接下来我们就要来解读 skynet_main.c 和 skynet_start.c 这两个与skynet启动相关的C源码. 1.入口函数和初始化: 我

tensorflow源码编译之流程分析

前言: 一般来说,如果安装tensorflow主要目的是为了调试些小程序的话,只要下载相应的包,然后,直接使用pip install tensorflow即可. 但有时我们需要将Tensorflow的功能移植到其它平台,这时就无法直接安装了.需要我们下载相应的Tensorflow源码,自已动手编译了. 正文: Tensorflow功能代码庞大,结构复杂:如何快速了解编译结构,就显示尤为重要了. Tensorflow主体结构: 整个框架以C API为界,分为前端和后端两大部分. 前端:提供编译模型

salt源码安装软件和yum安装软件

上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添加,则无需再次添加 3,服务管理 除了有启动脚本,还要watch配置文件. ? 晚上睡前早上起来多撸几遍基本的软件安装就可以自己写了.下面是源码安装nginx.涉及到基础依赖包安装(yum安装),以及pcre安装(源码安装)和nginx(源码安装) 其中有些坑,调整了老半天才搞好,甚是蛋疼,要注意图

Volley源码之调用流程及各类作用

Volley作为2013年Google公司推出的一款面向android设备的网络开源框架,目前已被广泛的应用,优点是可扩展,缓存,dispatcher等.下面我们就简单根据调用的顺序,先聊聊到底Volley内部的运转流程是怎样的,用到了哪些设计模式,主要类有哪些有什么用以及有什么缺陷. 这一篇首先分析一下Volley内部的流转. 首先,我们在使用Volley时,要先调用 RequestQueue mQueue = Volley.newRequestQueue(this); 这一部是生成了一个Re

Memcached 源码分析--命令流程分析

一.执行命令 首先是启动memcached 自带参数如下: <span style="font-size:18px;">-p <num> 设置TCP端口号(默认设置为: 11211) -U <num> UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -c <num> max simult