• urllib2 调用salt restapi


    1获取token

    #_*_coding:utf8_*_
    import urllib2
    import json
    
    def get_token():
        url='http://10.20.32.86:8000/login'
        #http头这个就不介绍了
        headers ={"Content-type":"application/json","Accept": "application/json"}
        #参数
        params=json.dumps(
                  {"eauth":"pam","username":"salt","password":"salt"})
        #这里并不是真的开始访问而是将信息组合起来
        req = urllib2.Request(url,params,headers)
        #这才是正真打开web页面
        respones = urllib2.urlopen(req)
        result=json.loads(respones.read())
        #获取salt token
        token=result['return'][0]['token']
        return token

    2,设置http头携带token就可以了。

    有了这个值就可以做任何事情了

    调用salt模块

    url='http://10.20.32.86:8000'
    #X-Auth-Token: 这个头就是验证头,值就是刚才获取的token,这样就有权访问api了
    headers ={"Content-type":"application/json","Accept": "application/json","X-Auth-Token":get_token()}
    
    #fun 就是模块的名字和方法名字。
    #kwarg 传递给方法的参数
    #剩下的地方就是固定的了
    body=json.dumps({
        "client": "local",
        "fun": "cinders.create_volumes",
        "tgt": "master-minion",
        "kwarg": {
          "provider_name": "test_opss",
          "driver_name":"nova",
          "size":1,
          "name":None,
          "description":None,
          "source_volid":None,
          "volume_type":None,
          "availability_zone":"nova",
          "imageRef":None,
          "source_replica":None,
          "consistencygroup_id":None,
          "multiattach":False,
          "snapshot_id":None
        }
    })
    req = urllib2.Request(url,body,headers)
    respones = urllib2.urlopen(req)
    result=json.loads(respones.read())
    print result
  • 相关阅读:
    二维数组传递参数问题
    常用软件
    mybatis项目采用mybatis-plus开发,报:Invalid bound statement (not found) 异常,详细解决方案
    PowerDesigner一键导出数据库设计表结构
    微信即将有自己的输入法,真的是要保护用户隐私吗?
    字段解析之OopMapBlock(4)
    字段解析(3)
    字段解析之伪共享(2)
    字段解析(1)
    常量池解析(2)
  • 原文地址:https://www.cnblogs.com/menkeyi/p/6020109.html
Copyright © 2020-2023  润新知