sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #08974
[Merge] ~lloydwaltersj/maas:backport-2009805-3.2 into maas:3.2
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(
Follow ups