canonical / python-libmaas

Unofficial python client library for MAAS
https://maas.io
Other
62 stars 70 forks source link

maas client does not obey ssl #193

Closed MartinNowack closed 5 years ago

MartinNowack commented 5 years ago

Using the following example based on the one provided by the manual (please pay attention to the httpS )

from maas.client import login
client = login(
    "https://localhost:5240/MAAS/",
    username="my_user", password="my_pass",
)
tmpl = "{0.hostname} {1.name} {1.mac_address}"
for machine in client.machines.list():
    for interface in machine.interfaces:
        print(tmpl.format(machine, interface))

If MAAS is accessible via https only, the client will be able to successfuly connect/login, but subsequent commands will fail as a url without s (http-only) is used.

blakerouse commented 5 years ago

Can you provide the stacktrace that shows the removal of the s in the https?

MartinNowack commented 5 years ago

Sure. Let me know if you need anything else.

>>> client = maas.client.connect(
    "https://192.168.0.2/MAAS/",
    apikey="##replaced",
    insecure=True)

>>> list(client.machines.list())
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "venv/lib/python3.7/site-packages/maas/client/utils/maas_async.py", line 49, in wrapper
    result = eventloop.run_until_complete(result)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 568, in run_until_complete
    return future.result()
  File "venv/lib/python3.7/site-packages/maas/client/viscera/nodes.py", line 46, in read
    data = await cls._handler.read(**params)
  File "venv/lib/python3.7/site-packages/maas/client/bones/__init__.py", line 302, in __call__
    response = await self.bind(**params).call(**data)
  File "venv/lib/python3.7/site-packages/maas/client/bones/__init__.py", line 463, in dispatch
    raise CallError(request, response, content, self)
maas.client.bones.CallError: GET http://192.168.0.2/MAAS/api/2.0/machines/ -> HTTP 404 Not Found (<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"…)
MartinNowack commented 5 years ago

By the way it's the current master of python-libmaas in combination with MAAS 2.4.2 (7034-g2f5deb8b8-0ubuntu1)