нулевое значение в JSON не интерпретируется python для API openstack

Я использую REST API OpenStack для программной реализации запуска или остановки сервера.

Ссылка для справки по API: http://api.openstack.org/api-ref.html#ext-os-server-start-stop Для этого требуется словарь на python следующим образом:

dict = {
     os-start:null
    } 

Затем я делаю json.dumps(dict) и отправляю почтовый запрос на общедоступный URL-адрес openstack для модуля nova.

Когда я запускаю эту программу, возникает ошибка неизвестного глобального имени "null". Следовательно, он не работает.

Я хочу знать, чтобы этот запрос на запуск сервера на OpenStack работал, что я должен использовать в качестве значения поля «os-start» в запросе JSON.

Дайте мне знать, если потребуется какая-либо дополнительная информация.

Заранее спасибо.


person Akshay Patil    schedule 29.07.2013    source источник


Ответы (2)


Синглтон Python None преобразуется в JSON null и наоборот. Используйте это вместо этого:

>>> import json
>>> json.dumps({'os-start': None})
'{"os-start": null}'
>>> json.loads('{"os-start": null}')
{u'os-start': None}
person Martijn Pieters    schedule 29.07.2013
comment
Я уверен, что это не дает никаких ошибок, как раньше. Но сервер openstack отвечает кодом ошибки 400 BadRequest, говоря, что такого действия нет: нет. Данные после json.dumps: «{os-start:null}». Итак, почему это не работает? - person Akshay Patil; 29.07.2013
comment
@AkshayPatil: Этого я не знаю. Судя по всему, значение объекта JSON в любом случае игнорируется (только ключ имеет значение). - person Martijn Pieters; 29.07.2013
comment
Content-Type должен быть указан правильно, я обнаружил это сейчас. Content-Type:application/json при выполнении запроса. Теперь это работает. - person Akshay Patil; 29.07.2013

Может немного не по теме, но поскольку вы используете openstack REST API, я также рекомендую взглянуть на libcloud также у него есть драйвер openstack.

Libcloud не только предоставляет унифицированный интерфейс для облака, но и абстрагирует уровень доступа к openstack REST API.

person Larry Cai    schedule 29.07.2013