Передача параметров в теле в POST API. Вызов Openstack Nova. - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь остановить работающий экземпляр сервера в 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}'

Было бы здорово, если бы кто-то мог помочь выяснить, как эмулировать вышеуказанный запрос.

ТИА.

...