Python 使用Foreman';s API
我想用Python编写一个脚本,在给定两个参数host和hostgroup的情况下,使用Foreman API()更改主机的主机组 cURL命令执行此操作,它如下所示(它可以工作!): 但是现在,我想使用Python脚本来实现它 我使用Pythonrequest库时没有任何问题,直到我必须传递参数时到达零件 我正在关注这些信息,但显然这不起作用,因为这不是Foreman的API希望接收参数的方式 那么,我该如何以Foreman能够理解的方式传递参数呢Python 使用Foreman';s API,python,curl,httprequest,kerberos,theforeman,Python,Curl,Httprequest,Kerberos,Theforeman,我想用Python编写一个脚本,在给定两个参数host和hostgroup的情况下,使用Foreman API()更改主机的主机组 cURL命令执行此操作,它如下所示(它可以工作!): 但是现在,我想使用Python脚本来实现它 我使用Pythonrequest库时没有任何问题,直到我必须传递参数时到达零件 我正在关注这些信息,但显然这不起作用,因为这不是Foreman的API希望接收参数的方式 那么,我该如何以Foreman能够理解的方式传递参数呢 提前感谢您的帮助,我们将不胜感激 确保知道您
提前感谢您的帮助,我们将不胜感激 确保知道您使用的是Foreman API的v1还是v2/若这是您的一个选项,您可能还想看看如何使用Hammer 使用CURL,使用API(使用RHOS)在Foreman上创建新主机的语法如下所示: curl-i-X POST-H“内容类型:应用程序/json”-d“{”主机“:{”操作系统id“:”2“,”r:”10.0.0.20“,”mac“:”52:53:00:1e:69:69“,”域id“:”1“,”傀儡代理id“:”1“,”名称“:”Test1“,”媒体id“:”7“,”体系结构“:”1“,”主机id“,”12}”“--用户youradminuser:youradminpassword 请参阅Foreman api v2 特别是在主机vs主机组上获取vs.POST:您可以像这样迭代现有主机:
curl-X GET-H“Content-Type:application/json”-H“Accept:application/json”-user youradminuser:youradminpassword对不起,我找到了方法,但忘了发布。 下一个代码将实现以下功能:
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())
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())