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