POST – HTTP-Push-Aktualisierung für Firmware
Mit diesem Vorgang können installierte Softwarekomponenten aktualisiert werden, indem eine Software-Image-Datei per Push an den URI übertragen wird, auf den von der UpdateService.HttpPushUri-Eigenschaft verwiesen wird.
Anforderungs-URL
https://<SMM_IPADDR>/redfish/v1/UpdateService/update
Anforderungstext
Das POST für diesen URI stellt die Authentifizierung mit der gleichen Berechtigung bereit, die für den Zugriff auf den Aktualisierungsdienst verwendet wird.
- „X-Auth-Token“ mit dem vorhandenem oder einem neuen
- BASIC-Header „Authorization“, um die Anmeldeinformationen des Benutzers anzugeben
Antworttext
Die HTTP-Push-Aktualisierung unterstützt einen Datei-Upload, der das Binärdaten-Posting verwendet (z. B. die Option „curl –data-binary“, vorausgesetzt, die Inhaltscodierung des Textkörpers ist „application/octet-stream“). Es unterstützt auch das Hochladen von Dateien mit der POST-Methode des Formulars, die der Operation „curl -F“ entspricht, die den Header „Content-Type: mulitpart/form-data“ angibt.
Wenn der Client mehrere Dateien in derselben POST-Anforderung hochlädt, wird nur die erste Datei akzeptiert, die anderen werden ignoriert.
Der Client kann optional den „Content-Length“-Header in die POST-Anforderung einfügen, um die Größe des POST-Textkörpers anzugeben. SMM überprüft diesen Header und stellt sicher, dass die Größe innerhalb der maximal unterstützten Dateigröße für FW-Aktualisierungen liegt. Wenn die Datei größer ist, als der Dienst unterstützt, gibt der Dienst den Code 413 (Anforderungsentität zu groß) mit einer Fehlermeldung zurück, die angibt, dass die Dateigröße zu groß ist.
Die angegebene „Content-Length“ muss innerhalb von 0~2147483647 (0~0x7FFFFFFF) liegen, sonst wird HTTP 400 zurückgegeben.
Der Client kann optional mehrteilige HTTP-Formulardaten in den POST-Textkörper aufnehmen, um den Namen der Image-Datei anzugeben, wie in RFC2388 definiert. Dies ist gleichbedeutend mit der Operation „curl -F“. Dies ist optional und muss vom Dienst nicht verlangt werden. Wenn der Client mehrere Dateien in derselben POST-Anforderung hochlädt, gibt der Dienst HTTP 400 (Ungültige Anforderung) mit einer Fehlermeldung zurück, die darauf hinweist, dass das Format nicht unterstützt wird.
Wenn ein weiteres POST zur HttpPushUri-Firmwareaktualisierung durchgeführt wird, während der Dienst damit beschäftigt ist, die vorherige Aktualisierung zu flashen, akzeptiert der Dienst die Anforderung und lädt die Datei hoch. Und wenn die Aktualisierung bei Abschluss des Dateiuploads noch im Gange ist, gibt der Dienst einen ResourceInUse-Fehler in der Task-Ressource zurück, der angibt, dass der Aktualisierungsdienst beschäftigt ist, und die Push-Aktualisierung wird zurückgewiesen.
Obwohl es sich um einzelne URIs handelt, kann das Hochladen einer Datei über HttpPushUri mit einem 409-Konflikt abgelehnt werden, wenn ein Dateiupload über MultipartHttpPushUri in Bearbeitung ist, und umgekehrt.
Statuscode
| HTTP-Statuscode | Fehlernachrichten-ID |
|---|---|
| 401 | Unbefugt |
| 403 | Verboten |
| 503 | Dienst vorübergehend nicht verfügbar |
| 500 | Interner Fehler |
| 202 | Akzeptieren |
Beispiel
Beispiel des Push-Uploads:
Pusht das Firmware-Image an die URL in der HttpPushUri-Eigenschaft.
Unten finden Sie ein Beispiel für einen curl-Befehl für eine HTTP-Push-Aktualisierungsanforderung für UEFI.
curl -k -H <Authentication> -H "Content-Type: application/octet-stream" -T <firmware image>https://{SMM3 IP}:{SMM3 port}/redfish/v1/UpdateService/updateAnmerkung- <Authentication>
- BasicAuth (z. B. -u user:password oder -H "X-Auth-Token: Basic <encoding string>")
- X-Auth-Token (z. B. -H "X-Auth-Token: <token string>")
- <firmware image>
- Beispiel: „lnvgy_fw_smm3_q4sm01a-1.0.00_anyos_comp.uxz“