Hi,
I was trying add machine using maas APIs in python but end up getting 400 Client Error.
The code i used is
from oauthlib.oauth1 import SIGNATURE_PLAINTEXT
from requests_oauthlib import OAuth1Session
from .config import maas_url,maas_apikey
MAAS_HOST = maas_url
CONSUMER_KEY, CONSUMER_TOKEN, SECRET = maas_apikey.split(":")
maas = OAuth1Session(CONSUMER_KEY, resource_owner_key=CONSUMER_TOKEN, resource_owner_secret=SECRET, signature_method=SIGNATURE_PLAINTEXT)
def addMaasNode(data):
node = maas.post(f'{maas_url}/api/2.0/machines/',json=data)
node.raise_for_status()
return node.json()
data = {}
data['hostname']='dummy'
data['architecture']='amd64'
data['mac_addresses']='02:03:04:05:06:07'
data['power_type']='ipmi'
data['power_parameters_param']={'power_user': 'maas', 'power_driver': 'LAN_2_0', 'power_address': '10.219.104.109', 'cipher_suite_id': '3', 'power_boot_type': 'efi', 'privilege_level': 'ADMIN', 'workaround_flags': ['opensesspriv'], 'k_g': '', 'power_pass': 'Odsoqv3hz9r2', 'mac_address': '02:03:04:05:06:07'}
print(addMaasNode(data))
And for the above code i got the following output:
Traceback (most recent call last):
File "/home/netbox/mni/./src/cli_utils.py", line 21, in <module>
print(addMaasNode(data))
File "/home/netbox/mni/src/utils/maas.py", line 61, in addMaasNode
node.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 943, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://10.209.184.36:5240/MAAS//api/2.0/machines/
i was able to create a node when i put power_type as ‘manual’ and removed power_parameters_param.(which is written as ‘power_parameters_{param’ in official maas API documentation) .
Any help is appreciated.
Thanking you in advance for your help.