314
313
'install-grub', '--uefi', self.target, '/dev/vdb'],),
315
314
self.mock_subp.call_args_list[0][0])
317
def test_grub_install_uefi_updates_nvram_skips_clear_and_reorder(self):
316
def test_grub_install_uefi_updates_nvram_skips_remove_and_reorder(self):
318
317
self.add_patch('curtin.util.install_packages', 'mock_install')
319
318
self.add_patch('curtin.util.has_pkg_available', 'mock_haspkg')
319
self.add_patch('curtin.util.get_efibootmgr', 'mock_efibootmgr')
320
320
self.mock_is_uefi_bootable.return_value = True
323
323
'install_devices': ['/dev/vdb'],
324
324
'update_nvram': True,
325
'clear_uefi_loaders': False,
325
'remove_old_uefi_loaders': False,
326
326
'reorder_uefi': False,
329
329
self.subp_output.append(('', ''))
330
330
self.mock_haspkg.return_value = False
331
self.mock_efibootmgr.return_value = {
337
'HD(1,GPT)/File(\\EFI\\ubuntu\\shimx64.efi)'),
331
341
curthooks.setup_grub(cfg, self.target)
332
342
self.assertEquals(
336
346
self.target, '/dev/vdb'],),
337
347
self.mock_subp.call_args_list[0][0])
339
def test_grub_install_uefi_updates_nvram_clears_old_loaders(self):
349
def test_grub_install_uefi_updates_nvram_removes_old_loaders(self):
340
350
self.add_patch('curtin.util.install_packages', 'mock_install')
341
351
self.add_patch('curtin.util.has_pkg_available', 'mock_haspkg')
352
self.add_patch('curtin.util.get_efibootmgr', 'mock_efibootmgr')
342
353
self.mock_is_uefi_bootable.return_value = True
345
356
'install_devices': ['/dev/vdb'],
346
357
'update_nvram': True,
347
'clear_uefi_loaders': True,
358
'remove_old_uefi_loaders': True,
348
359
'reorder_uefi': False,
351
362
self.subp_output.append(('', ''))
352
self.in_chroot_subp_output.append((dedent(
356
BootOrder: 0000,0001,0002
357
Boot0000* ubuntu HD(1,GPT,040f33cd,0x800,0x100000)\
358
/File(\\EFI\\ubuntu\\shimx64.efi)
359
Boot0001* centos HD(1,GPT,040f33cd,0x800,0x100000)\
360
/File(\\EFI\\centos\\shimx64.efi)
361
Boot0002* UEFI:Network Device BBS(131,,0x0)
363
self.mock_efibootmgr.return_value = {
369
'HD(1,GPT)/File(\\EFI\\ubuntu\\shimx64.efi)'),
374
'HD(1,GPT)/File(\\EFI\\centos\\shimx64.efi)'),
379
'HD(1,GPT)/File(\\EFI\\sles\\shimx64.efi)'),
383
self.in_chroot_subp_output.append(('', ''))
363
384
self.in_chroot_subp_output.append(('', ''))
364
385
self.mock_haspkg.return_value = False
365
386
curthooks.setup_grub(cfg, self.target)
366
387
self.assertEquals(
367
(['efibootmgr', '-B', '-b', '0001'],),
368
self.mock_in_chroot_subp.call_args_list[1][0])
388
['efibootmgr', '-B', '-b'],
389
self.mock_in_chroot_subp.call_args_list[0][0][0][:3])
391
['efibootmgr', '-B', '-b'],
392
self.mock_in_chroot_subp.call_args_list[1][0][0][:3])
394
set(['0001', '0002']),
396
self.mock_in_chroot_subp.call_args_list[0][0][0][3],
397
self.mock_in_chroot_subp.call_args_list[1][0][0][3]]))
370
399
def test_grub_install_uefi_updates_nvram_reorders_loaders(self):
371
400
self.add_patch('curtin.util.install_packages', 'mock_install')
372
401
self.add_patch('curtin.util.has_pkg_available', 'mock_haspkg')
402
self.add_patch('curtin.util.get_efibootmgr', 'mock_efibootmgr')
373
403
self.mock_is_uefi_bootable.return_value = True
376
406
'install_devices': ['/dev/vdb'],
377
407
'update_nvram': True,
378
'clear_uefi_loaders': False,
408
'remove_old_uefi_loaders': False,
379
409
'reorder_uefi': True,
382
412
self.subp_output.append(('', ''))
383
self.in_chroot_subp_output.append((dedent(
389
Boot0001* UEFI:Network Device
413
self.mock_efibootmgr.return_value = {
415
'order': ['0000', '0001'],
420
'HD(1,GPT)/File(\\EFI\\ubuntu\\shimx64.efi)'),
423
'name': 'UEFI:Network Device',
424
'path': 'BBS(131,,0x0)',
391
428
self.in_chroot_subp_output.append(('', ''))
392
429
self.mock_haspkg.return_value = False
393
430
curthooks.setup_grub(cfg, self.target)
394
431
self.assertEquals(
395
432
(['efibootmgr', '-o', '0001,0000'],),
396
self.mock_in_chroot_subp.call_args_list[1][0])
433
self.mock_in_chroot_subp.call_args_list[0][0])
399
436
class TestUbuntuCoreHooks(CurthooksBase):