码迷,mamicode.com
首页 > Windows程序 > 详细

调用saltapi接口实例

时间:2018-07-09 00:33:45      阅读:758      评论:0      收藏:0      [点我收藏+]

标签:定义   pos   rest   session   request   模块   cli   star   实例   

1、编写python脚本请求salt api接口

自定义一个类,首先初始化时候获得token,然后使用token认证去请求相应的json文件。

salt命令在shell中使用方式是salt 客户端 方法 参数(例子:salt ‘client’ cmd.run ‘free -m’)。

这里salt命令方法我们已经封装好了,想使用salt的什么方法就传入对应的客户端、方法、参数即可。

示例:saltapi.py

#定义modules和runner接口

import json
import requests


class SaltServer(object):
def __init__(self):
self.session = requests.session()
self.token = self.getToken() #获取token,如果这里不写的话可以在下面函数调用也一样
self.url = "http://192.168.137.130:8000"

# print(self.session.cookies) #通过resquests模块也可以获取到token,不过需要再执行过滤,这个看具体使用

def getToken(self): #定义获取token的函数
url = "http://192.168.137.130:8000/login"
headers = {"Accept": "application/json"}
data = {
"username": "saltapi",
"password": "saltapi",
"eauth": "pam"
}
res = self.session.post(url=url, headers=headers, data=data)
text = res.text
result = json.loads(text)
token = result.get("return")[0].get("token")
return token

def resBean(self, datas): #定义res接口规范函数,方便下面调用,一般都使用这个规范!
resultBean = dict()
try:
res = self.session.post(url=self.url, data=datas)
text = res.text
data = json.loads(text).get("return")
resultBean[‘code‘] = 0
resultBean[‘message‘] = "success"
resultBean[‘data‘] = data
except Exception as e:
resultBean[‘code‘] = -1
resultBean[‘message‘] = "error"
resultBean[‘data‘] = e
finally:
return resultBean

def runModules(self, minionid, fun, arg=None): #定义module函数,三个参数分别是客户端,函数和参数
# url = "http://192.168.137.130:8000"
data = {
# "X-Auth-Token": self.getToken(), #在上面构造函数里定义了这里就可以不用再写这个参数了
"client": "local", #调用module使用local
"tgt": minionid, #定义minion的id
"fun": fun, #使用的函数
"arg": arg #函数使用的参数
}
return self.resBean(data)


def runRunner(self, fun, arg=None): #定义runner函数,两个参数分别是函数和参数
# url = "http://192.168.137.130:8000"
data = {
# "X-Auth-Token": self.getToken(),
"client": "runner",
"fun": fun,
"arg": arg
}
return self.resBean(data)

安装app的模块(可以定义多个函数,每个函数表示安装的软件,这里只是示例安装nginx)

#调用脚本安装相关软件

import commands

def nginx():
resultBean = dict()
__salt__[‘cp.get_file‘](‘salt://_shell/app/nginx.sh‘, ‘/usr/local/src/installnginx.sh‘) #调用cp模块传送shell脚本到minion端
cmd = ‘sh /usr/local/src/installnginx.sh && systemctl restart nginx‘ #执行minion端的shell脚本
status, output = commands.getstatusoutput(cmd)
if status == 0:
resultBean[‘code‘] = 0
resultBean[‘message‘] = ‘success‘
resultBean[‘data‘] = output
else:
resultBean[‘code‘] = -1
resultBean[‘message‘] = ‘install nginx error‘
resultBean[‘data‘] = output
return resultBean

测试:test.py

 

调用saltapi接口实例

标签:定义   pos   rest   session   request   模块   cli   star   实例   

原文地址:https://www.cnblogs.com/Jweiqing/p/9281861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!