← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~adam-collard/maas:3.3-maas-url-from-region-config into maas:3.3

 

Adam Collard has proposed merging ~adam-collard/maas:3.3-maas-url-from-region-config into maas:3.3.

Commit message:
Use MAAS_URL from RegionConfiguration



Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~adam-collard/maas/+git/maas/+merge/434440
-- 
Your team MAAS Committers is subscribed to branch maas:3.3.
diff --git a/src/maasserver/regiondservices/networks_monitoring.py b/src/maasserver/regiondservices/networks_monitoring.py
index e76a4a8..e1a7293 100644
--- a/src/maasserver/regiondservices/networks_monitoring.py
+++ b/src/maasserver/regiondservices/networks_monitoring.py
@@ -5,6 +5,7 @@
 
 from twisted.internet.defer import inlineCallbacks, returnValue
 
+from maasserver.config import RegionConfiguration
 from maasserver.models.node import RegionController
 from maasserver.utils.orm import transactional
 from maasserver.utils.threads import deferToDatabase
@@ -26,7 +27,8 @@ class RegionNetworksMonitoringService(NetworksMonitoringService):
         """Record the interfaces information."""
         regiond = yield deferToDatabase(self._getRegion)
         credentials = yield regiond.start_refresh()
-        returnValue((None, regiond.system_id, credentials))
+        with RegionConfiguration.open() as config:
+            returnValue((config.maas_url, regiond.system_id, credentials))
 
     def reportNeighbours(self, neighbours):
         """Record the specified list of neighbours."""
diff --git a/src/maasserver/regiondservices/tests/test_networks_monitoring.py b/src/maasserver/regiondservices/tests/test_networks_monitoring.py
index f4aa0a4..8d3cc4b 100644
--- a/src/maasserver/regiondservices/tests/test_networks_monitoring.py
+++ b/src/maasserver/regiondservices/tests/test_networks_monitoring.py
@@ -10,6 +10,7 @@ from twisted.internet.defer import Deferred, inlineCallbacks, returnValue
 from maasserver.regiondservices.networks_monitoring import (
     RegionNetworksMonitoringService,
 )
+from maasserver.testing.config import RegionConfigurationFixture
 from maasserver.testing.factory import factory
 from maasserver.testing.testcase import MAASTransactionServerTestCase
 from maasserver.utils.threads import deferToDatabase
@@ -62,6 +63,8 @@ class TestRegionNetworksMonitoringService(MAASTransactionServerTestCase):
     @wait_for()
     @inlineCallbacks
     def test_get_refresh_details_running(self):
+        example_url = factory.make_simple_http_url()
+        self.useFixture(RegionConfigurationFixture(maas_url=example_url))
         region = yield deferToDatabase(factory.make_RegionController)
         region.owner = yield deferToDatabase(factory.make_admin)
         yield deferToDatabase(region.save)
@@ -83,4 +86,6 @@ class TestRegionNetworksMonitoringService(MAASTransactionServerTestCase):
             "token_key": region_token.key,
             "token_secret": region_token.secret,
         }
-        self.assertEqual((None, region.system_id, region_credentials), details)
+        self.assertEqual(
+            (example_url, region.system_id, region_credentials), details
+        )
diff --git a/src/provisioningserver/refresh/__init__.py b/src/provisioningserver/refresh/__init__.py
index 8b737ed..04c19cd 100644
--- a/src/provisioningserver/refresh/__init__.py
+++ b/src/provisioningserver/refresh/__init__.py
@@ -3,7 +3,6 @@
 
 """Functionality to refresh rack controller hardware and networking details."""
 
-import copy
 import os
 from subprocess import DEVNULL, PIPE, Popen, TimeoutExpired
 import tempfile
@@ -99,6 +98,11 @@ def runscripts(
     os.makedirs(out_dir)
     fd, resources_file = tempfile.mkstemp()
     os.close(fd)
+    # derive the base URL from the metadata one
+    parsed_url = urllib.parse.urlparse(url)
+    base_url = urllib.parse.urlunparse(
+        (parsed_url.scheme, parsed_url.netloc, "", "", "", "")
+    )
     for script_name in sorted(scripts.keys()):
         signal_wrapper(
             url,
@@ -117,24 +121,15 @@ def runscripts(
         result_name = f"{script_name}.yaml"
         result_path = os.path.join(out_dir, result_name)
 
-        # derive the base URL for from the metadata one
-        parsed_url = urllib.parse.urlparse(url)
-        base_url = urllib.parse.urlunparse(
-            (parsed_url.scheme, parsed_url.netloc, "", "", "", "")
-        )
-
-        env = copy.deepcopy(os.environ)
-        env.update(
-            {
-                "MAAS_BASE_URL": base_url,
-                "MAAS_RESOURCES_FILE": resources_file,
-                "OUTPUT_COMBINED_PATH": combined_path,
-                "OUTPUT_STDOUT_PATH": stdout_path,
-                "OUTPUT_STDERR_PATH": stderr_path,
-                "RESULT_PATH": result_path,
-                "TMPDIR": tmpdir,
-            }
-        )
+        env = os.environ | {
+            "MAAS_BASE_URL": base_url,
+            "MAAS_RESOURCES_FILE": resources_file,
+            "OUTPUT_COMBINED_PATH": combined_path,
+            "OUTPUT_STDOUT_PATH": stdout_path,
+            "OUTPUT_STDERR_PATH": stderr_path,
+            "RESULT_PATH": result_path,
+            "TMPDIR": tmpdir,
+        }
         timeout = 60
         command = [script_path] if in_snap else ["sudo", "-E", script_path]
         try:

Follow ups