30
30
from ironic_python_agent import utils
31
31
32
32
33
+ EFI_RESULT = '' .encode ('utf-16' )
34
+
35
+
33
36
@mock .patch .object (hardware , 'dispatch_to_managers' , autospec = True )
34
37
@mock .patch .object (utils , 'execute' , autospec = True )
35
38
@mock .patch .object (tempfile , 'mkdtemp' , lambda * _ : '/tmp/fake-dir' )
@@ -251,7 +254,7 @@ def test__uefi_bootloader_given_partition(
251
254
252
255
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
253
256
('' , '' ), ('' , '' ),
254
- ('' , '' ), ('' , '' ),
257
+ (EFI_RESULT , '' ), (EFI_RESULT , '' ),
255
258
('' , '' ), ('' , '' )])
256
259
257
260
expected = [mock .call ('efibootmgr' , '--version' ),
@@ -260,7 +263,7 @@ def test__uefi_bootloader_given_partition(
260
263
mock .call ('udevadm' , 'settle' ),
261
264
mock .call ('mount' , self .fake_efi_system_part ,
262
265
self .fake_dir + '/boot/efi' ),
263
- mock .call ('efibootmgr' , '-v' ),
266
+ mock .call ('efibootmgr' , '-v' , binary = True ),
264
267
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
265
268
'-p' , '1' , '-w' ,
266
269
'-L' , 'ironic1' , '-l' ,
@@ -299,7 +302,7 @@ def test__uefi_bootloader_find_partition(
299
302
mock_efi_bl .return_value = ['EFI/BOOT/BOOTX64.EFI' ]
300
303
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
301
304
('' , '' ), ('' , '' ),
302
- ('' , '' ), ('' , '' ),
305
+ (EFI_RESULT , '' ), (EFI_RESULT , '' ),
303
306
('' , '' ), ('' , '' )])
304
307
305
308
expected = [mock .call ('efibootmgr' , '--version' ),
@@ -308,7 +311,7 @@ def test__uefi_bootloader_find_partition(
308
311
mock .call ('udevadm' , 'settle' ),
309
312
mock .call ('mount' , self .fake_efi_system_part ,
310
313
self .fake_dir + '/boot/efi' ),
311
- mock .call ('efibootmgr' , '-v' ),
314
+ mock .call ('efibootmgr' , '-v' , binary = True ),
312
315
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
313
316
'-p' , '1' , '-w' ,
314
317
'-L' , 'ironic1' , '-l' ,
@@ -353,10 +356,11 @@ def test__uefi_bootloader_with_entry_removal(
353
356
Boot0001 ironic2 HD(1,GPT,4f3c6294-bf9b-4208-9808-111111111112)File(\EFI\Boot\BOOTX64.EFI)
354
357
Boot0002 VENDMAGIC FvFile(9f3c6294-bf9b-4208-9808-be45dfc34b51)
355
358
""" # noqa This is a giant literal string for testing.
359
+ stdout_msg = stdout_msg .encode ('utf-16' )
356
360
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
357
361
('' , '' ), ('' , '' ),
358
- (stdout_msg , '' ), ('' , '' ),
359
- ('' , '' ), ('' , '' ),
362
+ (stdout_msg , '' ), (EFI_RESULT , '' ),
363
+ (EFI_RESULT , '' ), (EFI_RESULT , '' ),
360
364
('' , '' ), ('' , '' )])
361
365
362
366
expected = [mock .call ('efibootmgr' , '--version' ),
@@ -365,7 +369,7 @@ def test__uefi_bootloader_with_entry_removal(
365
369
mock .call ('udevadm' , 'settle' ),
366
370
mock .call ('mount' , self .fake_efi_system_part ,
367
371
self .fake_dir + '/boot/efi' ),
368
- mock .call ('efibootmgr' , '-v' ),
372
+ mock .call ('efibootmgr' , '-v' , binary = True ),
369
373
mock .call ('efibootmgr' , '-b' , '0000' , '-B' ),
370
374
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
371
375
'-p' , '1' , '-w' ,
@@ -416,6 +420,7 @@ def test__uefi_bootloader_with_entry_removal_lenovo(
416
420
Boot0003* Network VenHw(1fad3248-0000-7950-2166-a1e506fdb83a,05000000)..GO..NO............U.E.F.I.:. . . .S.L.O.T.2. .(.2.F./.0./.0.). .P.X.E. .I.P.4. . .Q.L.o.g.i.c. .Q.L.4.1.2.6.2. .P.C.I.e. .2.5.G.b. .2.-.P.o.r.t. .S.F.P.2.8. .E.t.h.e.r.n.e.t. .A.d.a.p.t.e.r. .-. .P.X.E........A....................%.4..Z...............................................................Gd-.;.A..MQ..L.P.X.E. .I.P.4. .Q.L.o.g.i.c. .Q.L.4.1.2.6.2. .P.C.I.e. .2.5.G.b. .2.-.P.o.r.t. .S.F.P.2.8. .E.t.h.e.r.n.e.t. .A.d.a.p.t.e.r. .-. .P.X.E.......BO..NO............U.E.F.I.:. . . .S.L.O.T.1. .(.3.0./.0./.0.). .P.X.E. .I.P.4. . .Q.L.o.g.i.c. .Q.L.4.1.2.6.2. .P.C.I.e. .2.5.G.b. .2.-.P.o.r.t. .S.F.P.2.8. .E.t.h.e.r.n.e.t. .A.d.a.p.t.e.r. .-.
417
421
Boot0004* ironic1 HD(1,GPT,55db8d03-c8f6-4a5b-9155-790dddc348fa,0x800,0x64000)/File(\EFI\b oot\shimx64.efi)
418
422
""" # noqa This is a giant literal string for testing.
423
+ stdout_msg = stdout_msg .encode ('utf-16' )
419
424
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
420
425
('' , '' ), ('' , '' ),
421
426
(stdout_msg , '' ), ('' , '' ),
@@ -427,7 +432,7 @@ def test__uefi_bootloader_with_entry_removal_lenovo(
427
432
mock .call ('udevadm' , 'settle' ),
428
433
mock .call ('mount' , self .fake_efi_system_part ,
429
434
self .fake_dir + '/boot/efi' ),
430
- mock .call ('efibootmgr' , '-v' ),
435
+ mock .call ('efibootmgr' , '-v' , binary = True ),
431
436
mock .call ('efibootmgr' , '-b' , '0000' , '-B' ),
432
437
mock .call ('efibootmgr' , '-b' , '0004' , '-B' ),
433
438
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
@@ -470,8 +475,8 @@ def test__add_multi_bootloaders(
470
475
471
476
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
472
477
('' , '' ), ('' , '' ),
473
- ('' , '' ), ('' , '' ),
474
- ('' , '' ), ('' , '' ),
478
+ (EFI_RESULT , '' ), (EFI_RESULT , '' ),
479
+ (EFI_RESULT , '' ), ('' , '' ),
475
480
('' , '' )])
476
481
477
482
expected = [mock .call ('efibootmgr' , '--version' ),
@@ -480,7 +485,7 @@ def test__add_multi_bootloaders(
480
485
mock .call ('udevadm' , 'settle' ),
481
486
mock .call ('mount' , self .fake_efi_system_part ,
482
487
self .fake_dir + '/boot/efi' ),
483
- mock .call ('efibootmgr' , '-v' ),
488
+ mock .call ('efibootmgr' , '-v' , binary = True ),
484
489
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
485
490
'-p' , '1' , '-w' ,
486
491
'-L' , 'ironic1' , '-l' ,
@@ -2379,7 +2384,7 @@ def test__manage_uefi(self, mkdir_mock, mock_utils_efi_part,
2379
2384
mock_efi_bl .return_value = ['EFI/BOOT/BOOTX64.EFI' ]
2380
2385
2381
2386
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
2382
- ('' , '' ), ('' , '' ),
2387
+ ('' , '' ), (b '' , '' ),
2383
2388
('' , '' ), ('' , '' ),
2384
2389
('' , '' )])
2385
2390
@@ -2388,7 +2393,7 @@ def test__manage_uefi(self, mkdir_mock, mock_utils_efi_part,
2388
2393
mock .call ('udevadm' , 'settle' ),
2389
2394
mock .call ('mount' , self .fake_efi_system_part ,
2390
2395
self .fake_dir + '/boot/efi' ),
2391
- mock .call ('efibootmgr' , '-v' ),
2396
+ mock .call ('efibootmgr' , '-v' , binary = True ),
2392
2397
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
2393
2398
'-p' , '1' , '-w' ,
2394
2399
'-L' , 'ironic1' , '-l' ,
@@ -2432,18 +2437,19 @@ def test__manage_uefi_found_csv(self, mkdir_mock, mock_utils_efi_part,
2432
2437
Boot0002: VENDMAGIC FvFile(9f3c6294-bf9b-4208-9808-be45dfc34b51)
2433
2438
""" # noqa This is a giant literal string for testing.
2434
2439
2435
- mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
2436
- ('' , '' ), (dupe_entry , '' ),
2437
- ('' , '' ), ('' , '' ),
2438
- ('' , '' ), ('' , '' ),
2439
- ('' , '' )])
2440
+ mock_execute .side_effect = iter ([
2441
+ ('' , '' ), ('' , '' ),
2442
+ ('' , '' ), (dupe_entry .encode ('utf-16' ), '' ),
2443
+ ('' , '' ), ('' , '' ),
2444
+ ('' , '' ), ('' , '' ),
2445
+ ('' , '' )])
2440
2446
2441
2447
expected = [mock .call ('partx' , '-a' , '/dev/fake' , attempts = 3 ,
2442
2448
delay_on_retry = True ),
2443
2449
mock .call ('udevadm' , 'settle' ),
2444
2450
mock .call ('mount' , self .fake_efi_system_part ,
2445
2451
self .fake_dir + '/boot/efi' ),
2446
- mock .call ('efibootmgr' , '-v' ),
2452
+ mock .call ('efibootmgr' , '-v' , binary = True ),
2447
2453
mock .call ('efibootmgr' , '-b' , '0000' , '-B' ),
2448
2454
mock .call ('efibootmgr' , '-b' , '0001' , '-B' ),
2449
2455
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
@@ -2475,7 +2481,7 @@ def test__manage_uefi_nvme_device(self, mkdir_mock, mock_utils_efi_part,
2475
2481
mock_efi_bl .return_value = ['EFI/BOOT/BOOTX64.EFI' ]
2476
2482
2477
2483
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
2478
- ('' , '' ), ('' , '' ),
2484
+ ('' , '' ), (b '' , '' ),
2479
2485
('' , '' ), ('' , '' ),
2480
2486
('' , '' )])
2481
2487
@@ -2484,7 +2490,7 @@ def test__manage_uefi_nvme_device(self, mkdir_mock, mock_utils_efi_part,
2484
2490
mock .call ('udevadm' , 'settle' ),
2485
2491
mock .call ('mount' , '/dev/fakenvme0p1' ,
2486
2492
self .fake_dir + '/boot/efi' ),
2487
- mock .call ('efibootmgr' , '-v' ),
2493
+ mock .call ('efibootmgr' , '-v' , binary = True ),
2488
2494
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , '/dev/fakenvme0' ,
2489
2495
'-p' , '1' , '-w' ,
2490
2496
'-L' , 'ironic1' , '-l' ,
@@ -2513,7 +2519,7 @@ def test__manage_uefi_wholedisk(
2513
2519
mock_efi_bl .return_value = ['EFI/BOOT/BOOTX64.EFI' ]
2514
2520
2515
2521
mock_execute .side_effect = iter ([('' , '' ), ('' , '' ),
2516
- ('' , '' ), ('' , '' ),
2522
+ ('' , '' ), (b '' , '' ),
2517
2523
('' , '' ), ('' , '' ),
2518
2524
('' , '' )])
2519
2525
@@ -2522,7 +2528,7 @@ def test__manage_uefi_wholedisk(
2522
2528
mock .call ('udevadm' , 'settle' ),
2523
2529
mock .call ('mount' , self .fake_efi_system_part ,
2524
2530
self .fake_dir + '/boot/efi' ),
2525
- mock .call ('efibootmgr' , '-v' ),
2531
+ mock .call ('efibootmgr' , '-v' , binary = True ),
2526
2532
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
2527
2533
'-p' , '1' , '-w' ,
2528
2534
'-L' , 'ironic1' , '-l' ,
@@ -2625,12 +2631,14 @@ def test__run_efibootmgr_no_bootloaders(self, mock_execute, mock_dispatch):
2625
2631
mock_execute .assert_has_calls (expected )
2626
2632
2627
2633
def test__run_efibootmgr (self , mock_execute , mock_dispatch ):
2628
- mock_execute .return_value = ('' , '' )
2634
+ mock_execute .side_effect = [
2635
+ (b'' , '' ),
2636
+ ('' , '' )]
2629
2637
result = image ._run_efibootmgr (['EFI/BOOT/BOOTX64.EFI' ],
2630
2638
self .fake_dev ,
2631
2639
self .fake_efi_system_part ,
2632
2640
self .fake_dir )
2633
- expected = [mock .call ('efibootmgr' , '-v' ),
2641
+ expected = [mock .call ('efibootmgr' , '-v' , binary = True ),
2634
2642
mock .call ('efibootmgr' , '-v' , '-c' , '-d' , self .fake_dev ,
2635
2643
'-p' , self .fake_efi_system_part , '-w' ,
2636
2644
'-L' , 'ironic1' , '-l' ,
0 commit comments