How хан we do the post request to maas api using the python-maas-client.
I am getting the details from maas api using the maas-client by the following code.
print maas_access.get(u"networks").read()
print maas_access.get(u"users").read()
But when i try to post в request I am getting the ошибка. code is below
data = {'username':'murali','email':'muralidharan.s@poornam.com','password':'murali','is_superuser': 0}
maas_access.post(u"users/", "new", data)
Traceback (most recent call last):
File "api.py", line 48, in <module>
maas_access.post(u"users/", "new", data)
File "/usr/lib/python2.7/dist-packages/apiclient/maas_client.py", line 250, in post
url, method="POST", headers=headers, data=body)
File "/usr/lib/python2.7/dist-packages/apiclient/maas_client.py", line 116, in dispatch_query
res = urllib2.urlopen(req)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: BAD REQUEST
and if i Используйте
data = {'username':'murali','email':'muralidharan.s@poornam.com','password':'murali','is_superuser': 0}
maas_access.post(u"users/", data)
Traceback (most recent call last):
File "api.py", line 49, in <module>
maas_access.post(u"users/", data)
File "/usr/lib/python2.7/dist-packages/apiclient/maas_client.py", line 248, in post
path, kwargs, as_json=as_json)
File "/usr/lib/python2.7/dist-packages/apiclient/maas_client.py", line 218, in _formulate_change
url += '?' + urlencode([('op', op)])
File "/usr/lib/python2.7/dist-packages/apiclient/utils.py", line 48, in urlencode
for name, value in data)
File "/usr/lib/python2.7/dist-packages/apiclient/utils.py", line 48, in <genexpr>
for name, value in data)
File "/usr/lib/python2.7/dist-packages/apiclient/utils.py", line 45, in <lambda>
string.encode("utf-8") if isinstance(string, unicode) else string)
File "/usr/lib/python2.7/urllib.py", line 1295, in quote_plus
return quote(s, safe)
File "/usr/lib/python2.7/urllib.py", line 1286, in quote
if not s.rstrip(safe):
AttributeError: 'dict' object has no attribute 'rstrip'
Is I am missing some thing or the восходит that i providing is wrong? Please help я
В то время как нет никакой фактической документации для текущей формы apiclient, читая источник для подписи сообщения () метод:
def post(self, path, op, as_json=False, **kwargs):
"""Dispatch POST method `op` on `path`, with the given parameters.
:param as_json: Instead of POSTing the content as multipart/form-data
POST it as application/json
:return: The result of the dispatch_query call on the dispatcher.
"""
, Который предлагает, чтобы любые данные Вы обеспечили потребности, которые будут отправлены как kwargs;как указано ниже:
maas_access.post(u"users/", "new", **data)
существует еще одна проблема с Вашими данными, тем не менее, которые являются, что Вы отправляете целое число как аргумент; вместо этого, отправьте его как строку '0':
data = {'username':'murali', 'email':'muralidharan.s@poornam.com',
'password':'murali', 'is_superuser': '0'}
maas_access.post(u"users/", "new", **data)
Наконец, обратите внимание, что, что API небезопасен, поскольку он предоставляет пароль как простой текст, как обозначено в , документация API .
Видит http://blog.allenap.me/2013/06/workaround-for-uploading-files-to-maas.html для более полного примера использования сообщения клиента () API.
sshKeys = {"key": [keyValue]}
maas_access.post(u"account/prefs/sshkeys/", "new", **sshKeys)
вышеупомянутый код отправит ssh ключ в Маас с помощью API Мааса. Но в случае пользователя это не работает. Все еще получая 400 ошибок