diff -Nru python-pylxd-2.3.1~alpha1-392-8/debian/changelog python-pylxd-2.3.1~alpha1-393-8/debian/changelog --- python-pylxd-2.3.1~alpha1-392-8/debian/changelog 2021-09-30 20:21:18.000000000 +0000 +++ python-pylxd-2.3.1~alpha1-393-8/debian/changelog 2021-10-08 18:36:09.000000000 +0000 @@ -1,8 +1,8 @@ -python-pylxd (2.3.1~alpha1-392-8-g.bf91f63~ubuntu21.04.1) hirsute; urgency=low +python-pylxd (2.3.1~alpha1-393-8-g.c5db7ad~ubuntu21.04.1) hirsute; urgency=low * Auto build. - -- Launchpad Package Builder Thu, 30 Sep 2021 20:21:18 +0000 + -- Launchpad Package Builder Fri, 08 Oct 2021 18:36:09 +0000 python-pylxd (2.3.1~alpha1-1) unstable; urgency=medium diff -Nru python-pylxd-2.3.1~alpha1-392-8/debian/git-build-recipe.manifest python-pylxd-2.3.1~alpha1-393-8/debian/git-build-recipe.manifest --- python-pylxd-2.3.1~alpha1-392-8/debian/git-build-recipe.manifest 2021-09-30 20:21:18.000000000 +0000 +++ python-pylxd-2.3.1~alpha1-393-8/debian/git-build-recipe.manifest 2021-10-08 18:36:09.000000000 +0000 @@ -1,3 +1,3 @@ -# git-build-recipe format 0.4 deb-version {debupstream}-392-8-g.bf91f63 -lp:~maas-committers/maas/+git/pylxd git-commit:bf91f6330fd1357788e2702a7f9a3e40e0251961 +# git-build-recipe format 0.4 deb-version {debupstream}-393-8-g.c5db7ad +lp:~maas-committers/maas/+git/pylxd git-commit:c5db7add47f4dd02857a3bc9e08d53f2670a6133 nest-part packaging lp:~maas-committers/maas/+git/pylxd-packaging debian debian git-commit:c5c2f8a67f07ebaff4bb10a52415b627915e19bb diff -Nru python-pylxd-2.3.1~alpha1-392-8/pylxd/client.py python-pylxd-2.3.1~alpha1-393-8/pylxd/client.py --- python-pylxd-2.3.1~alpha1-392-8/pylxd/client.py 2021-09-30 20:21:09.000000000 +0000 +++ python-pylxd-2.3.1~alpha1-393-8/pylxd/client.py 2021-10-08 18:35:57.000000000 +0000 @@ -20,6 +20,8 @@ import requests import requests_unixsocket +from cryptography import x509 +from cryptography.hazmat.primitives import hashes from ws4py.client import WebSocketBaseClient from pylxd import exceptions, managers @@ -60,6 +62,16 @@ Lifecycle = "lifecycle" +class LXDSSLAdapter(requests.adapters.HTTPAdapter): + def cert_verify(self, conn, url, verify, cert): + with open(verify, "rb") as fd: + servercert = x509.load_pem_x509_certificate(fd.read()) + fingerprint = servercert.fingerprint(hashes.SHA256()) + + conn.assert_fingerprint = "".join([f"{i:02x}" for i in fingerprint]) + super().cert_verify(conn, url, False, cert) + + class _APINode: """An api node object.""" @@ -77,6 +89,9 @@ self.session.cert = cert self.session.verify = verify + if isinstance(verify, str): + self.session.mount(api_endpoint, LXDSSLAdapter()) + def __getattr__(self, name): """Converts attribute lookup into the next / of an api url.