Jack Lloyd-Walters has proposed merging 
~lloydwaltersj/maas:backport-2009805-3.2 into maas:3.2.

Commit message:
backport 2009805

Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~lloydwaltersj/maas/+git/maas/+merge/444165
-- 
Your team MAAS Committers is subscribed to branch maas:3.2.
diff --git a/src/metadataserver/api_twisted.py b/src/metadataserver/api_twisted.py
index c065aee..90a2bd4 100644
--- a/src/metadataserver/api_twisted.py
+++ b/src/metadataserver/api_twisted.py
@@ -18,7 +18,7 @@ from twisted.web.server import NOT_DONE_YET
 from maasserver.api.utils import extract_oauth_key_from_auth_header
 from maasserver.enum import NODE_STATUS, NODE_TYPE
 from maasserver.forms.pods import PodForm
-from maasserver.models import Interface, Node, NodeMetadata, StaticIPAddress
+from maasserver.models import Interface, Node, NodeMetadata
 from maasserver.preseed import CURTIN_INSTALL_LOG
 from maasserver.utils.orm import (
     in_transaction,
@@ -283,12 +283,9 @@ def _get_ip_address_for_vmhost(node):
         )
         interface_ids |= new_ids
 
-    ip = (
-        StaticIPAddress.objects.exclude(ip__isnull=True)
-        .filter(interface__in=interface_ids)
-        .values_list("ip", flat=True)
-        .first()
-    )
+    ip = node.ip_addresses(
+        ifaces=Interface.objects.filter(id__in=interface_ids)
+    )[0]
     if ":" in ip:
         ip = f"[{ip}]"
     return ip
diff --git a/src/metadataserver/tests/test_api_twisted.py b/src/metadataserver/tests/test_api_twisted.py
index a649571..d58cc02 100644
--- a/src/metadataserver/tests/test_api_twisted.py
+++ b/src/metadataserver/tests/test_api_twisted.py
@@ -18,7 +18,7 @@ from twisted.internet.defer import inlineCallbacks, succeed
 from twisted.web.server import NOT_DONE_YET
 from twisted.web.test.requesthelper import DummyRequest
 
-from maasserver.enum import INTERFACE_TYPE, NODE_STATUS
+from maasserver.enum import INTERFACE_TYPE, NODE_STATUS, IPADDRESS_TYPE
 from maasserver.models import Event, NodeMetadata, Pod
 from maasserver.models.signals.testing import SignalsDisabled
 from maasserver.models.timestampedmodel import now
@@ -1189,6 +1189,34 @@ class TestCreateVMHostForDeployment(MAASServerTestCase):
         self.assertIsNone(reload_object(virsh_password_meta))
         self.assertIsNone(reload_object(lxd_cert_meta))
 
+    def test_creates_vmhost_prefer_not_discovered_addresses(self):
+        user = factory.make_User()
+        node = factory.make_Node_with_Interface_on_Subnet(
+            owner=user,
+            status=NODE_STATUS.DEPLOYING,
+            agent_name="maas-kvm-pod",
+            install_kvm=True,
+            register_vmhost=True,
+        )
+        factory.make_StaticIPAddress(
+            interface=node.boot_interface,
+            alloc_type=IPADDRESS_TYPE.DISCOVERED,
+        )
+        ip = factory.make_StaticIPAddress(
+            interface=node.boot_interface,
+            alloc_type=IPADDRESS_TYPE.AUTO,
+        )
+        _create_vmhost_for_deployment(node)
+        vmhost = Pod.objects.get(power_type="virsh")
+        self.assertEqual(node.status, NODE_STATUS.DEPLOYED)
+        addr = ip.ip
+        if IPAddress(addr).version == 6:
+            addr = f"[{addr}]"
+        self.assertEqual(
+            vmhost.power_parameters.get("power_address"),
+            f"qemu+ssh://virsh@{addr}/system",
+        )
+
     def test_creates_vmhost_pick_right_interface_address(self):
         user = factory.make_User()
         node = factory.make_Node_with_Interface_on_Subnet(
-- 
Mailing list: https://launchpad.net/~sts-sponsors
Post to     : sts-sponsors@lists.launchpad.net
Unsubscribe : https://launchpad.net/~sts-sponsors
More help   : https://help.launchpad.net/ListHelp

Reply via email to