Closed silvam11 closed 3 years ago
Ran into this as well. I'm rerunning a playbook after the firmware was updated from a DRM repo and I'm getting an error instead of a passing green. @jagadeeshnv thoughts?
OMAM 2.0.11 omsdk 1.2.439 iDRAC 4.11.11.11
FAILED! => {"changed": false, "msg": "HTTP Error 400: Bad Request", "update_status": {"error": {"@Message.ExtendedInfo": [{"Message": "Firmware versions on server match catalog, applicable updates are not present in the repository.", "MessageArgs": [], "MessageArgs@odata.count": 0, "MessageId": "IDRAC.2.1.SUP029", "RelatedProperties": [], "RelatedProperties@odata.count": 0, "Resolution": "No response action is required.", "Severity": "Warning"}], "code": "Base.1.5.GeneralError", "message": "A general error has occurred. See ExtendedInfo for more information"}}}
Hi @tsquillario We will have a look and get back
Hello
Same problem. With OMAM 2.0.14. I use a SUU iso image instead of a live DRM repository but it changes nothing in the final to the error.
Here is my workaround: ignore the raised error from idrac_firmware
, register its output and parse it yourself to decide what to do.
- name: iDRAC update component firmwares
idrac_firmware:
idrac_ip: "{{ idrac.ipaddr }}"
idrac_user: "{{ drac.factory_user }}"
idrac_password: "{{ idrac.factory_password }}"
share_name: "{{ idrac.firmwares.share_name }}"
share_mnt: "{{ idrac.firmwares.share_mnt }}"
catalog_file_name: "{{ idrac.firmwares.catalog }}"
reboot: true
job_wait: true
register: command_update_firmware
ignore_errors: yes
- name: iDRAC firmware update component result
fail:
msg: "idrac_firmware failed!"
when:
- command_update_firmware['msg'] not in ["Successfully updated the firmware."]
- command_update_firmware.update_status.error['@Message.ExtendedInfo'].0.Message not in ["Firmware versions on server match catalog, applicable updates are not present in the repository."]
More precisely i got this error:
fatal: [dell]: FAILED! => {
"changed": false,
"failed_when_result": true,
"update_status": {
"error": {
"@Message.ExtendedInfo": [
{
"Message": "Firmware versions on server match catalog, applicable updates are not present in the repository.",
"MessageArgs": [],
"MessageArgs@odata.count": 0,
"MessageId": "IDRAC.2.1.SUP029",
"RelatedProperties": [],
"RelatedProperties@odata.count": 0,
"Resolution": "No response action is required.",
"Severity": "Warning"
}
],
"code": "Base.1.5.GeneralError",
"message": "A general error has occurred. See ExtendedInfo for more information"
}
}
}
By reading the full information, it is obvious you can ignore the failure.
Please note my answer is a workaround. It is by no way a fix to the real problem (no idempotency).
By the way, dear DELL developpers, what was the use of this horrible name @Message.ExtendedInfo
which makes our life so hard in writing access to the parts of this dict?
Thanks anyway for your work.
@silvam11 Please verify this against the latest commit. It has been addressed
Thanks @jagadeeshnv
I ran the idrac_firmware module (idrac_firmware) to upgrade firmware for a R640 server and the module failed with the following error:
{"changed": false, "msg": "'GetRepoBasedUpdateList_OUTPUT'"}
As the message above does not allow to identify the root cause of the issue, I started debugging the code and I figured out that the issue happens because all the components of my server are already on the firmware versions described by my catalog.xml.
To confirm the root cause, I manually downgraded the firmware versions on my server then I ran the idrac_firmware module which ran successfully. However, if I re-run the module, it fails as the versions were upgraded on the first execution. Therefore, it shows that this module is not idempotent and fails to execute when the state is already present.
Below are some details about the environment:
The task is below and it is based on http.: