使用 Foreman 的 API 更新主机的 Python 脚本



我想用Python写一个脚本,给出两个参数,host &;使用Foreman API (http://theforeman.org/api/apidoc/v1/hosts/update.html)更改主机的主机组。

cURL命令,它是这样做的(它工作!):

curl -s -H "Accept:application/json" -X PUT --insecure --negotiate -u : -d "host[hostgroup_id]=ZZZZZ" https://foreman.mydomain.com:443/api/hosts/XXXX

但是现在,我想用一个Python脚本来做。

我使用Python 请求库没有问题,直到我到达我必须传递参数的部分。

我正在跟踪此信息http://docs.python-requests.org/en/latest/user/quickstart/#passing-parameters-in-urls,但显然这不起作用,因为这不是Foreman的API期望接收参数的方式。

那么,我该如何以Foreman能理解的方式传递参数呢?

提前感谢任何帮助将不胜感激!

对不起,我找到了这样做的方法,但我忘了发布它。下一段代码就可以了:

def updateHost(host_id, new_hostgroup_id):
    url = "https://foreman.mydomain.com:443/api/hosts/" + host_id
    payload = {'host[hostgroup_id]': new_hostgroup_id}
    headers = {'Accept': 'application/json'}
    r = requests.put(url, data=payload, headers=headers, verify=False, uth=HTTPKerberosAuth())
    if (r.status_code != requests.codes.ok):
        raise BadStatusCodeRequest("HTTP Request status code error: " + r.raise_for_status())

确保知道你使用的是v1还是v2的foreman API/你也可能想看看使用Hammer,如果这是一个选项。

使用CURL,使用API(使用RHOS)在Foreman上创建新主机的语法如下:

curl - i - x发布帖子- h - d"application/json - type:{"主机":{"operatingsystem_id ","2 ","r: "10.0.0.20 ","mac ","52:53:00:1e: 69:69 ","domain_id ":"1 ","puppet_proxy_id ":"1 ","名字 ": " testhost1 ","medium_id ": " 7 ","architecture_id ":"1 ","ptable_id ": " 12 "}}"——用户youradminuser: youradminpassword http://yourhostname.openhealthmodel.com/api/hosts

参见theForeman api v2

特别是在HOST和HOSTGROUP上的GET和POST:你可以像这样迭代你现有的主机:

curl -X GET -H "Content-Type:application/json" -H "Accept: application/json"——user youradminuser:youradminpassword http://yourhostname.openhealthmodel.com/api/hosts

相关内容

  • 没有找到相关文章

最新更新