POST – 펌웨어에 대한 HTTP 푸시 업데이트
이 작업은 UpdateService.HttpPushUri 속성에서 참조하는 URI에 소프트웨어 이미지 파일을 푸시하여 설치된 소프트웨어 구성 요소의 업데이트를 수행할 수 있습니다.
요청 URL
https://<SMM_IPADDR>/redfish/v1/UpdateService/update
요청 본문
이 URI에 대한 POST는 UpdateService에 액세스하는 데 사용되는 것과 동일한 권한으로 인증을 제공해야 합니다.
- "X-Auth-Token" 기존 또는 신규 사용
- BASIC "Authorization" 헤더를 사용하여 사용자의 자격 증명을 지정할 수 있습니다.
응답 본문
Http 푸시 업데이트는 바이너리 데이터 게시를 사용하는 파일 업로드를 지원합니다(예: curl –data-binary 옵션, 본문의 콘텐츠 인코딩이 application/octet-stream이라고 가정). 또한 "Content-Type: mulitpart/form-data" 헤더를 나타내는 "curl -F" 작업을 수행하는 것과 동일한 양식 POST 메서드로 파일 업로드를 지원합니다.
클라이언트가 동일한 POST 요청에서 여러 파일을 업로드하는 경우 첫 번째 파일만 허용되고 다른 파일은 무시됩니다.
클라이언트는 선택적으로 POST 본문 크기를 나타내기 위해 POST에 "Content-Length" 헤더를 포함할 수 있습니다. SMM은 이 헤더를 확인하고 크기가 FW 업데이트에 지원되는 최대 파일 크기 내에 있는지 확인합니다. 파일이 서비스에서 지원하는 것보다 큰 경우 서비스는 파일 크기가 너무 크다는 오류 메시지와 함께 코드 413(요청 엔터티가 너무 큼)을 반환합니다.
주어진 "Content-Length"는 0~2147483647 (0~0x7FFFFFFF) 이내여야 하며 그렇지 않으면 HTTP 400이 반환됩니다.
클라이언트는 선택적으로 POST 본문 데이터에 HTTP 멀티파트 양식 데이터를 포함하여 RFC2388에 정의된 대로 이미지 파일 이름을 지정할 수 있습니다. 이것은 "curl -F" 작업을 수행하는 것과 같습니다. 이는 선택 사항이며 서비스에서 요구하지 않아야 합니다. 클라이언트가 동일한 POST 요청에서 여러 파일을 업로드하는 경우 서비스는 형식이 지원되지 않음을 나타내는 오류 메시지와 함께 HTTP 400(잘못된 요청)을 반환해야 합니다.
서비스가 이전 업데이트를 플래시하는 동안 HttpPushUri 펌웨어 업데이트에 대한 다른 POST가 수행되면 서비스는 요청을 수락하고 파일을 업로드하며, 파일 업로드가 완료되었을 때 업데이트가 아직 진행 중인 경우 서비스는 업데이트 서비스가 사용 중임을 나타내는 작업 리소스에 ResourceInUse 오류를 반환하고 푸시 업데이트를 거부합니다.
개별 URI이지만 MultipartHttpPushUri를 통한 파일 업로드가 진행 중인 경우 HttpPushUri를 통한 파일 업로드가 409 충돌로 거부될 수 있으며 그 반대의 경우도 마찬가지입니다.
상태 코드
| HTTP 상태 코드 | 오류 메시지 ID |
|---|---|
| 401 | 인증되지 않음 |
| 403 | 접근이 거부됨 |
| 503 | 서비스를 일시적으로 사용할 수 없음 |
| 500 | 내부 오류 |
| 202 | 승인 |
예
푸시 업로드의 예:
펌웨어 이미지를 HttpPushUri 속성의 URL에 푸시합니다.
UEFI에 대한 HTTP 푸시 업데이트 요청에 대한 샘플 curl 명령은 다음과 같습니다.
curl -k -H <Authentication> -H "Content-Type: application/octet-stream" -T <firmware image>https://{SMM3 IP}:{SMM3 port}/redfish/v1/UpdateService/update주- <Authentication>
- BasicAuth(예: -u user:password 또는 -H "X-Auth-Token: Basic <encoding string>")
- X-Auth-Token(예: -H "X-Auth-Token: <token string>")
- <firmware image>
- 예: "lnvgy_fw_smm3_q4sm01a-1.0.00_anyos_comp.uxz"