← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~adam-collard/maas:lxd-no-proxy into maas:master

 

Adam Collard has proposed merging ~adam-collard/maas:lxd-no-proxy into maas:master.

Commit message:
Set pylxd session to not trust the environment



Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~adam-collard/maas/+git/maas/+merge/437278
-- 
Your team MAAS Committers is subscribed to branch maas:master.
diff --git a/src/provisioningserver/drivers/pod/lxd.py b/src/provisioningserver/drivers/pod/lxd.py
index 9640c10..0f67883 100644
--- a/src/provisioningserver/drivers/pod/lxd.py
+++ b/src/provisioningserver/drivers/pod/lxd.py
@@ -855,6 +855,8 @@ class LXDPodDriver(PodDriver):
                 cert=cert,
                 verify=False,
             )
+            # Don't inherit proxy environment variables
+            client.api.session.trust_env = False
             if not client.trusted and password:
                 try:
                     client.authenticate(password)
diff --git a/src/provisioningserver/drivers/pod/tests/test_lxd.py b/src/provisioningserver/drivers/pod/tests/test_lxd.py
index 2a69eea..1c02b0c 100644
--- a/src/provisioningserver/drivers/pod/tests/test_lxd.py
+++ b/src/provisioningserver/drivers/pod/tests/test_lxd.py
@@ -12,6 +12,7 @@ from unittest.mock import ANY, MagicMock, Mock, PropertyMock, sentinel
 
 from fixtures import EnvironmentVariable, TempDir
 from pylxd.exceptions import ClientConnectionFailed, LXDAPIException, NotFound
+from requests import Session
 from testtools.testcase import ExpectedException
 from twisted.internet.defer import inlineCallbacks
 
@@ -142,6 +143,7 @@ class FakeClient:
         self.trusted = False
         self._fail_auth = False
         self.host_info = self.fake_lxd.host_info
+        self.api = FakeAPINode()
 
     def authenticate(self, password):
         if self._fail_auth:
@@ -155,6 +157,13 @@ class FakeClient:
         raise AttributeError(name)
 
 
+class FakeAPINode:
+    """A fake pylxd.client._APINode"""
+
+    def __init__(self):
+        self.session = Session()
+
+
 class FakeLXD:
     """A fake LXD server."""
 
@@ -461,6 +470,11 @@ class TestLXDPodDriver(MAASTestCase):
             self.assertIsInstance(client.cert, tuple)
             self.assertFalse(client.verify)
 
+    def test_get_client_should_not_trust_environment(self):
+        context = self.make_context()
+        with self.driver._get_client(None, context) as client:
+            self.assertFalse(client.api.session.trust_env)
+
     def test_get_client_no_certificates_no_password(self):
         context = self.make_context(with_cert=False, with_password=False)
         pod_id = factory.make_name("pod_id")

Follow ups