Merge lp:~mpontillo/maas/fix-curtin-custom-driver-preseed--bug-1667426--2.1 into lp:maas/2.1
- fix-curtin-custom-driver-preseed--bug-1667426--2.1
- Merge into 2.1
Status: | Work in progress |
---|---|
Proposed branch: | lp:~mpontillo/maas/fix-curtin-custom-driver-preseed--bug-1667426--2.1 |
Merge into: | lp:maas/2.1 |
Diff against target: |
121 lines (+67/-2) 3 files modified
contrib/preseeds_v2/curtin_userdata (+16/-2) docs/changelog.rst (+2/-0) src/maasserver/tests/test_preseed.py (+49/-0) |
To merge this branch: | bzr merge lp:~mpontillo/maas/fix-curtin-custom-driver-preseed--bug-1667426--2.1 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mike Pontillo (community) | Approve | ||
Review via email: mp+318179@code.launchpad.net |
Commit message
Merge revision 5756 from trunk.
Fix curtin config rendering for third-party drivers.
Description of the change
MAAS Lander (maas-lander) wrote : | # |
The attempt to merge lp:~mpontillo/maas/fix-curtin-custom-driver-preseed--bug-1667426--2.1 into lp:maas/2.1 failed. Below is the output from the failed tests.
Hit:1 http://
Get:2 http://
Get:3 http://
Get:4 http://
Fetched 306 kB in 0s (757 kB/s)
Reading package lists...
sudo DEBIAN_
--no-
Reading package lists...
Building dependency tree...
Reading state information...
authbind is already the newest version (2.1.1+nmu1).
avahi-utils is already the newest version (0.6.32~
build-essential is already the newest version (12.1ubuntu2).
debhelper is already the newest version (9.20160115ubun
distro-info is already the newest version (0.14build1).
git is already the newest version (1:2.7.4-0ubuntu1).
libjs-angularjs is already the newest version (1.2.28-1ubuntu2).
libjs-jquery is already the newest version (1.11.3+dfsg-4).
libjs-yui3-full is already the newest version (3.5.1-1ubuntu3).
libjs-yui3-min is already the newest version (3.5.1-1ubuntu3).
make is already the newest version (4.1-6).
postgresql is already the newest version (9.5+173).
pxelinux is already the newest version (3:6.03+
python-formencode is already the newest version (1.3.0-0ubuntu5).
python-lxml is already the newest version (3.5.0-1build1).
python-netaddr is already the newest version (0.7.18-1).
python-netifaces is already the newest version (0.10.4-...
MAAS Lander (maas-lander) wrote : | # |
The attempt to merge lp:~mpontillo/maas/fix-curtin-custom-driver-preseed--bug-1667426--2.1 into lp:maas/2.1 failed. Below is the output from the failed tests.
Hit:1 http://
Get:2 http://
Get:3 http://
Get:4 http://
Fetched 306 kB in 0s (667 kB/s)
Reading package lists...
sudo DEBIAN_
--no-
Reading package lists...
Building dependency tree...
Reading state information...
authbind is already the newest version (2.1.1+nmu1).
avahi-utils is already the newest version (0.6.32~
build-essential is already the newest version (12.1ubuntu2).
debhelper is already the newest version (9.20160115ubun
distro-info is already the newest version (0.14build1).
git is already the newest version (1:2.7.4-0ubuntu1).
libjs-angularjs is already the newest version (1.2.28-1ubuntu2).
libjs-jquery is already the newest version (1.11.3+dfsg-4).
libjs-yui3-full is already the newest version (3.5.1-1ubuntu3).
libjs-yui3-min is already the newest version (3.5.1-1ubuntu3).
make is already the newest version (4.1-6).
postgresql is already the newest version (9.5+173).
pxelinux is already the newest version (3:6.03+
python-formencode is already the newest version (1.3.0-0ubuntu5).
python-lxml is already the newest version (3.5.0-1build1).
python-netaddr is already the newest version (0.7.18-1).
python-netifaces is already the newest version (0.10.4-...
Mike Pontillo (mpontillo) wrote : | # |
Hm, at first I thought the 1.9 lander was just being the 1.9 lander again, but it seems that the preseed code has changed significantly enough that these modifications aren't an easy backport.
With a MAAS 2.2 release imminent, that makes this lower priority for 2.1. We'll circle back if the need arises.
Unmerged revisions
- 5591. By Mike Pontillo
-
Update changelog.
- 5590. By Mike Pontillo
-
Merge revision 5756 from trunk.
Fix curtin config rendering for third-party drivers.
Preview Diff
1 | === modified file 'contrib/preseeds_v2/curtin_userdata' | |||
2 | --- contrib/preseeds_v2/curtin_userdata 2016-12-08 13:45:40 +0000 | |||
3 | +++ contrib/preseeds_v2/curtin_userdata 2017-02-24 04:33:23 +0000 | |||
4 | @@ -6,21 +6,35 @@ | |||
5 | 6 | {{endfor}} | 6 | {{endfor}} |
6 | 7 | {{if third_party_drivers and driver}} | 7 | {{if third_party_drivers and driver}} |
7 | 8 | early_commands: | 8 | early_commands: |
9 | 9 | {{py: key_string = ''.join(['\\x%x' % x for x in map(ord, driver['key_binary'])])}} | 9 | {{py: key_string = ''.join(['\\x%x' % x for x in driver['key_binary']])}} |
10 | 10 | {{if driver['key_binary'] and driver['repository'] and driver['package']}} | ||
11 | 10 | driver_00_get_key: /bin/echo -en '{{key_string}}' > /tmp/maas-{{driver['package']}}.gpg | 11 | driver_00_get_key: /bin/echo -en '{{key_string}}' > /tmp/maas-{{driver['package']}}.gpg |
12 | 11 | driver_01_add_key: ["apt-key", "add", "/tmp/maas-{{driver['package']}}.gpg"] | 12 | driver_01_add_key: ["apt-key", "add", "/tmp/maas-{{driver['package']}}.gpg"] |
13 | 13 | {{endif}} | ||
14 | 14 | {{if driver['repository']}} | ||
15 | 12 | driver_02_add: ["add-apt-repository", "-y", "deb {{driver['repository']}} {{node.get_distro_series()}} main"] | 15 | driver_02_add: ["add-apt-repository", "-y", "deb {{driver['repository']}} {{node.get_distro_series()}} main"] |
16 | 16 | {{endif}} | ||
17 | 17 | {{if driver['package']}} | ||
18 | 13 | driver_03_update_install: ["sh", "-c", "apt-get update --quiet && apt-get --assume-yes install {{driver['package']}}"] | 18 | driver_03_update_install: ["sh", "-c", "apt-get update --quiet && apt-get --assume-yes install {{driver['package']}}"] |
20 | 14 | driver_04_load: ["sh", "-c", "depmod && modprobe {{driver['module']}}"] | 19 | {{endif}} |
21 | 20 | {{if driver['module']}} | ||
22 | 21 | driver_04_load: ["sh", "-c", "depmod && modprobe {{driver['module']}} || echo 'Warning: Failed to load module: {{driver['module']}}'"] | ||
23 | 22 | {{endif}} | ||
24 | 15 | {{endif}} | 23 | {{endif}} |
25 | 16 | late_commands: | 24 | late_commands: |
26 | 17 | maas: [wget, '--no-proxy', {{node_disable_pxe_url|escape.json}}, '--post-data', {{node_disable_pxe_data|escape.json}}, '-O', '/dev/null'] | 25 | maas: [wget, '--no-proxy', {{node_disable_pxe_url|escape.json}}, '--post-data', {{node_disable_pxe_data|escape.json}}, '-O', '/dev/null'] |
27 | 18 | {{if third_party_drivers and driver}} | 26 | {{if third_party_drivers and driver}} |
28 | 27 | {{if driver['key_binary'] and driver['repository'] and driver['package']}} | ||
29 | 19 | driver_00_key_get: curtin in-target -- sh -c "/bin/echo -en '{{key_string}}' > /tmp/maas-{{driver['package']}}.gpg" | 28 | driver_00_key_get: curtin in-target -- sh -c "/bin/echo -en '{{key_string}}' > /tmp/maas-{{driver['package']}}.gpg" |
30 | 20 | driver_02_key_add: ["curtin", "in-target", "--", "apt-key", "add", "/tmp/maas-{{driver['package']}}.gpg"] | 29 | driver_02_key_add: ["curtin", "in-target", "--", "apt-key", "add", "/tmp/maas-{{driver['package']}}.gpg"] |
31 | 30 | {{endif}} | ||
32 | 31 | {{if driver['repository']}} | ||
33 | 21 | driver_03_add: ["curtin", "in-target", "--", "add-apt-repository", "-y", "deb {{driver['repository']}} {{node.get_distro_series()}} main"] | 32 | driver_03_add: ["curtin", "in-target", "--", "add-apt-repository", "-y", "deb {{driver['repository']}} {{node.get_distro_series()}} main"] |
34 | 33 | {{endif}} | ||
35 | 22 | driver_04_update_install: ["curtin", "in-target", "--", "apt-get", "update", "--quiet"] | 34 | driver_04_update_install: ["curtin", "in-target", "--", "apt-get", "update", "--quiet"] |
36 | 35 | {{if driver['package']}} | ||
37 | 23 | driver_05_install: ["curtin", "in-target", "--", "apt-get", "-y", "install", "{{driver['package']}}"] | 36 | driver_05_install: ["curtin", "in-target", "--", "apt-get", "-y", "install", "{{driver['package']}}"] |
38 | 37 | {{endif}} | ||
39 | 24 | driver_06_depmod: ["curtin", "in-target", "--", "depmod"] | 38 | driver_06_depmod: ["curtin", "in-target", "--", "depmod"] |
40 | 25 | driver_07_update_initramfs: ["curtin", "in-target", "--", "update-initramfs", "-u"] | 39 | driver_07_update_initramfs: ["curtin", "in-target", "--", "update-initramfs", "-u"] |
41 | 26 | {{endif}} | 40 | {{endif}} |
42 | 27 | 41 | ||
43 | === modified file 'docs/changelog.rst' | |||
44 | --- docs/changelog.rst 2017-02-17 05:59:11 +0000 | |||
45 | +++ docs/changelog.rst 2017-02-24 04:33:23 +0000 | |||
46 | @@ -34,6 +34,8 @@ | |||
47 | 34 | 34 | ||
48 | 35 | LP: #1665459 Fix anonymous auto-enlistment to properly detect rack-facing region IP address | 35 | LP: #1665459 Fix anonymous auto-enlistment to properly detect rack-facing region IP address |
49 | 36 | 36 | ||
50 | 37 | LP: #1667426 Fix curtin config rendering for custom third-party drivers. | ||
51 | 38 | |||
52 | 37 | 39 | ||
53 | 38 | Other notable changes | 40 | Other notable changes |
54 | 39 | --------------------- | 41 | --------------------- |
55 | 40 | 42 | ||
56 | === modified file 'src/maasserver/tests/test_preseed.py' | |||
57 | --- src/maasserver/tests/test_preseed.py 2016-12-13 17:26:28 +0000 | |||
58 | +++ src/maasserver/tests/test_preseed.py 2017-02-24 04:33:23 +0000 | |||
59 | @@ -77,6 +77,7 @@ | |||
60 | 77 | MAASServerTestCase, | 77 | MAASServerTestCase, |
61 | 78 | MAASTransactionServerTestCase, | 78 | MAASTransactionServerTestCase, |
62 | 79 | ) | 79 | ) |
63 | 80 | from maasserver.third_party_drivers import DriversConfig | ||
64 | 80 | from maasserver.utils import absolute_reverse | 81 | from maasserver.utils import absolute_reverse |
65 | 81 | from maasserver.utils.curtin import curtin_supports_webhook_events | 82 | from maasserver.utils.curtin import curtin_supports_webhook_events |
66 | 82 | from maastesting.matchers import ( | 83 | from maastesting.matchers import ( |
67 | @@ -850,6 +851,54 @@ | |||
68 | 850 | self.assertThat(mock_supports_storage, MockCalledOnceWith()) | 851 | self.assertThat(mock_supports_storage, MockCalledOnceWith()) |
69 | 851 | 852 | ||
70 | 852 | 853 | ||
71 | 854 | class TestRenderCurtinUserdataWithThirdPartyDrivers( | ||
72 | 855 | PreseedRPCMixin, BootImageHelperMixin, MAASServerTestCase): | ||
73 | 856 | """Ensures curtin configs for all third-party drivers can be rendered.""" | ||
74 | 857 | |||
75 | 858 | # Try rendering each driver in drivers.yaml. | ||
76 | 859 | scenarios = [ | ||
77 | 860 | (driver['comment'], {'driver': driver}) | ||
78 | 861 | for driver in DriversConfig.load_from_cache()['drivers'] | ||
79 | 862 | ] | ||
80 | 863 | |||
81 | 864 | def test_render_curtin_preseed_with_third_party_driver(self): | ||
82 | 865 | node = factory.make_Node_with_Interface_on_Subnet( | ||
83 | 866 | primary_rack=self.rpc_rack_controller) | ||
84 | 867 | Config.objects.set_config( | ||
85 | 868 | 'enable_third_party_drivers', True) | ||
86 | 869 | self.configure_get_boot_images_for_node(node, 'xinstall') | ||
87 | 870 | get_third_party_driver = self.patch( | ||
88 | 871 | preseed_module, "get_third_party_driver") | ||
89 | 872 | get_third_party_driver.return_value = self.driver | ||
90 | 873 | curtin_config_text = get_curtin_config(node) | ||
91 | 874 | config = yaml.safe_load(curtin_config_text) | ||
92 | 875 | self.assertThat( | ||
93 | 876 | config['early_commands'], Contains('driver_00_get_key')) | ||
94 | 877 | self.assertThat( | ||
95 | 878 | config['early_commands'], Contains('driver_01_add_key')) | ||
96 | 879 | self.assertThat( | ||
97 | 880 | config['early_commands'], Contains('driver_02_add')) | ||
98 | 881 | self.assertThat( | ||
99 | 882 | config['early_commands'], Contains('driver_03_update_install')) | ||
100 | 883 | self.assertThat( | ||
101 | 884 | config['early_commands'], Contains('driver_04_load')) | ||
102 | 885 | self.assertThat( | ||
103 | 886 | config['late_commands'], Contains('driver_00_key_get')) | ||
104 | 887 | self.assertThat( | ||
105 | 888 | config['late_commands'], Contains('driver_02_key_add')) | ||
106 | 889 | self.assertThat( | ||
107 | 890 | config['late_commands'], Contains('driver_03_add')) | ||
108 | 891 | self.assertThat( | ||
109 | 892 | config['late_commands'], Contains('driver_04_update_install')) | ||
110 | 893 | self.assertThat( | ||
111 | 894 | config['late_commands'], Contains('driver_05_install')) | ||
112 | 895 | self.assertThat( | ||
113 | 896 | config['late_commands'], Contains('driver_06_depmod')) | ||
114 | 897 | self.assertThat( | ||
115 | 898 | config['late_commands'], | ||
116 | 899 | Contains('driver_07_update_initramfs')) | ||
117 | 900 | |||
118 | 901 | |||
119 | 853 | class TestGetCurtinUserDataOS( | 902 | class TestGetCurtinUserDataOS( |
120 | 854 | PreseedRPCMixin, BootImageHelperMixin, MAASTransactionServerTestCase): | 903 | PreseedRPCMixin, BootImageHelperMixin, MAASTransactionServerTestCase): |
121 | 855 | """Tests for `get_curtin_userdata` using os specific scenarios.""" | 904 | """Tests for `get_curtin_userdata` using os specific scenarios.""" |
Self-approved backport.