Merge ~blake-rouse/maas:grub-http into maas:master

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: a5012d9182c4bf01791c5e5b517863fd71f7e2fa
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~blake-rouse/maas:grub-http
Merge into: maas:master
Diff against target: 108 lines (+23/-13)
5 files modified
src/provisioningserver/boot/__init__.py (+5/-0)
src/provisioningserver/boot/tests/test_uefi_amd64.py (+9/-4)
src/provisioningserver/templates/uefi/config.commissioning.template (+3/-3)
src/provisioningserver/templates/uefi/config.enlist.template (+3/-3)
src/provisioningserver/templates/uefi/config.install.template (+3/-3)
Reviewer Review Type Date Requested Status
Lee Trager (community) Approve
MAAS Lander Approve
Andres Rodriguez (community) Approve
Review via email: mp+364749@code.launchpad.net

Commit message

Load the kernel and initrd using HTTP when booting with UEFI.

Description of the change

This change needs to wait for the SRU of https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1787630 to bionic. Once the SRU is complete and new maas-images are released then this branch can land.

To post a comment you must log in.
Revision history for this message
Andres Rodriguez (andreserl) wrote :

lgtm! Just one comment inline.

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

UNIT TESTS
-b grub-http lp:~blake-rouse/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 2fd6c05d9c4e6a1ab9b36ef382f25aa07f78c98f

review: Approve
Revision history for this message
Blake Rouse (blake-rouse) wrote :

This passed successfully in the CI using grub from disco.

http://10.245.136.4:8080/job/proposed-maas-images-manual/32/console

~blake-rouse/maas:grub-http updated
ad3a00d... by Blake Rouse

Merge the iPXE work from wpk.

dc88c70... by Blake Rouse

Cleanup the iPXE boot method.

0eae91d... by Blake Rouse

Add missing user_class to S390x boot method.

1e7461a... by Blake Rouse

Fix issue with DHCP config generation.

912dc6e... by Blake Rouse

Keep user_class as a string.

80bf3d3... by Blake Rouse

Add missing regex compile.

5098d63... by Blake Rouse

Fix the ipxe.cfg script.

b3c747d... by Blake Rouse

Merge branch 'master' into ipxe-boot

8a7b26b... by Blake Rouse

Use path_prefix_http and path_prefix_force for iPXE.

9cefcda... by Blake Rouse

Fix issues with merge and tests.

c86b63d... by Blake Rouse

Make ipxe.cfg work.

24bb7f4... by Blake Rouse

Fix some DHCP bootloader rendering issues.

aed4dcd... by Blake Rouse

Fix the ipxe template.

99d7a77... by Blake Rouse

Fix the ipxe template.

14d80c7... by Blake Rouse

Fix local boot template.

fbaffaa... by Blake Rouse

Add tests.

24622dd... by Blake Rouse

Add comment to the config.local.template.

25605f3... by Blake Rouse

Merge branch 'master' into grub-http

0748c07... by Blake Rouse

Merge branch 'ipxe-boot' into grub-http

a5012d9... by Blake Rouse

Merge branch 'master' into grub-http

Revision history for this message
Lee Trager (ltrager) wrote :

With the latest from in the public streams this passes CI

http://10.245.136.4:8080/job/maas-git-manual/187

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/boot/__init__.py b/src/provisioningserver/boot/__init__.py
2index 40be47a..d77e5b3 100644
3--- a/src/provisioningserver/boot/__init__.py
4+++ b/src/provisioningserver/boot/__init__.py
5@@ -358,6 +358,10 @@ class BootMethod(metaclass=ABCMeta):
6 return 'http://%s:5248/images/' % (
7 convert_host_to_uri_str(params.fs_host))
8
9+ def fs_efihost(params):
10+ return '(http,%s:5248)/images/' % (
11+ convert_host_to_uri_str(params.fs_host))
12+
13 def image_dir(params):
14 return compose_image_path(
15 params.osystem, params.arch, params.subarch,
16@@ -404,6 +408,7 @@ class BootMethod(metaclass=ABCMeta):
17
18 namespace = {
19 "fs_host": fs_host,
20+ "fs_efihost": fs_efihost,
21 "initrd_path": initrd_path,
22 "kernel_command": kernel_command,
23 "kernel_params": kernel_params,
24diff --git a/src/provisioningserver/boot/tests/test_uefi_amd64.py b/src/provisioningserver/boot/tests/test_uefi_amd64.py
25index 09fdc48..0dee3f4 100644
26--- a/src/provisioningserver/boot/tests/test_uefi_amd64.py
27+++ b/src/provisioningserver/boot/tests/test_uefi_amd64.py
28@@ -32,6 +32,7 @@ from provisioningserver.boot.uefi_amd64 import (
29 from provisioningserver.tests.test_kernel_opts import make_kernel_parameters
30 from provisioningserver.utils import typed
31 from provisioningserver.utils.fs import tempdir
32+from provisioningserver.utils.network import convert_host_to_uri_str
33 from testtools.matchers import (
34 ContainsAll,
35 IsInstance,
36@@ -77,6 +78,8 @@ class TestUEFIAMD64BootMethodRender(MAASTestCase):
37 # correctly rendered.
38 method = UEFIAMD64BootMethod()
39 params = make_kernel_parameters(purpose="xinstall")
40+ fs_host = '(http,%s:5248)/images' % (
41+ convert_host_to_uri_str(params.fs_host))
42 output = method.get_reader(backend=None, kernel_params=params)
43 # The output is a BytesReader.
44 self.assertThat(output, IsInstance(BytesReader))
45@@ -96,12 +99,14 @@ class TestUEFIAMD64BootMethodRender(MAASTestCase):
46 r" \[\'MAAS\'\]\\}end_cc.*",
47 re.MULTILINE | re.DOTALL),
48 MatchesRegex(
49- r'.*^\s+linux %s/%s .+?$' % (
50- re.escape(image_dir), params.kernel),
51+ r'.*^\s+linuxefi %s/%s/%s .+?$' % (
52+ re.escape(fs_host), re.escape(image_dir),
53+ params.kernel),
54 re.MULTILINE | re.DOTALL),
55 MatchesRegex(
56- r'.*^\s+initrd %s/%s$' % (
57- re.escape(image_dir), params.initrd),
58+ r'.*^\s+initrdefi %s/%s/%s$' % (
59+ re.escape(fs_host), re.escape(image_dir),
60+ params.initrd),
61 re.MULTILINE | re.DOTALL)))
62
63 def test_get_reader_with_extra_arguments_does_not_affect_output(self):
64diff --git a/src/provisioningserver/templates/uefi/config.commissioning.template b/src/provisioningserver/templates/uefi/config.commissioning.template
65index 5e3f0ed..47dbec9 100644
66--- a/src/provisioningserver/templates/uefi/config.commissioning.template
67+++ b/src/provisioningserver/templates/uefi/config.commissioning.template
68@@ -2,7 +2,7 @@ set default="0"
69 set timeout=0
70
71 menuentry 'Commission' {
72- echo 'Booting under MAAS direction...'
73- linux {{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
74- initrd {{kernel_params | initrd_path }}
75+ echo 'Booting under MAAS direction...'
76+ linuxefi {{kernel_params | fs_efihost}}{{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
77+ initrdefi {{kernel_params | fs_efihost}}{{kernel_params | initrd_path }}
78 }
79diff --git a/src/provisioningserver/templates/uefi/config.enlist.template b/src/provisioningserver/templates/uefi/config.enlist.template
80index 4b496dc..edf800e 100644
81--- a/src/provisioningserver/templates/uefi/config.enlist.template
82+++ b/src/provisioningserver/templates/uefi/config.enlist.template
83@@ -2,7 +2,7 @@ set default="0"
84 set timeout=0
85
86 menuentry 'Enlist' {
87- echo 'Booting under MAAS direction...'
88- linux {{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
89- initrd {{kernel_params | initrd_path }}
90+ echo 'Booting under MAAS direction...'
91+ linuxefi {{kernel_params | fs_efihost}}{{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
92+ initrdefi {{kernel_params | fs_efihost}}{{kernel_params | initrd_path }}
93 }
94diff --git a/src/provisioningserver/templates/uefi/config.install.template b/src/provisioningserver/templates/uefi/config.install.template
95index 381ae22..eea84e0 100644
96--- a/src/provisioningserver/templates/uefi/config.install.template
97+++ b/src/provisioningserver/templates/uefi/config.install.template
98@@ -2,7 +2,7 @@ set default="0"
99 set timeout=0
100
101 menuentry 'Install' {
102- echo 'Booting under MAAS direction...'
103- linux {{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
104- initrd {{kernel_params | initrd_path }}
105+ echo 'Booting under MAAS direction...'
106+ linuxefi {{kernel_params | fs_efihost}}{{kernel_params | kernel_path }} {{kernel_params | kernel_command}} BOOTIF=01-${net_default_mac}
107+ initrdefi {{kernel_params | fs_efihost}}{{kernel_params | initrd_path }}
108 }

Subscribers

People subscribed via source and target branches