Skip to content

Commit b49d78c

Browse files
mihirpat1yxieca
authored andcommitted
Change default CDB run mode to non-hitless (#2817)
* Change default CDB run mode to non-hitless Signed-off-by: Mihir Patel <[email protected]> * Improved diff coverage --------- Signed-off-by: Mihir Patel <[email protected]>
1 parent 2e9c99e commit b49d78c

File tree

2 files changed

+70
-54
lines changed

2 files changed

+70
-54
lines changed

sfputil/main.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ def hexdump(indent, data, mem_address):
813813
result += '{} '.format(byte_string)
814814
result += '|{}|'.format(ascii_string)
815815
ascii_string = ""
816-
elif mem_address % 16 == 7:
816+
elif mem_address % 16 == 8:
817817
result += ' {} '.format(byte_string)
818818
else:
819819
result += '{} '.format(byte_string)
@@ -1388,13 +1388,13 @@ def download_firmware(port_name, filepath):
13881388
# 'run' subcommand
13891389
@firmware.command()
13901390
@click.argument('port_name', required=True, default=None)
1391-
@click.option('--mode', default="1", type=click.Choice(["0", "1", "2", "3"]), show_default=True,
1391+
@click.option('--mode', default="0", type=click.Choice(["0", "1", "2", "3"]), show_default=True,
13921392
help="0 = Non-hitless Reset to Inactive Image\n \
13931393
1 = Hitless Reset to Inactive Image (Default)\n \
13941394
2 = Attempt non-hitless Reset to Running Image\n \
13951395
3 = Attempt Hitless Reset to Running Image\n")
13961396
def run(port_name, mode):
1397-
"""Run the firmware with default mode=1"""
1397+
"""Run the firmware with default mode=0"""
13981398

13991399
if is_port_type_rj45(port_name):
14001400
click.echo("This functionality is not applicable for RJ45 port {}.".format(port_name))
@@ -1458,12 +1458,13 @@ def upgrade(port_name, filepath):
14581458
click.echo("Firmware download complete failed! CDB status = {}".format(status))
14591459
sys.exit(EXIT_FAIL)
14601460

1461-
status = run_firmware(port_name, 1)
1461+
default_mode = 0
1462+
status = run_firmware(port_name, default_mode)
14621463
if status != 1:
1463-
click.echo('Failed to run firmware in mode=1 ! CDB status: {}'.format(status))
1464+
click.echo('Failed to run firmware in mode={} ! CDB status: {}'.format(default_mode, status))
14641465
sys.exit(EXIT_FAIL)
14651466

1466-
click.echo("Firmware run in mode 1 successful")
1467+
click.echo("Firmware run in mode {} successful".format(default_mode))
14671468

14681469
if is_fw_switch_done(port_name) != 1:
14691470
click.echo('Failed to switch firmware images!')

tests/sfputil_test.py

+63-48
Original file line numberDiff line numberDiff line change
@@ -550,24 +550,24 @@ def test_show_eeprom_hexdump_sff8636_page(self, mock_chassis):
550550
upper_page0_bytearray = bytearray([13, 0, 35, 8, 0, 0, 0, 65, 128, 128, 245, 0, 0, 0, 0, 0, 0, 0, 1, 160, 77, 111, 108, 101, 120, 32, 73, 110, 99, 46, 32, 32, 32, 32, 32, 32, 7, 0, 9, 58, 49, 49, 49, 48, 52, 48, 49, 48, 53, 52, 32, 32, 32, 32, 32, 32, 32, 32, 3, 4, 0, 0, 70, 196, 0, 0, 0, 0, 54, 49, 49, 48, 51, 48, 57, 50, 57, 32, 32, 32, 32, 32, 32, 32, 49, 54, 48, 52, 49, 57, 32, 32, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
551551
expected_output = '''EEPROM hexdump for port Ethernet0 page 0h
552552
Lower page 0h
553-
00000000 0d 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
554-
00000010 00 00 00 00 00 00 01 81 00 00 00 00 00 00 00 00 |................|
555-
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
556-
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
557-
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
558-
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
559-
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
560-
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
553+
00000000 0d 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
554+
00000010 00 00 00 00 00 00 01 81 00 00 00 00 00 00 00 00 |................|
555+
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
556+
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
557+
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
558+
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
559+
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
560+
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
561561
562562
Upper page 0h
563-
00000080 0d 00 23 08 00 00 00 41 80 80 f5 00 00 00 00 00 |..#....A........|
564-
00000090 00 00 01 a0 4d 6f 6c 65 78 20 49 6e 63 2e 20 20 |....Molex Inc. |
565-
000000a0 20 20 20 20 07 00 09 3a 31 31 31 30 34 30 31 30 | ...:11104010|
566-
000000b0 35 34 20 20 20 20 20 20 20 20 03 04 00 00 46 c4 |54 ....F.|
567-
000000c0 00 00 00 00 36 31 31 30 33 30 39 32 39 20 20 20 |....611030929 |
568-
000000d0 20 20 20 20 31 36 30 34 31 39 20 20 00 00 00 24 | 160419 ...$|
569-
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
570-
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
563+
00000080 0d 00 23 08 00 00 00 41 80 80 f5 00 00 00 00 00 |..#....A........|
564+
00000090 00 00 01 a0 4d 6f 6c 65 78 20 49 6e 63 2e 20 20 |....Molex Inc. |
565+
000000a0 20 20 20 20 07 00 09 3a 31 31 31 30 34 30 31 30 | ...:11104010|
566+
000000b0 35 34 20 20 20 20 20 20 20 20 03 04 00 00 46 c4 |54 ....F.|
567+
000000c0 00 00 00 00 36 31 31 30 33 30 39 32 39 20 20 20 |....611030929 |
568+
000000d0 20 20 20 20 31 36 30 34 31 39 20 20 00 00 00 24 | 160419 ...$|
569+
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
570+
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
571571
572572
'''
573573
def side_effect(offset, num_bytes):
@@ -594,42 +594,42 @@ def test_show_eeprom_hexdump_sff8472_page(self, mock_chassis):
594594
a2h_upper_bytearray = bytearray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
595595
expected_output = '''EEPROM hexdump for port Ethernet256 page 0h
596596
A0h dump
597-
00000000 03 04 07 10 00 00 00 00 00 00 00 06 67 00 00 00 |............g...|
598-
00000010 08 03 00 1e 46 49 4e 49 53 41 52 20 43 4f 52 50 |....FINISAR CORP|
599-
00000020 2e 20 20 20 00 00 90 65 46 54 4c 58 38 35 37 31 |. ...eFTLX8571|
600-
00000030 44 33 42 43 4c 20 20 20 41 20 20 20 03 52 00 48 |D3BCL A .R.H|
601-
00000040 00 1a 00 00 41 55 4a 30 52 43 4a 20 20 20 20 20 |....AUJ0RCJ |
602-
00000050 20 20 20 20 31 35 31 30 32 39 20 20 68 f0 03 f6 | 151029 h...|
603-
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
604-
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
605-
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
606-
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
607-
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
608-
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
609-
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
610-
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
611-
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
612-
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
597+
00000000 03 04 07 10 00 00 00 00 00 00 00 06 67 00 00 00 |............g...|
598+
00000010 08 03 00 1e 46 49 4e 49 53 41 52 20 43 4f 52 50 |....FINISAR CORP|
599+
00000020 2e 20 20 20 00 00 90 65 46 54 4c 58 38 35 37 31 |. ...eFTLX8571|
600+
00000030 44 33 42 43 4c 20 20 20 41 20 20 20 03 52 00 48 |D3BCL A .R.H|
601+
00000040 00 1a 00 00 41 55 4a 30 52 43 4a 20 20 20 20 20 |....AUJ0RCJ |
602+
00000050 20 20 20 20 31 35 31 30 32 39 20 20 68 f0 03 f6 | 151029 h...|
603+
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
604+
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
605+
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
606+
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
607+
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
608+
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
609+
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
610+
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
611+
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
612+
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
613613
614614
A2h dump (lower 128 bytes)
615-
00000000 4e 00 f3 00 49 00 f8 00 90 88 71 48 8c a0 75 30 |N...I.....qH..u0|
616-
00000010 19 c8 07 d0 18 9c 09 c4 27 10 09 d0 1f 07 0c 5a |........'......Z|
617-
00000020 27 10 00 64 1f 07 00 9e 00 00 00 00 00 00 00 00 |'..d............|
618-
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
619-
00000040 00 00 00 00 3f 80 00 00 00 00 00 00 01 00 00 00 |....?...........|
620-
00000050 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 1b |................|
621-
00000060 14 02 81 b1 0d 5a 17 a5 15 87 00 00 00 00 30 00 |.....Z........0.|
622-
00000070 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff 01 |................|
615+
00000000 4e 00 f3 00 49 00 f8 00 90 88 71 48 8c a0 75 30 |N...I.....qH..u0|
616+
00000010 19 c8 07 d0 18 9c 09 c4 27 10 09 d0 1f 07 0c 5a |........'......Z|
617+
00000020 27 10 00 64 1f 07 00 9e 00 00 00 00 00 00 00 00 |'..d............|
618+
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
619+
00000040 00 00 00 00 3f 80 00 00 00 00 00 00 01 00 00 00 |....?...........|
620+
00000050 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 1b |................|
621+
00000060 14 02 81 b1 0d 5a 17 a5 15 87 00 00 00 00 30 00 |.....Z........0.|
622+
00000070 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff 01 |................|
623623
624624
A2h dump (upper 128 bytes) page 0h
625-
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
626-
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
627-
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
628-
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
629-
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
630-
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
631-
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
632-
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
625+
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
626+
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
627+
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
628+
000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
629+
000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
630+
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
631+
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
632+
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
633633
634634
'''
635635
SFF8472_A0_SIZE = 256
@@ -742,6 +742,21 @@ def test_commit_firmwre(self, mock_chassis):
742742
status = sfputil.commit_firmware("Ethernet0")
743743
assert status == 1
744744

745+
@patch('sfputil.main.platform_chassis')
746+
@patch('sfputil.main.logical_port_to_physical_port_index', MagicMock(return_value=1))
747+
@patch('sfputil.main.is_port_type_rj45', MagicMock(return_value=False))
748+
@patch('sfputil.main.is_sfp_present', MagicMock(return_value=True))
749+
@patch('sfputil.main.show_firmware_version', MagicMock())
750+
@patch('sfputil.main.download_firmware', MagicMock(return_value=1))
751+
@patch('sfputil.main.run_firmware', MagicMock(return_value=1))
752+
@patch('sfputil.main.is_fw_switch_done', MagicMock(return_value=1))
753+
@patch('sfputil.main.commit_firmware', MagicMock(return_value=1))
754+
def test_firmware_upgrade(self, mock_chassis):
755+
runner = CliRunner()
756+
result = runner.invoke(sfputil.cli.commands['firmware'].commands['upgrade'], ['Ethernet0', 'path'])
757+
assert result.output == 'Firmware download complete success\nFirmware run in mode 0 successful\nFirmware commit successful\n'
758+
assert result.exit_code == 0
759+
745760
@patch('sfputil.main.is_sfp_present', MagicMock(return_value=True))
746761
@patch('sfputil.main.is_port_type_rj45', MagicMock(return_value=True))
747762
def test_firmware_run_RJ45(self):

0 commit comments

Comments
 (0)