在POST API调用的主体中传递参数给Openstack Nova

时间:2018-06-28 01:43:39

标签: rest openstack openstack-nova

我正在尝试停止Openstack Nova上正在运行的服务器实例。我正在使用以下API作为参考

https://developer.openstack.org/api-ref/compute/#stop-server-os-stop-action

以下是我的代码段

import openstack.config
self.cloud_region = openstack.config.OpenStackConfig().get_one('adminproject')
self.session = self.cloud_region.get_session_client('compute')

我能够向服务器发出GET请求

response = self.session.get(url)

但是当我尝试发出POST请求时,出现错误。这就是我要尝试的方式

url = "/servers/" + vm_id + "/action
body = {"os-stop":"null"}

reponse = self.session.post(url, {'os-stop' : 'null'})

TypeError: post() takes exactly 2 arguments (3 given)    

我也尝试过

reponse = self.session.post(url, body=body)

这给我一个错误

TypeError: request() got an unexpected keyword argument 'body'

当我通过nova客户端执行并启用调试模式时,这就是我得到的

curl -g -i -X POST http://IP:PORT/v2.1/12bf80bc27cf4fdc87a2ce2cb0619159/servers/93bc82d4-7a3b-4f67-bc6e-dfb2553a57fc/action -H "Accept: application/json" -H "Content-Type: application/json" -H "User-Agent: python-novaclient" -H "X-Auth-Token: {SHA1}447e97116c71efcff1a02f4d7fdf8d76a4490d9d" -d '{"os-stop": null}'

如果有人可以帮助找出如何模仿以上请求,那就太好了。

TIA。

0 个答案:

没有答案