Python3 MAAS API
Еще раз я пытаюсь выяснить, как запросить MAAS с Python...
У меня есть следующее в файле конфигурации...
# /etc/maasinv/maasinv.ini
[maas]
apikey = FbT9S6S9B3U7y38HKZ:NotRealNunyaNunya:randomkeyblahwhatever
url = http://<valid IP>:5240/MAAS/api/2.0/
У меня есть следующее в сценарии..
#!/usr/bin/env python3
from apiclient import maas_client
import configparser
config = configparser.ConfigParser()
config.read('/etc/maasinv/maasinv.ini')
APIKEY = config['maas']['apikey']
MAAS_URL = config['maas']['url']
auth = maas_client.MAASOAuth(*APIKEY.split(":"))
client = maas_client.MAASClient(auth, maas_client.MAASDispatcher(), MAAS_URL)
data = client.get("nodes", op=list").read()
print (data)
Я получаю ответ...
urllib.error.HTTPError: HTTP Error 400: BAD REQUEST
Выполнение приведенного ниже запроса curl дает мне forbidden
который, кажется, говорит мне, что я рядом
curl http://<valid IP>:5240/MAAS/api/2.0/nodes/op=list/
Кто-нибудь заставил это работать или я должен вернуться к использованию subprocess
запустить клиент?
MAAS Version 2.1.3+bzr5573-0ubuntu1 (16.04.1)
1 ответ
Решение
Во-первых, я заметил, что у вас есть опечатка в data = client.get("nodes", op=list").read()
(обратите внимание на "после списка")
Это, однако, может быть опечатка здесь.
Если вы удалите ,op=list
часть, это должно работать.
У меня есть следующее в сценарии, который я запускаю, и он прекрасно работает:nodes=client.get(u"nodes/?hostname="+hostname).read().decode("utf-8")