Merge ~cgrabowski/maas:fix_lp1982866 into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 74db2bc212cdca3913eed598be4ebe2d00d709ed
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:fix_lp1982866
Merge into: maas:master
Diff against target: 138 lines (+107/-5)
2 files modified
src/maasserver/rpc/boot.py (+1/-4)
src/maasserver/rpc/tests/test_boot.py (+106/-1)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+430247@code.launchpad.net

Commit message

use BootResource's method for splitting base image to get a default value in get_boot_config_for_machine()

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b fix_lp1982866 lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/708/consoleText
COMMIT: 5a38df19d47f7cb1a9a0c43c37b0f48f3d5d61f8

review: Needs Fixing
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

jenkins: !test

Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b fix_lp1982866 lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/709/consoleText
COMMIT: 5a38df19d47f7cb1a9a0c43c37b0f48f3d5d61f8

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b fix_lp1982866 lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 74db2bc212cdca3913eed598be4ebe2d00d709ed

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/rpc/boot.py b/src/maasserver/rpc/boot.py
2index 2eae1db..0f2636c 100644
3--- a/src/maasserver/rpc/boot.py
4+++ b/src/maasserver/rpc/boot.py
5@@ -232,10 +232,7 @@ def get_boot_config_for_machine(machine, configs, purpose):
6 install_image = None
7 if osystem == "custom":
8 install_image = BootResource.objects.get(name=series)
9- if install_image.base_image is not None:
10- # if the operating system is a custom ubuntu image,
11- # use the base image to install
12- osystem, series = install_image.base_image.split("/")
13+ osystem, series = install_image.split_base_image()
14
15 if install_image is None or osystem != "ubuntu":
16 # Use only the commissioning osystem and series, for operating
17diff --git a/src/maasserver/rpc/tests/test_boot.py b/src/maasserver/rpc/tests/test_boot.py
18index 835777e..858d7bd 100644
19--- a/src/maasserver/rpc/tests/test_boot.py
20+++ b/src/maasserver/rpc/tests/test_boot.py
21@@ -24,7 +24,11 @@ from maasserver.models.timestampedmodel import now
22 from maasserver.node_status import get_node_timeout, MONITORED_STATUSES
23 from maasserver.preseed import compose_enlistment_preseed_url
24 from maasserver.rpc import boot as boot_module
25-from maasserver.rpc.boot import event_log_pxe_request, get_boot_filenames
26+from maasserver.rpc.boot import (
27+ event_log_pxe_request,
28+ get_boot_config_for_machine,
29+ get_boot_filenames,
30+)
31 from maasserver.rpc.boot import get_config as orig_get_config
32 from maasserver.rpc.boot import merge_kparams_with_extra
33 from maasserver.testing.architecture import make_usable_architecture
34@@ -1519,3 +1523,104 @@ class TestGetBootFilenames(MAASServerTestCase):
35 initrd,
36 )
37 self.assertIsNone(boot_dbt)
38+
39+
40+class TestGetBootConfigForMachine(MAASServerTestCase):
41+ def test_get_boot_config_for_machine_builtin_image(self):
42+ machine = factory.make_Machine(
43+ status=NODE_STATUS.DEPLOYING,
44+ osystem="ubuntu",
45+ distro_series="focal",
46+ )
47+ configs = Config.objects.get_configs(
48+ [
49+ "commissioning_osystem",
50+ "commissioning_distro_series",
51+ "enable_third_party_drivers",
52+ "default_min_hwe_kernel",
53+ "default_osystem",
54+ "default_distro_series",
55+ "kernel_opts",
56+ "use_rack_proxy",
57+ "maas_internal_domain",
58+ "remote_syslog",
59+ "maas_syslog_port",
60+ ]
61+ )
62+
63+ osystem, series, config_arch = get_boot_config_for_machine(
64+ machine, configs, "xinstall"
65+ )
66+
67+ self.assertEqual(osystem, "ubuntu")
68+ self.assertEqual(series, "focal")
69+ self.assertEqual(config_arch, "generic")
70+
71+ def test_get_boot_config_for_machine_new_custom_image(self):
72+ arch = make_usable_architecture(self)
73+ boot_resource = factory.make_BootResource(
74+ base_image="ubuntu/jammy", architecture=arch
75+ )
76+ machine = factory.make_Machine(
77+ status=NODE_STATUS.DEPLOYING,
78+ osystem="custom",
79+ distro_series=boot_resource.name,
80+ )
81+ configs = Config.objects.get_configs(
82+ [
83+ "commissioning_osystem",
84+ "commissioning_distro_series",
85+ "enable_third_party_drivers",
86+ "default_min_hwe_kernel",
87+ "default_osystem",
88+ "default_distro_series",
89+ "kernel_opts",
90+ "use_rack_proxy",
91+ "maas_internal_domain",
92+ "remote_syslog",
93+ "maas_syslog_port",
94+ ]
95+ )
96+
97+ osystem, series, config_arch = get_boot_config_for_machine(
98+ machine, configs, "xinstall"
99+ )
100+
101+ self.assertEqual(osystem, "ubuntu")
102+ self.assertEqual(series, "jammy")
103+ self.assertEqual(config_arch, "generic")
104+
105+ def test_get_boot_config_for_machine_legacy_custom_image(self):
106+ arch = make_usable_architecture(self)
107+ boot_resource = factory.make_BootResource(
108+ base_image="", architecture=arch
109+ )
110+ machine = factory.make_Machine(
111+ status=NODE_STATUS.DEPLOYING,
112+ osystem="custom",
113+ distro_series=boot_resource.name,
114+ )
115+ configs = Config.objects.get_configs(
116+ [
117+ "commissioning_osystem",
118+ "commissioning_distro_series",
119+ "enable_third_party_drivers",
120+ "default_min_hwe_kernel",
121+ "default_osystem",
122+ "default_distro_series",
123+ "kernel_opts",
124+ "use_rack_proxy",
125+ "maas_internal_domain",
126+ "remote_syslog",
127+ "maas_syslog_port",
128+ ]
129+ )
130+
131+ osystem, series, config_arch = get_boot_config_for_machine(
132+ machine, configs, "xinstall"
133+ )
134+
135+ # legacy custom images should use the default commissioning image as a base image
136+ self.assertEqual(osystem, configs["commissioning_osystem"])
137+ self.assertEqual(series, configs["commissioning_distro_series"])
138+ self.assertEqual(config_arch, "generic")

Subscribers

People subscribed via source and target branches