Merge ~chad.smith/cloud-init:ubuntu/xenial into cloud-init:ubuntu/xenial
- Git
- lp:~chad.smith/cloud-init
- ubuntu/xenial
- Merge into ubuntu/xenial
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Approved by: | Chad Smith | ||||||||
Approved revision: | d6441b7f42e1d8756d09f47ca4dc3854ad2ad6a9 | ||||||||
Merged at revision: | d6441b7f42e1d8756d09f47ca4dc3854ad2ad6a9 | ||||||||
Proposed branch: | ~chad.smith/cloud-init:ubuntu/xenial | ||||||||
Merge into: | cloud-init:ubuntu/xenial | ||||||||
Diff against target: |
398 lines (+96/-55) 14 files modified
cloudinit/config/cc_resizefs.py (+2/-0) cloudinit/config/cc_users_groups.py (+14/-14) cloudinit/util.py (+9/-1) debian/changelog (+9/-3) doc/examples/cloud-config-user-groups.txt (+12/-12) doc/rtd/topics/datasources/openstack.rst (+2/-2) integration-requirements.txt (+2/-2) tests/cloud_tests/platforms/lxd/instance.py (+1/-1) tests/cloud_tests/testcases/examples/including_user_groups.yaml (+1/-1) tests/cloud_tests/testcases/modules/user_groups.yaml (+1/-1) tests/data/merge_sources/expected7.yaml (+8/-8) tests/data/merge_sources/source7-1.yaml (+5/-5) tests/data/merge_sources/source7-2.yaml (+3/-3) tests/unittests/test_util.py (+27/-2) |
||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Server Team CI bot | continuous-integration | Approve | |
Ryan Harper | Approve | ||
Review via email:
|
Commit message
Sync tip of cloud-init master to get SRU-related zfs fixes from tip into Xenial-proposed.
Description of the change

Server Team CI bot (server-team-bot) wrote : | # |

Ryan Harper (raharper) wrote : | # |
Looks good, only delta is the pocket name:
% git diff raharper/
diff --git a/debian/changelog b/debian/changelog
index bb49b7a..a917a56 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-cloud-init (18.2-3-
+cloud-init (18.2-3-
* debian/
* New upstream snapshot. (LP: #1759406)
@@ -7,7 +7,7 @@ cloud-init (18.2-3-
- cc_resizefs, util: handle no /dev/zfs
- doc: Fix links in OpenStack datasource documentation. [Dominic Schlegel]
- -- Ryan Harper <email address hidden> Tue, 03 Apr 2018 16:10:29 -0500
+ -- Chad Smith <email address hidden> Tue, 03 Apr 2018 14:29:11 -0600
cloud-init (18.2-0ubuntu1~

Ryan Harper (raharper) wrote : | # |
OK, -proposed should be there after discussion in IRC with Chad.

Server Team CI bot (server-team-bot) wrote : | # |
PASSED: Continuous integration, rev:d6441b7f42e
https:/
Executed test runs:
SUCCESS: Checkout
SUCCESS: Unit & Style Tests
SUCCESS: Ubuntu LTS: Build
SUCCESS: Ubuntu LTS: Integration
SUCCESS: MAAS Compatability Testing
IN_PROGRESS: Declarative: Post Actions
Click here to trigger a rebuild:
https:/
Preview Diff
1 | diff --git a/cloudinit/config/cc_resizefs.py b/cloudinit/config/cc_resizefs.py |
2 | index c8e1752..013e69b 100644 |
3 | --- a/cloudinit/config/cc_resizefs.py |
4 | +++ b/cloudinit/config/cc_resizefs.py |
5 | @@ -251,6 +251,8 @@ def handle(name, cfg, _cloud, log, args): |
6 | if fs_type == 'zfs': |
7 | zpool = devpth.split('/')[0] |
8 | devpth = util.get_device_info_from_zpool(zpool) |
9 | + if not devpth: |
10 | + return # could not find device from zpool |
11 | resize_what = zpool |
12 | |
13 | info = "dev=%s mnt_point=%s path=%s" % (devpth, mount_point, resize_what) |
14 | diff --git a/cloudinit/config/cc_users_groups.py b/cloudinit/config/cc_users_groups.py |
15 | index f363000..b215e95 100644 |
16 | --- a/cloudinit/config/cc_users_groups.py |
17 | +++ b/cloudinit/config/cc_users_groups.py |
18 | @@ -34,16 +34,16 @@ config keys for an entry in ``users`` are as follows: |
19 | - ``homedir``: Optional. Home dir for user. Default is ``/home/<username>`` |
20 | - ``inactive``: Optional. Mark user inactive. Default: false |
21 | - ``lock_passwd``: Optional. Disable password login. Default: true |
22 | - - ``no-create-home``: Optional. Do not create home directory. Default: |
23 | + - ``no_create_home``: Optional. Do not create home directory. Default: |
24 | false |
25 | - - ``no-log-init``: Optional. Do not initialize lastlog and faillog for |
26 | + - ``no_log_init``: Optional. Do not initialize lastlog and faillog for |
27 | user. Default: false |
28 | - - ``no-user-group``: Optional. Do not create group named after user. |
29 | + - ``no_user_group``: Optional. Do not create group named after user. |
30 | Default: false |
31 | - ``passwd``: Hash of user password |
32 | - - ``primary-group``: Optional. Primary group for user. Default to new group |
33 | + - ``primary_group``: Optional. Primary group for user. Default to new group |
34 | named after user. |
35 | - - ``selinux-user``: Optional. SELinux user for user's login. Default to |
36 | + - ``selinux_user``: Optional. SELinux user for user's login. Default to |
37 | default SELinux user. |
38 | - ``shell``: Optional. The user's login shell. The default is to set no |
39 | shell, which results in a system-specific default being used. |
40 | @@ -51,9 +51,9 @@ config keys for an entry in ``users`` are as follows: |
41 | a Snappy user through ``snap create-user``. If an Ubuntu SSO account is |
42 | associated with the address, username and SSH keys will be requested from |
43 | there. Default: none |
44 | - - ``ssh-authorized-keys``: Optional. List of ssh keys to add to user's |
45 | + - ``ssh_authorized_keys``: Optional. List of ssh keys to add to user's |
46 | authkeys file. Default: none |
47 | - - ``ssh-import-id``: Optional. SSH id to import for user. Default: none |
48 | + - ``ssh_import_id``: Optional. SSH id to import for user. Default: none |
49 | - ``sudo``: Optional. Sudo rule to use, or list of sudo rules to use. |
50 | Default: none. |
51 | - ``system``: Optional. Create user as system user with no home directory. |
52 | @@ -89,18 +89,18 @@ config keys for an entry in ``users`` are as follows: |
53 | homedir: <home directory> |
54 | inactive: <true/false> |
55 | lock_passwd: <true/false> |
56 | - no-create-home: <true/false> |
57 | - no-log-init: <true/false> |
58 | - no-user-group: <true/false> |
59 | + no_create_home: <true/false> |
60 | + no_log_init: <true/false> |
61 | + no_user_group: <true/false> |
62 | passwd: <password> |
63 | - primary-group: <primary group> |
64 | - selinux-user: <selinux username> |
65 | + primary_group: <primary group> |
66 | + selinux_user: <selinux username> |
67 | shell: <shell path> |
68 | snapuser: <email> |
69 | - ssh-authorized-keys: |
70 | + ssh_authorized_keys: |
71 | - <key> |
72 | - <key> |
73 | - ssh-import-id: <id> |
74 | + ssh_import_id: <id> |
75 | sudo: <sudo config> |
76 | system: <true/false> |
77 | uid: <user id> |
78 | diff --git a/cloudinit/util.py b/cloudinit/util.py |
79 | index 0ab2c48..acdc0d8 100644 |
80 | --- a/cloudinit/util.py |
81 | +++ b/cloudinit/util.py |
82 | @@ -2249,7 +2249,15 @@ def get_mount_info_freebsd(path): |
83 | |
84 | |
85 | def get_device_info_from_zpool(zpool): |
86 | - (zpoolstatus, err) = subp(['zpool', 'status', zpool]) |
87 | + # zpool has 10 second timeout waiting for /dev/zfs LP: #1760173 |
88 | + if not os.path.exists('/dev/zfs'): |
89 | + LOG.debug('Cannot get zpool info, no /dev/zfs') |
90 | + return None |
91 | + try: |
92 | + (zpoolstatus, err) = subp(['zpool', 'status', zpool]) |
93 | + except ProcessExecutionError as err: |
94 | + LOG.warning("Unable to get zpool status of %s: %s", zpool, err) |
95 | + return None |
96 | if len(err): |
97 | return None |
98 | r = r'.*(ONLINE).*' |
99 | diff --git a/debian/changelog b/debian/changelog |
100 | index 2872eb9..7a26815 100644 |
101 | --- a/debian/changelog |
102 | +++ b/debian/changelog |
103 | @@ -1,8 +1,14 @@ |
104 | -cloud-init (18.2-0ubuntu1~16.04.2) UNRELEASED; urgency=medium |
105 | +cloud-init (18.2-4-g05926e48-0ubuntu1~16.04.1) xenial-proposed; urgency=medium |
106 | |
107 | * debian/new-upstream-snapshot: Remove script, now maintained elsewhere. |
108 | - |
109 | - -- Scott Moser <smoser@ubuntu.com> Wed, 28 Mar 2018 16:09:50 -0400 |
110 | + * New upstream snapshot. (LP: #1759406) |
111 | + - tests: fix integration tests to support lxd 3.0 release |
112 | + - correct documentation to match correct attribute name usage. |
113 | + [Dominic Schlegel] |
114 | + - cc_resizefs, util: handle no /dev/zfs |
115 | + - doc: Fix links in OpenStack datasource documentation. [Dominic Schlegel] |
116 | + |
117 | + -- Chad Smith <chad.smith@canonical.com> Tue, 03 Apr 2018 17:01:55 -0600 |
118 | |
119 | cloud-init (18.2-0ubuntu1~16.04.1) xenial-proposed; urgency=medium |
120 | |
121 | diff --git a/doc/examples/cloud-config-user-groups.txt b/doc/examples/cloud-config-user-groups.txt |
122 | index 0554d1f..7bca24a 100644 |
123 | --- a/doc/examples/cloud-config-user-groups.txt |
124 | +++ b/doc/examples/cloud-config-user-groups.txt |
125 | @@ -10,20 +10,20 @@ users: |
126 | - default |
127 | - name: foobar |
128 | gecos: Foo B. Bar |
129 | - primary-group: foobar |
130 | + primary_group: foobar |
131 | groups: users |
132 | - selinux-user: staff_u |
133 | + selinux_user: staff_u |
134 | expiredate: 2012-09-01 |
135 | - ssh-import-id: foobar |
136 | + ssh_import_id: foobar |
137 | lock_passwd: false |
138 | passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ |
139 | - name: barfoo |
140 | gecos: Bar B. Foo |
141 | sudo: ALL=(ALL) NOPASSWD:ALL |
142 | groups: users, admin |
143 | - ssh-import-id: None |
144 | + ssh_import_id: None |
145 | lock_passwd: true |
146 | - ssh-authorized-keys: |
147 | + ssh_authorized_keys: |
148 | - <ssh pub key 1> |
149 | - <ssh pub key 2> |
150 | - name: cloudy |
151 | @@ -37,10 +37,10 @@ users: |
152 | # gecos: The user name's real name, i.e. "Bob B. Smith" |
153 | # homedir: Optional. Set to the local path you want to use. Defaults to |
154 | # /home/<username> |
155 | -# primary-group: define the primary group. Defaults to a new group created |
156 | +# primary_group: define the primary group. Defaults to a new group created |
157 | # named after the user. |
158 | # groups: Optional. Additional groups to add the user to. Defaults to none |
159 | -# selinux-user: Optional. The SELinux user for the user's login, such as |
160 | +# selinux_user: Optional. The SELinux user for the user's login, such as |
161 | # "staff_u". When this is omitted the system will select the default |
162 | # SELinux user. |
163 | # lock_passwd: Defaults to true. Lock the password to disable password login |
164 | @@ -66,11 +66,11 @@ users: |
165 | # should use SSH authentication only. |
166 | # |
167 | # You have thus been warned. |
168 | -# no-create-home: When set to true, do not create home directory. |
169 | -# no-user-group: When set to true, do not create a group named after the user. |
170 | -# no-log-init: When set to true, do not initialize lastlog and faillog database. |
171 | -# ssh-import-id: Optional. Import SSH ids |
172 | -# ssh-authorized-keys: Optional. [list] Add keys to user's authorized keys file |
173 | +# no_create_home: When set to true, do not create home directory. |
174 | +# no_user_group: When set to true, do not create a group named after the user. |
175 | +# no_log_init: When set to true, do not initialize lastlog and faillog database. |
176 | +# ssh_import_id: Optional. Import SSH ids |
177 | +# ssh_authorized_keys: Optional. [list] Add keys to user's authorized keys file |
178 | # sudo: Defaults to none. Set to the sudo string you want to use, i.e. |
179 | # ALL=(ALL) NOPASSWD:ALL. To add multiple rules, use the following |
180 | # format. |
181 | diff --git a/doc/rtd/topics/datasources/openstack.rst b/doc/rtd/topics/datasources/openstack.rst |
182 | index 607b70f..43592de 100644 |
183 | --- a/doc/rtd/topics/datasources/openstack.rst |
184 | +++ b/doc/rtd/topics/datasources/openstack.rst |
185 | @@ -5,7 +5,7 @@ OpenStack |
186 | |
187 | This datasource supports reading data from the |
188 | `OpenStack Metadata Service |
189 | -<http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service>`_. |
190 | +<https://docs.openstack.org/nova/latest/admin/networking-nova.html#metadata-service>`_. |
191 | |
192 | Configuration |
193 | ------------- |
194 | @@ -59,6 +59,6 @@ upgrade packages and install ``htop`` on all instances: |
195 | {"cloud-init": "#cloud-config\npackage_upgrade: True\npackages:\n - htop"} |
196 | |
197 | For more general information about how cloud-init handles vendor data, |
198 | -including how it can be disabled by users on instances, see `Vendor Data`_. |
199 | +including how it can be disabled by users on instances, see :doc:`/topics/vendordata`. |
200 | |
201 | .. vi: textwidth=78 |
202 | diff --git a/integration-requirements.txt b/integration-requirements.txt |
203 | index 45baac6..df3a73e 100644 |
204 | --- a/integration-requirements.txt |
205 | +++ b/integration-requirements.txt |
206 | @@ -12,8 +12,8 @@ boto3==1.5.9 |
207 | paramiko==2.4.0 |
208 | |
209 | # lxd backend |
210 | -# 01/10/2018: enables use of lxd as snap support |
211 | -git+https://github.com/lxc/pylxd.git@0722955260a6557e6d2ffde1896bfe0707bbca27 |
212 | +# 04/03/2018: enables use of lxd 3.0 |
213 | +git+https://github.com/lxc/pylxd.git@1a85a12a23401de6e96b1aeaf59ecbff2e88f49d |
214 | |
215 | |
216 | # finds latest image information |
217 | diff --git a/tests/cloud_tests/platforms/lxd/instance.py b/tests/cloud_tests/platforms/lxd/instance.py |
218 | index 0488da5..0d957bc 100644 |
219 | --- a/tests/cloud_tests/platforms/lxd/instance.py |
220 | +++ b/tests/cloud_tests/platforms/lxd/instance.py |
221 | @@ -210,7 +210,7 @@ def _has_proper_console_support(): |
222 | reason = "LXD server does not support console api extension" |
223 | else: |
224 | dver = info.get('environment', {}).get('driver_version', "") |
225 | - if dver.startswith("2.") or dver.startwith("1."): |
226 | + if dver.startswith("2.") or dver.startswith("1."): |
227 | reason = "LXD Driver version not 3.x+ (%s)" % dver |
228 | else: |
229 | try: |
230 | diff --git a/tests/cloud_tests/testcases/examples/including_user_groups.yaml b/tests/cloud_tests/testcases/examples/including_user_groups.yaml |
231 | index 469d03c..77528d9 100644 |
232 | --- a/tests/cloud_tests/testcases/examples/including_user_groups.yaml |
233 | +++ b/tests/cloud_tests/testcases/examples/including_user_groups.yaml |
234 | @@ -16,7 +16,7 @@ cloud_config: | |
235 | - default |
236 | - name: foobar |
237 | gecos: Foo B. Bar |
238 | - primary-group: foobar |
239 | + primary_group: foobar |
240 | groups: users |
241 | expiredate: 2038-01-19 |
242 | lock_passwd: false |
243 | diff --git a/tests/cloud_tests/testcases/modules/user_groups.yaml b/tests/cloud_tests/testcases/modules/user_groups.yaml |
244 | index 22b5d70..675dfb8 100644 |
245 | --- a/tests/cloud_tests/testcases/modules/user_groups.yaml |
246 | +++ b/tests/cloud_tests/testcases/modules/user_groups.yaml |
247 | @@ -15,7 +15,7 @@ cloud_config: | |
248 | - default |
249 | - name: foobar |
250 | gecos: Foo B. Bar |
251 | - primary-group: foobar |
252 | + primary_group: foobar |
253 | groups: users |
254 | expiredate: 2038-01-19 |
255 | lock_passwd: false |
256 | diff --git a/tests/data/merge_sources/expected7.yaml b/tests/data/merge_sources/expected7.yaml |
257 | index 25284f0..d32988e 100644 |
258 | --- a/tests/data/merge_sources/expected7.yaml |
259 | +++ b/tests/data/merge_sources/expected7.yaml |
260 | @@ -4,20 +4,20 @@ users: |
261 | - default |
262 | - name: foobar |
263 | gecos: Foo B. Bar |
264 | - primary-group: foobar |
265 | + primary_group: foobar |
266 | groups: users |
267 | - selinux-user: staff_u |
268 | + selinux_user: staff_u |
269 | expiredate: 2012-09-01 |
270 | - ssh-import-id: foobar |
271 | + ssh_import_id: foobar |
272 | lock-passwd: false |
273 | passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ |
274 | - name: barfoo |
275 | gecos: Bar B. Foo |
276 | sudo: ALL=(ALL) NOPASSWD:ALL |
277 | groups: users, admin |
278 | - ssh-import-id: None |
279 | + ssh_import_id: None |
280 | lock-passwd: true |
281 | - ssh-authorized-keys: |
282 | + ssh_authorized_keys: |
283 | - <ssh pub key 1> |
284 | - <ssh pub key 2> |
285 | - name: cloudy |
286 | @@ -29,10 +29,10 @@ users: |
287 | - sue |
288 | - name: foobar_jr |
289 | gecos: Foo B. Bar Jr |
290 | - primary-group: foobar |
291 | + primary_group: foobar |
292 | groups: users |
293 | - selinux-user: staff_u |
294 | + selinux_user: staff_u |
295 | expiredate: 2012-09-01 |
296 | - ssh-import-id: foobar |
297 | + ssh_import_id: foobar |
298 | lock-passwd: false |
299 | passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ |
300 | diff --git a/tests/data/merge_sources/source7-1.yaml b/tests/data/merge_sources/source7-1.yaml |
301 | index 8fb9b32..6405fc9 100644 |
302 | --- a/tests/data/merge_sources/source7-1.yaml |
303 | +++ b/tests/data/merge_sources/source7-1.yaml |
304 | @@ -4,20 +4,20 @@ users: |
305 | - default |
306 | - name: foobar |
307 | gecos: Foo B. Bar |
308 | - primary-group: foobar |
309 | + primary_group: foobar |
310 | groups: users |
311 | - selinux-user: staff_u |
312 | + selinux_user: staff_u |
313 | expiredate: 2012-09-01 |
314 | - ssh-import-id: foobar |
315 | + ssh_import_id: foobar |
316 | lock-passwd: false |
317 | passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ |
318 | - name: barfoo |
319 | gecos: Bar B. Foo |
320 | sudo: ALL=(ALL) NOPASSWD:ALL |
321 | groups: users, admin |
322 | - ssh-import-id: None |
323 | + ssh_import_id: None |
324 | lock-passwd: true |
325 | - ssh-authorized-keys: |
326 | + ssh_authorized_keys: |
327 | - <ssh pub key 1> |
328 | - <ssh pub key 2> |
329 | - name: cloudy |
330 | diff --git a/tests/data/merge_sources/source7-2.yaml b/tests/data/merge_sources/source7-2.yaml |
331 | index 1e26201..0cd2897 100644 |
332 | --- a/tests/data/merge_sources/source7-2.yaml |
333 | +++ b/tests/data/merge_sources/source7-2.yaml |
334 | @@ -6,11 +6,11 @@ users: |
335 | - sue |
336 | - name: foobar_jr |
337 | gecos: Foo B. Bar Jr |
338 | - primary-group: foobar |
339 | + primary_group: foobar |
340 | groups: users |
341 | - selinux-user: staff_u |
342 | + selinux_user: staff_u |
343 | expiredate: 2012-09-01 |
344 | - ssh-import-id: foobar |
345 | + ssh_import_id: foobar |
346 | lock-passwd: false |
347 | passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/ |
348 | |
349 | diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py |
350 | index 8685b8e..5010190 100644 |
351 | --- a/tests/unittests/test_util.py |
352 | +++ b/tests/unittests/test_util.py |
353 | @@ -366,8 +366,11 @@ class TestMountinfoParsing(helpers.ResourceUsingTestCase): |
354 | expected = ('none', 'tmpfs', '/run/lock') |
355 | self.assertEqual(expected, util.parse_mount_info('/run/lock', lines)) |
356 | |
357 | + @mock.patch('cloudinit.util.os') |
358 | @mock.patch('cloudinit.util.subp') |
359 | - def test_get_device_info_from_zpool(self, zpool_output): |
360 | + def test_get_device_info_from_zpool(self, zpool_output, m_os): |
361 | + # mock /dev/zfs exists |
362 | + m_os.path.exists.return_value = True |
363 | # mock subp command from util.get_mount_info_fs_on_zpool |
364 | zpool_output.return_value = ( |
365 | self.readResource('zpool_status_simple.txt'), '' |
366 | @@ -376,9 +379,31 @@ class TestMountinfoParsing(helpers.ResourceUsingTestCase): |
367 | ret = util.get_device_info_from_zpool('vmzroot') |
368 | self.assertEqual('gpt/system', ret) |
369 | self.assertIsNotNone(ret) |
370 | + m_os.path.exists.assert_called_with('/dev/zfs') |
371 | |
372 | + @mock.patch('cloudinit.util.os') |
373 | + def test_get_device_info_from_zpool_no_dev_zfs(self, m_os): |
374 | + # mock /dev/zfs missing |
375 | + m_os.path.exists.return_value = False |
376 | + # save function return values and do asserts |
377 | + ret = util.get_device_info_from_zpool('vmzroot') |
378 | + self.assertIsNone(ret) |
379 | + |
380 | + @mock.patch('cloudinit.util.os') |
381 | + @mock.patch('cloudinit.util.subp') |
382 | + def test_get_device_info_from_zpool_handles_no_zpool(self, m_sub, m_os): |
383 | + """Handle case where there is no zpool command""" |
384 | + # mock /dev/zfs exists |
385 | + m_os.path.exists.return_value = True |
386 | + m_sub.side_effect = util.ProcessExecutionError("No zpool cmd") |
387 | + ret = util.get_device_info_from_zpool('vmzroot') |
388 | + self.assertIsNone(ret) |
389 | + |
390 | + @mock.patch('cloudinit.util.os') |
391 | @mock.patch('cloudinit.util.subp') |
392 | - def test_get_device_info_from_zpool_on_error(self, zpool_output): |
393 | + def test_get_device_info_from_zpool_on_error(self, zpool_output, m_os): |
394 | + # mock /dev/zfs exists |
395 | + m_os.path.exists.return_value = True |
396 | # mock subp command from util.get_mount_info_fs_on_zpool |
397 | zpool_output.return_value = ( |
398 | self.readResource('zpool_status_simple.txt'), 'error' |
FAILED: Continuous integration, rev:cfa0a509976 cf8a0db7f54939f 272204579ca3be /jenkins. ubuntu. com/server/ job/cloud- init-ci/ 968/
https:/
Executed test runs:
SUCCESS: Checkout
SUCCESS: Unit & Style Tests
SUCCESS: Ubuntu LTS: Build
FAILED: Ubuntu LTS: Integration
Click here to trigger a rebuild: /jenkins. ubuntu. com/server/ job/cloud- init-ci/ 968/rebuild
https:/