[platform] [mellanox] Use correct API call to update firmware in auto_update_firmware (#8961)

Why I did it
The fwutil update all utility expects the auto_update_firmware method in the Platform API to execute the update_firmware() call and not the install_firmware() call.

How I did it
Changed the method in the mellanox platform API component implementation.

How to verify it
Run fwutil update all with a CPLD update on a Mellanox platform and verify that it properly updates the firmware using the MPFA file.
This commit is contained in:
Alexander Allen 2021-10-15 16:28:52 -04:00 committed by GitHub
parent d5834fcb1b
commit cefb9c1946
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 17 deletions

View File

@ -351,7 +351,7 @@ class Component(ComponentBase):
return FW_AUTO_ERR_IMAGE
if boot_action in default_supported_boot:
if self.install_firmware(image_path):
if self.update_firmware(image_path):
# Successful update
return FW_AUTO_INSTALLED
# Failed update (unknown reason)
@ -520,7 +520,7 @@ class ComponentSSD(Component):
return FW_AUTO_ERR_UKNOWN
if boot_action in supported_boot:
if self.install_firmware(image_path):
if self.update_firmware(image_path):
# Successful update
return FW_AUTO_INSTALLED
# Failed update (unknown reason)

View File

@ -16,10 +16,10 @@ from sonic_platform_base.component_base import ComponentBase, \
FW_AUTO_ERR_IMAGE, \
FW_AUTO_ERR_UKNOWN
def mock_install_firmware_success(image_path):
def mock_update_firmware_success(image_path):
return True
def mock_install_firmware_fail(image_path):
def mock_update_firmware_fail(image_path):
return False
def mock_update_notification_cold_boot(image_path):
@ -34,29 +34,29 @@ def mock_update_notification_error(image_path):
test_data_default = [
(None, False, None, FW_AUTO_ERR_IMAGE),
(None, True, 'warm', FW_AUTO_ERR_BOOT_TYPE),
(mock_install_firmware_fail, True, 'cold', FW_AUTO_ERR_UKNOWN),
(mock_install_firmware_success, True, 'cold', FW_AUTO_INSTALLED)
(mock_update_firmware_fail, True, 'cold', FW_AUTO_ERR_UKNOWN),
(mock_update_firmware_success, True, 'cold', FW_AUTO_INSTALLED)
]
test_data_ssd = [
(None, None, False, None, FW_AUTO_ERR_IMAGE),
(None, mock_update_notification_error, True, None, FW_AUTO_ERR_UKNOWN),
(mock_install_firmware_fail, mock_update_notification_cold_boot, True, 'cold', FW_AUTO_ERR_UKNOWN),
(mock_install_firmware_success, mock_update_notification_cold_boot, True, 'warm', FW_AUTO_ERR_BOOT_TYPE),
(mock_install_firmware_success, mock_update_notification_cold_boot, True, 'cold', FW_AUTO_INSTALLED),
(mock_install_firmware_success, mock_update_notification_warm_boot, True, 'warm', FW_AUTO_INSTALLED),
(mock_install_firmware_success, mock_update_notification_warm_boot, True, 'cold', FW_AUTO_INSTALLED)
(mock_update_firmware_fail, mock_update_notification_cold_boot, True, 'cold', FW_AUTO_ERR_UKNOWN),
(mock_update_firmware_success, mock_update_notification_cold_boot, True, 'warm', FW_AUTO_ERR_BOOT_TYPE),
(mock_update_firmware_success, mock_update_notification_cold_boot, True, 'cold', FW_AUTO_INSTALLED),
(mock_update_firmware_success, mock_update_notification_warm_boot, True, 'warm', FW_AUTO_INSTALLED),
(mock_update_firmware_success, mock_update_notification_warm_boot, True, 'cold', FW_AUTO_INSTALLED)
]
@pytest.mark.parametrize('install_func, image_found, boot_type, expect', test_data_default)
def test_auto_update_firmware_default(monkeypatch, install_func, image_found, boot_type, expect):
@pytest.mark.parametrize('update_func, image_found, boot_type, expect', test_data_default)
def test_auto_update_firmware_default(monkeypatch, update_func, image_found, boot_type, expect):
def mock_path_exists(path):
return image_found
test_component = Component()
monkeypatch.setattr(test_component, 'install_firmware', install_func)
monkeypatch.setattr(test_component, 'update_firmware', update_func)
monkeypatch.setattr(os.path, 'exists', mock_path_exists)
result = test_component.auto_update_firmware(None, boot_type)
@ -64,15 +64,15 @@ def test_auto_update_firmware_default(monkeypatch, install_func, image_found, bo
assert result == expect
@pytest.mark.parametrize('install_func, notify, image_found, boot_type, expect', test_data_ssd)
def test_auto_update_firmware_default(monkeypatch, install_func, notify, image_found, boot_type, expect):
@pytest.mark.parametrize('update_func, notify, image_found, boot_type, expect', test_data_ssd)
def test_auto_update_firmware_default(monkeypatch, update_func, notify, image_found, boot_type, expect):
def mock_path_exists(path):
return image_found
test_component_ssd = ComponentSSD()
monkeypatch.setattr(test_component_ssd, 'install_firmware', install_func)
monkeypatch.setattr(test_component_ssd, 'update_firmware', update_func)
monkeypatch.setattr(test_component_ssd, 'get_firmware_update_notification', notify)
monkeypatch.setattr(os.path, 'exists', mock_path_exists)