Merge ~ltrager/maas:lp1916073 into maas:master

Proposed by Lee Trager
Status: Merged
Approved by: Lee Trager
Approved revision: 6db4fd449167829ceb138db329ba645a22f86963
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ltrager/maas:lp1916073
Merge into: maas:master
Diff against target: 68 lines (+31/-2)
2 files modified
src/metadataserver/tests/test_vendor_data.py (+26/-1)
src/metadataserver/vendor_data.py (+5/-1)
Reviewer Review Type Date Requested Status
Lee Trager (community) Approve
MAAS Lander unittests Pending
Review via email: mp+398380@code.launchpad.net

Commit message

LP: #1916073 - Include qemu-efi-aarch64 when install_kvm=True on ARM64

To post a comment you must log in.
Revision history for this message
Lee Trager (ltrager) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/metadataserver/tests/test_vendor_data.py b/src/metadataserver/tests/test_vendor_data.py
2index c99c6f0..3b5e328 100644
3--- a/src/metadataserver/tests/test_vendor_data.py
4+++ b/src/metadataserver/tests/test_vendor_data.py
5@@ -1,4 +1,4 @@
6-# Copyright 2016-2019 Canonical Ltd. This software is licensed under the
7+# Copyright 2016-2021 Canonical Ltd. This software is licensed under the
8 # GNU Affero General Public License version 3 (see the file LICENSE).
9
10 """Tests for `metadataserver.vendor_data`."""
11@@ -296,6 +296,7 @@ class TestGenerateRackControllerConfiguration(MAASServerTestCase):
12 self.assertThat(config, Contains("libvirt-daemon-system"))
13 self.assertThat(config, Contains("ForceCommand"))
14 self.assertThat(config, Contains("libvirt-clients"))
15+ self.assertThat(config, Not(Contains("qemu-efi-aarch64")))
16 # Check that a password was saved for the pod-to-be.
17 virsh_password_meta = NodeMetadata.objects.filter(
18 node=node, key="virsh_password"
19@@ -330,6 +331,30 @@ class TestGenerateRackControllerConfiguration(MAASServerTestCase):
20 config["runcmd"], Contains(["chmod", "+x", "/etc/rc.local"])
21 )
22 self.assertThat(config["runcmd"], Contains(["/etc/rc.local"]))
23+ self.assertThat(config, Not(Contains("qemu-efi-aarch64")))
24+
25+ def test_yields_configuration_when_arm64_kvm(self):
26+ node = factory.make_Node(
27+ status=NODE_STATUS.DEPLOYING,
28+ osystem="ubuntu",
29+ netboot=False,
30+ architecture="arm64/generic",
31+ )
32+ node.install_kvm = True
33+ configuration = get_vendor_data(node, None)
34+ config = str(dict(configuration))
35+ self.assertThat(config, Contains("virsh"))
36+ self.assertThat(config, Contains("ssh_pwauth"))
37+ self.assertThat(config, Contains("rbash"))
38+ self.assertThat(config, Contains("libvirt-daemon-system"))
39+ self.assertThat(config, Contains("ForceCommand"))
40+ self.assertThat(config, Contains("libvirt-clients"))
41+ self.assertThat(config, Contains("qemu-efi-aarch64"))
42+ # Check that a password was saved for the pod-to-be.
43+ virsh_password_meta = NodeMetadata.objects.filter(
44+ node=node, key="virsh_password"
45+ ).first()
46+ self.assertThat(virsh_password_meta.value, HasLength(32))
47
48
49 class TestGenerateEphemeralNetplanLockRemoval(MAASServerTestCase):
50diff --git a/src/metadataserver/vendor_data.py b/src/metadataserver/vendor_data.py
51index e0b5a42..4da5c8c 100644
52--- a/src/metadataserver/vendor_data.py
53+++ b/src/metadataserver/vendor_data.py
54@@ -1,4 +1,4 @@
55-# Copyright 2016-2019 Canonical Ltd. This software is licensed under the
56+# Copyright 2016-2021 Canonical Ltd. This software is licensed under the
57 # GNU Affero General Public License version 3 (see the file LICENSE).
58
59 """vendor-data for cloud-init's use."""
60@@ -247,6 +247,10 @@ def generate_kvm_pod_configuration(node):
61 },
62 ]
63 packages = ["libvirt-daemon-system", "libvirt-clients"]
64+ # libvirt emulates UEFI on ARM64 however qemu-efi-aarch64 is only
65+ # a suggestion on ARM64 so cloud-init doesn't install it.
66+ if node.split_arch()[0] == "arm64":
67+ packages.append("qemu-efi-aarch64")
68 yield "packages", packages
69
70

Subscribers

People subscribed via source and target branches