sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #05916
[Merge] ~bjornt/maas:bug-2009805-3.3 into maas:3.3
Björn Tillenius has proposed merging ~bjornt/maas:bug-2009805-3.3 into maas:3.3.
Commit message:
Bug #2009805: machine deploy install_kvm=True fails
exclude discovered IPs when selecting which to use for VM hosts deploys
(cherry picked from commit 91442ef7aecbcd2caf345b8abad579876f5d9448)
Requested reviews:
MAAS Maintainers (maas-maintainers)
Related bugs:
Bug #2009805 in MAAS: "[3.3.1 rc] machine deploy install_kvm=True fails"
https://bugs.launchpad.net/maas/+bug/2009805
For more details, see:
https://code.launchpad.net/~bjornt/maas/+git/maas/+merge/438762
--
Your team MAAS Maintainers is requested to review the proposed merge of ~bjornt/maas:bug-2009805-3.3 into maas:3.3.
diff --git a/src/metadataserver/api_twisted.py b/src/metadataserver/api_twisted.py
index 950b53d..3b26dac 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, StaticIPAddress
+from maasserver.models import Interface, Node
from maasserver.preseed import CURTIN_INSTALL_LOG
from maasserver.secrets import SecretManager
from maasserver.utils.orm import (
@@ -285,12 +285,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 d3aa366..e84c837 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, IPADDRESS_TYPE, NODE_STATUS
from maasserver.models import Event, Pod
from maasserver.models.signals.testing import SignalsDisabled
from maasserver.models.timestampedmodel import now
@@ -1241,6 +1241,42 @@ class TestCreateVMHostForDeployment(MAASServerTestCase):
)
)
+ 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,
+ )
+ secret_manager = SecretManager()
+ secret_manager.set_composite_secret(
+ "deploy-metadata",
+ {
+ "virsh-password": "xyz123",
+ },
+ obj=node,
+ )
+ _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