sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #04966
[Merge] ~ack/maas:vmhost-select-non-doscivered-ip into maas:master
Alberto Donato has proposed merging ~ack/maas:vmhost-select-non-doscivered-ip into maas:master.
Commit message:
exclude discovered IPs when selecting which to use for VM hosts deploys
Requested reviews:
MAAS Maintainers (maas-maintainers)
For more details, see:
https://code.launchpad.net/~ack/maas/+git/maas/+merge/436764
--
Your team MAAS Maintainers is requested to review the proposed merge of ~ack/maas:vmhost-select-non-doscivered-ip into maas:master.
diff --git a/src/metadataserver/api_twisted.py b/src/metadataserver/api_twisted.py
index 950b53d..e52aa4d 100644
--- a/src/metadataserver/api_twisted.py
+++ b/src/metadataserver/api_twisted.py
@@ -16,7 +16,7 @@ from twisted.web.resource import Resource
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.enum import IPADDRESS_TYPE, NODE_STATUS, NODE_TYPE
from maasserver.forms.pods import PodForm
from maasserver.models import Interface, Node, StaticIPAddress
from maasserver.preseed import CURTIN_INSTALL_LOG
@@ -287,6 +287,7 @@ def _get_ip_address_for_vmhost(node):
ip = (
StaticIPAddress.objects.exclude(ip__isnull=True)
+ .exclude(alloc_type=IPADDRESS_TYPE.DISCOVERED)
.filter(interface__in=interface_ids)
.values_list("ip", flat=True)
.first()
diff --git a/src/metadataserver/tests/test_api_twisted.py b/src/metadataserver/tests/test_api_twisted.py
index d3aa366..3fef142 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_pick_right_address_with_discovered(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