#!/usr/bin/env python
# -*- coding:utf8 -*-
# __author__ = '北方姆Q' import requests
import json
from django.conf import settings
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from plugins.duia.singleton import Singleton requests.packages.urllib3.disable_warnings(InsecureRequestWarning) class SaltFactory(Singleton):
def __init__(self, url=settings.SALT_URL, username=settings.SALT_USER, password=settings.SALT_USER_PASSWORD):
""" :param url: 默认api url
:param username: api 用户
:param password: api 用户密码
"""
self.url = url
self.username = username
self.password = password
self.header = {"Content-type": "application/json"}
self.login_url = url + "login" if url.endswith('/') else url + "/login"
self.login_data = {'username': self.username, 'password': self.password, 'eauth': 'pam'}
self.token = self.worker(self.login_url, self.login_data)['token'] # 获取该用户的token,便于操作
self.header['X-Auth-Token'] = self.token
self.minions_url = self.url + "minions" if self.url.endswith('/') else self.url + "/minions" def worker(self, url, data):
"""
所有命令真实执行者,更细节的命令可以通过这个执行
:param url: api下各url
:param data: 需要传入的参数
:return: 命令执行结果,dict
"""
data = json.dumps(data)
response = requests.post(url, headers=self.header, data=data, verify=False)
return response.json()['return'][0] def get_data_by_jid(self, jid, display=False):
"""
获取某个任务id的执行结果
:param jid: 任务id,str
:param display: 结果展示长度,默认精简展示
:return: 命令执行结果,如果任务不存在或者未运行结束为空字典,dict
"""
assert isinstance(jid, str)
data = {
'client': 'runner',
'fun': 'jobs.lookup_jid',
'jid': jid
}
ret = self.worker(self.url, data) if display is False:
for node_value in ret.values():
for job_key, job_value in node_value.items():
node_value[job_key] = job_value['result']
return ret def get_data(self, client='local_batch', tgt='*', fun='test.ping', arg=None, tgt_type='glob', batch='100%'):
"""
运行一条命令并等待结果
:param client: 连接方式 * ``local`` - 普通执行
* ``local_batch`` - 分批执行 - Default
* ``local_async`` - 异步执行 :param tgt: 受控目标
:param fun: 执行模块
:param arg: 运行参数(pillar也写在里面),list ['pwd', 'test=True']
['sleep 5 && touch /root/file || touch /root/test']
['keepalived.keepalived.', 'test=True', 'saltenv=prod'] :param tgt_type: 受控目标类型 * ``glob`` - Bash glob completion - Default
* ``pcre`` - Perl style regular expression
* ``list`` - Python list of hosts
* ``grain`` - Match based on a grain comparison
* ``grain_pcre`` - Grain comparison with a regex
* ``pillar`` - Pillar data comparison
* ``pillar_pcre`` - Pillar data comparison with a regex
* ``nodegroup`` - Match on nodegroup
* ``range`` - Use a Range server for matching
* ``compound`` - Pass a compound match string
* ``ipcidr`` - Match based on Subnet (CIDR notation) or IPv4 address. :param batch: 一批的数量,数字或者百分比,str
:return: 命令执行结果,dict
"""
data = {
'client': client,
'tgt': tgt,
'fun': fun,
'tgt_type': tgt_type,
'batch': batch
}
if arg:
data['arg'] = arg
ret = self.worker(self.url, data)
return ret def get_minions(self):
"""
获取所有minions名
:return: 全minions名的generator
"""
response = requests.get(self.minions_url, headers=self.header, verify=False)
minions_list = [minion for minion in response.json()['return'][0].keys()]
return minions_list

前端json解析

         function syntaxHighlight(json) {
if (typeof json != 'string') {
json = JSON.stringify(json, undefined, 2);
}
json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>';
});
}

salt api的更多相关文章

  1. CentOS 安装及配置Salt api

    安装 # yum -y install salt-api 更改配置 vim /etc/salt/master 把默认的注释掉  我们这边默认配置文件目录是/srv/salt default_inclu ...

  2. 死磕salt系列-salt API 使用

    启用salt-api 服务 这里简单的说明下,SaltStack官方支持三种REST API,分别是rest_cherry; rest_tonado和rest_wsgi, 本文选择使用rest_che ...

  3. Salt 与Salt API配置

    1.安装 [root@localhost yum.repos.d]# cat /etc/yum.repos.d/salt.repo [saltstack-repo] name=SaltStack re ...

  4. 从零开始搭建Salt Web之初探salt-api

    Salt-API入门 在Google搜索栏输入salt-api,会有一些讲述如何使用Salt-API的文章,确实有效,不过都是建立 在将Salt安装在默认目录下的情况下,即通过apt-get inst ...

  5. 死磕salt系列-salt文章目录汇总

    死磕salt系列-salt入门 死磕salt系列-salt配置文件 死磕salt系列-salt grains pillar 配置 死磕salt系列-salt 常用modules 死磕salt系列-sa ...

  6. 死磕salt系列-salt入门

    saltstack简介 SaltStack是一种新型的基础设施管理软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltStack提供了一个动态基础 ...

  7. 运维自动化之salt笔记

    1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:tar ...

  8. 搭建基于Jenkins salt-api的运维工具

    1. 安装salt-master和salt-minion 安装过程不再赘述,请参考http://docs.saltstack.com/en/latest/topics/installation/ind ...

  9. 使用python实现后台系统的JWT认证(转)

    今天的文章介绍一种适用于restful+json的API认证方法,这个方法是基于jwt,并且加入了一些从oauth2.0借鉴的改良. 1. 常见的几种实现认证的方法 首先要明白,认证和鉴权是不同的.认 ...

随机推荐

  1. Cookie学习笔记二:Cookie实例

    今天说说刚刚学到的两个Cookie的最经典应用:自己主动登录和购物车设置 一:自己主动登录 须要两个页面:login.jsp与index.jsp,login.jsp用来输出登录信息,index.jsp ...

  2. POJ 3978(求素数)

    知识点:      1.求素数的test,从2~sqrt(n):           2.假设数据非常多,能够用素数表记录,然后sum=prime[m]-prime[n]求得! ! !! !!! !! ...

  3. Spring延迟加载

    如下内容引用自:http://www.cnblogs.com/wcyBlog/p/3756624.html 1.Spring中lazy-init详解ApplicationContext实现的默认行为就 ...

  4. 再过半小时,你就能明白kafka的工作原理了

    本文在个人技术博客不同步发布,详情可猛戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 为什么需要消息队列 周末无聊刷着手机,某宝网APP突然蹦出来一条消息" ...

  5. 5分钟部署filebeat + ELK 5.1.1

    标题有点噱头,不过网络环境好的情况下也差不多了^_^   1. 首先保证安装了jdk.   elasticsearch, logstash, kibana,filebeat都可以通过yum安装,这里前 ...

  6. 安装openSUSE网卡驱动

    网卡:英特尔 82579LM Gigabit Network Connection 先去英特尔的网站下载驱动 http://downloadcenter.intel.com/SearchResult. ...

  7. tween用户使用指南

    tween.js user guide tween.js用户指南 1.What is a tween? How do they work? Why do you want to use them? 一 ...

  8. Apache/2.4.9启动错误:AH01630: client denied by server configuration

    在升级Yii框架1.11->2.0beta时,PHP升级到5.5.顺带升级Apache2.2.x到2.4.9. 把原有vhost配置移植过来,出现Apache启动错误: AH01630: cli ...

  9. jquery 效果网址分享

     http://www.lanrentuku.com/js/ http://www.baidu.com/link?url=2nuImAliKGCKyDeJ7ln2DR_2if5uKgr-em6a3dx ...

  10. 自定义 spinner

    http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html