POST – HTTP Actualización push de firmware
Esta operación puede hacer una actualización de los componentes de software instalados al enviar un archivo de imagen de software al URI al que hace referencia la propiedad UpdateService.HttpPushUri.
URL de la solicitud
https://<SMM_IPADDR>/redfish/v1/UpdateService/update
Cuerpo de la solicitud
El POST a este URI proporcionará autenticación con el mismo privilegio que se usa para acceder a UpdateService.
- “X-Auth-Token” con la versión nueva o existente
- BASIC "Authorization" para especificar las credenciales del usuario.
Cuerpo de la respuesta
Http Push Update admite la carga de archivos que utilizan la publicación de datos binarios (por ejemplo, la opción curl –data-binary, suponiendo que la codificación de contenido del cuerpo sea application/octet-stream). También admite la carga de archivos con el método POST de formulario que es equivalente a realizar una operación “curl -F” que indica el encabezado “Content-Type: mulitpart/form-data”.
Si el cliente carga varios archivos en la misma solicitud POST, solo se aceptará el primer archivo y se ignorarán los demás.
Opcionalmente, el cliente puede incluir el encabezado “Content-Length” en el POST para indicar el tamaño del cuerpo del POST. SMM revisa este encabezado y verifica que el tamaño esté dentro del límite máximo de archivo admitido para las actualizaciones de FW. Si el archivo es más grande de lo que admite el servicio, el servicio devuelve el código 413 (Entidad de solicitud demasiado grande) con un mensaje de error que indica que el tamaño del archivo es demasiado grande.
El valor de “Content-Length” proporcionado debe ser de entre 0 y 2147483647 (entre 0 y 0x7FFFFFFF) o se devolverá HTTP 400.
De forma opcional, el cliente puede incluir datos de formulario HTTP multiparte en los datos del cuerpo del mensaje POST para especificar el nombre del archivo de imagen, como está definido en RFC2388. Esto es equivalente a hacer la operación “curl -F”. Esto es opcional y el servicio no debe requerirlo. Si el cliente carga varios archivos en la misma solicitud POST, el servicio devolverá un HTTP 400 (Solicitud incorrecta) con un mensaje de error que indica que el formato no es compatible.
Si se realiza otra actualización de firmware de POST a HttpPushUri mientras el servicio está ocupado con la actualización anterior, el servicio aceptará la solicitud y cargará el archivo y, si la actualización aún está en curso cuando se complete la carga del archivo, el servicio devolverá el error ResourceInUse en el recurso de tarea, con lo que indicará que el servicio de actualización está ocupado, y rechazará la actualización push.
Aunque se trata de URI individuales, la carga de un archivo a través de HttpPushUri se puede rechazar con el mensaje 409 Conflicto si se está realizando una carga de archivo a través de MultipartHttpPushUri, o viceversa.
Código de estado
| Código de estado HTTP | ID del mensaje de error |
|---|---|
| 401 | No autorizado |
| 403 | Prohibido |
| 503 | Servicio temporalmente no disponible |
| 500 | Error interno |
| 202 | Aceptar |
Ejemplo
El ejemplo de carga push:
Envíe la imagen de firmware en la dirección URL de la propiedad HttpPushUri.
A continuación, se muestra un ejemplo del comando curl para la solicitud de actualización push HTTP para UEFI.
curl -k -H <Authentication> -H "Content-Type: application/octet-stream" -T <firmware image>https://{SMM3 IP}:{SMM3 port}/redfish/v1/UpdateService/updateNota- <Authentication>
- BasicAuth (p. ej.: -u user:password o -H “X-Auth-Token: Basic <encoding string>”)
- X-Auth-Token (p. ej.: -H “X-Auth-Token: <token string>”)
- <firmware image>
- ej: “lnvgy_fw_smm3_q4sm01a-1.0.00_anyos_comp.uxz”