sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #05059
[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