Post by zitt on Feb 4, 2022 0:48:11 GMT
Hoping someone like can help me debug or make progress on this project. I work for a rather large corporation with a very large development team. So large that as you guessed it; documentation is scarce, hidden, or just not present. Finding the right developer on the large team is nearly impossible.
I'm working on some unreleased, pre-production hardware with an OpenBmc/Redfish implementation. I've already successfully queried the Redfish implementation of this hardware to get the version number of the BMC installed on the system:
The above is JSON converted to python DICT. As you can see; it clearly states that the firmware is updateable. This is confirmed by the fact I can go into the bmc webserver and update the bmc image using a browser. That; however, can be very difficult to program via Python. I don't really want to try and do a robobrowser session to update the firmware from automation.
I read:
www.dmtf.org/sites/default/files/standards/documents/DSP2062_1.0.0.pdf
with interest and did some google searches but wasn't able to get a working implementation of uploading the BMC image via a POST command. I suspect there maybe a step I'm missing... or perhaps there is a missing implementation on the bmc side. I tried looking at the bmc logs: /var/log/redfish but it didn't really report any issues.
would indicate to me that the service is available but only supports the Unstructured HTTP push update. However, attempt to do a curl update:
leads to after several seconds of possible data transfer:
Anyone got any ideas?
Is there any standard way to turn on debugging logs in the linux kernel that might report in the openbmc server where this error message is coming from?
I'm working on some unreleased, pre-production hardware with an OpenBmc/Redfish implementation. I've already successfully queried the Redfish implementation of this hardware to get the version number of the BMC installed on the system:
GET /redfish/v1/UpdateService/FirmwareInventory/bmc_active
{'@odata.id': '/redfish/v1/UpdateService/FirmwareInventory/bmc_active',
'@odata.type': '#SoftwareInventory.v1_1_0.SoftwareInventory',
'Description': 'BMC image',
'Id': 'bmc_active',
'Name': 'Software Inventory',
'RelatedItem': [{'@odata.id': '/redfish/v1/Managers/bmc'}],
'RelatedItem@odata.count': 1,
'Status': {'Health': 'OK',
'HealthRollup': 'OK',
'State': 'Enabled'},
'Updateable': True,
'Version': <HIDDEN> }
The above is JSON converted to python DICT. As you can see; it clearly states that the firmware is updateable. This is confirmed by the fact I can go into the bmc webserver and update the bmc image using a browser. That; however, can be very difficult to program via Python. I don't really want to try and do a robobrowser session to update the firmware from automation.
I read:
www.dmtf.org/sites/default/files/standards/documents/DSP2062_1.0.0.pdf
with interest and did some google searches but wasn't able to get a working implementation of uploading the BMC image via a POST command. I suspect there maybe a step I'm missing... or perhaps there is a missing implementation on the bmc side. I tried looking at the bmc logs: /var/log/redfish but it didn't really report any issues.
GET /redfish/v1/UpdateService
{
"@odata.id": "/redfish/v1/UpdateService",
"@odata.type": "#UpdateService.v1_5_0.UpdateService",
"Description": "Service for Software Update",
"FirmwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory"
},
"HttpPushUri": "/redfish/v1/UpdateService",
"HttpPushUriOptions": {
"HttpPushUriApplyTime": {
"ApplyTime": "Immediate"
}
},
"HttpPushUriTargets": [],
"HttpPushUriTargetsBusy": true,
"Id": "UpdateService",
"MaxImageSizeBytes": 31457280,
"Name": "Update Service",
"Oem": {
"ApplyOptions": {
"@odata.type": "#OemUpdateService.ApplyOptions",
"ClearConfig": false
}
},
"ServiceEnabled": true
}
would indicate to me that the service is available but only supports the Unstructured HTTP push update. However, attempt to do a curl update:
curl -v -s -k -u {USERNAME}:{PASSWORD} --data-binary {FILENAME}-pfr-oob.bin https://{BMCIP}/redfish/v1/UpdateService
leads to after several seconds of possible data transfer:
{
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The request failed due to an internal service error. The service is still operational.",
"MessageArgs": [],
"MessageId": "Base.1.8.1.InternalError",
"MessageSeverity": "Critical",
"Resolution": "Resubmit the request. If the problem persists, consider resetting the service."
}
],
"code": "Base.1.8.1.InternalError",
"message": "The request failed due to an internal service error. The service is still operational."
}
}
Anyone got any ideas?
Is there any standard way to turn on debugging logs in the linux kernel that might report in the openbmc server where this error message is coming from?