zoukankan      html  css  js  c++  java
  • salt api

      1 #!/usr/bin/env python
      2 # -*- coding:utf8 -*-
      3 # __author__ = '北方姆Q'
      4 
      5 import requests
      6 import json
      7 from django.conf import settings
      8 from requests.packages.urllib3.exceptions import InsecureRequestWarning
      9 from plugins.duia.singleton import Singleton
     10 
     11 requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
     12 
     13 
     14 class SaltFactory(Singleton):
     15     def __init__(self, url=settings.SALT_URL, username=settings.SALT_USER, password=settings.SALT_USER_PASSWORD):
     16         """
     17 
     18         :param url: 默认api url
     19         :param username: api 用户
     20         :param password: api 用户密码
     21         """
     22         self.url = url
     23         self.username = username
     24         self.password = password
     25         self.header = {"Content-type": "application/json"}
     26         self.login_url = url + "login" if url.endswith('/') else url + "/login"
     27         self.login_data = {'username': self.username, 'password': self.password, 'eauth': 'pam'}
     28         self.token = self.worker(self.login_url, self.login_data)['token']  # 获取该用户的token,便于操作
     29         self.header['X-Auth-Token'] = self.token
     30         self.minions_url = self.url + "minions" if self.url.endswith('/') else self.url + "/minions"
     31 
     32     def worker(self, url, data):
     33         """
     34         所有命令真实执行者,更细节的命令可以通过这个执行
     35         :param url: api下各url
     36         :param data: 需要传入的参数
     37         :return: 命令执行结果,dict
     38         """
     39         data = json.dumps(data)
     40         response = requests.post(url, headers=self.header, data=data, verify=False)
     41         return response.json()['return'][0]
     42 
     43     def get_data_by_jid(self, jid, display=False):
     44         """
     45         获取某个任务id的执行结果
     46         :param jid: 任务id,str
     47         :param display: 结果展示长度,默认精简展示
     48         :return: 命令执行结果,如果任务不存在或者未运行结束为空字典,dict
     49         """
     50         assert isinstance(jid, str)
     51         data = {
     52             'client': 'runner',
     53             'fun': 'jobs.lookup_jid',
     54             'jid': jid
     55         }
     56         ret = self.worker(self.url, data)
     57 
     58         if display is False:
     59             for node_value in ret.values():
     60                 for job_key, job_value in node_value.items():
     61                     node_value[job_key] = job_value['result']
     62         return ret
     63 
     64     def get_data(self, client='local_batch', tgt='*', fun='test.ping', arg=None, tgt_type='glob', batch='100%'):
     65         """
     66         运行一条命令并等待结果
     67         :param client: 连接方式
     68 
     69             * ``local`` - 普通执行
     70             * ``local_batch`` - 分批执行 - Default
     71             * ``local_async`` - 异步执行
     72 
     73         :param tgt: 受控目标
     74         :param fun: 执行模块
     75         :param arg: 运行参数(pillar也写在里面),list
     76 
     77             ['pwd', 'test=True']
     78             ['sleep 5 && touch /root/file || touch /root/test']
     79             ['keepalived.keepalived.', 'test=True', 'saltenv=prod']
     80 
     81         :param tgt_type: 受控目标类型
     82 
     83             * ``glob`` - Bash glob completion - Default
     84             * ``pcre`` - Perl style regular expression
     85             * ``list`` - Python list of hosts
     86             * ``grain`` - Match based on a grain comparison
     87             * ``grain_pcre`` - Grain comparison with a regex
     88             * ``pillar`` - Pillar data comparison
     89             * ``pillar_pcre`` - Pillar data comparison with a regex
     90             * ``nodegroup`` - Match on nodegroup
     91             * ``range`` - Use a Range server for matching
     92             * ``compound`` - Pass a compound match string
     93             * ``ipcidr`` - Match based on Subnet (CIDR notation) or IPv4 address.
     94 
     95         :param batch: 一批的数量,数字或者百分比,str
     96         :return: 命令执行结果,dict
     97         """
     98         data = {
     99             'client': client,
    100             'tgt': tgt,
    101             'fun': fun,
    102             'tgt_type': tgt_type,
    103             'batch': batch
    104         }
    105         if arg:
    106             data['arg'] = arg
    107         ret = self.worker(self.url, data)
    108         return ret
    109 
    110     def get_minions(self):
    111         """
    112         获取所有minions名
    113         :return: 全minions名的generator
    114         """
    115         response = requests.get(self.minions_url, headers=self.header, verify=False)
    116         minions_list = [minion for minion in response.json()['return'][0].keys()]
    117         return minions_list

    前端json解析

     1         function syntaxHighlight(json) {
     2             if (typeof json != 'string') {
     3                 json = JSON.stringify(json, undefined, 2);
     4             }
     5             json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
     6             return json.replace(/("(\u[a-zA-Z0-9]{4}|\[^u]|[^\"])*"(s*:)?|(true|false|null)|-?d+(?:.d*)?(?:[eE][+-]?d+)?)/g, function(match) {
     7                 var cls = 'number';
     8                 if (/^"/.test(match)) {
     9                     if (/:$/.test(match)) {
    10                         cls = 'key';
    11                     } else {
    12                         cls = 'string';
    13                     }
    14                 } else if (/true|false/.test(match)) {
    15                     cls = 'boolean';
    16                 } else if (/null/.test(match)) {
    17                     cls = 'null';
    18                 }
    19                 return '<span class="' + cls + '">' + match + '</span>';
    20             });
    21         }
  • 相关阅读:
    hadoop 动态调整mapred参数
    python 遍历hadoop, 跟指定列表对比 包含列表中值的取出。
    replay的意义
    c++ 异常 warning: 'MEMORY_UNIT_NAME' defined but not used
    c++ 异常 discards qualifiers 丢弃
    c++ 条件变量
    声明
    HibernateSessionFactory建立-使用ThreadLocal
    App Crawler使用教程
    loadrunner生成随机数用于Action参数中
  • 原文地址:https://www.cnblogs.com/bfmq/p/7905044.html
Copyright © 2011-2022 走看看