diff options
author | Zuul <zuul@review.opendev.org> | 2023-05-09 23:45:15 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-05-09 23:45:15 +0000 |
commit | 832275015af5f187105e1de2558f7811b64a6d03 (patch) | |
tree | 1603d59c6d3f9017de1614423e7f250d4d04ca8b /ironic/drivers/modules/redfish | |
parent | 1d0818cba2d948902ca056e6f82f873838415c0e (diff) | |
parent | 03cd9788e6ad658641b0c3328d10636c5aab96a4 (diff) | |
download | ironic-832275015af5f187105e1de2558f7811b64a6d03.tar.gz |
Merge "Support longer checksums for redfish firmware upgrade"
Diffstat (limited to 'ironic/drivers/modules/redfish')
-rw-r--r-- | ironic/drivers/modules/redfish/firmware_utils.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/ironic/drivers/modules/redfish/firmware_utils.py b/ironic/drivers/modules/redfish/firmware_utils.py index c73cb80dd..feeec2df2 100644 --- a/ironic/drivers/modules/redfish/firmware_utils.py +++ b/ironic/drivers/modules/redfish/firmware_utils.py @@ -137,8 +137,22 @@ def verify_checksum(node, checksum, file_path): :param file_path: File path for which to verify checksum :raises RedfishError: When checksum does not match """ - calculated_checksum = fileutils.compute_file_checksum( - file_path, algorithm='sha1') + if len(checksum) <= 41: + # SHA1: 40 bytes long + calculated_checksum = fileutils.compute_file_checksum( + file_path, algorithm='sha1') + elif len(checksum) <= 64: + calculated_checksum = fileutils.compute_file_checksum( + file_path, algorithm='sha256') + elif len(checksum) <= 128: + calculated_checksum = fileutils.compute_file_checksum( + file_path, algorithm='sha512') + else: + raise exception.RedfishError( + _('Unable to identify checksum to perform firmware file checksum ' + 'calculation. Please validate your input in and try again. ' + 'Received: %(checksum)s') + % {'checksum': checksum}) if checksum != calculated_checksum: raise exception.RedfishError( _('For node %(node)s firmware file %(temp_file)s checksums do not ' |