メインコンテンツまでスキップ

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 オプション、本文の content-encoding が application/octet-stream であると仮定)。また、ヘッダー「Content-Type: mulitpart/form-data」を示す「curl -F」操作と同等のフォーム POST メソッドによるファイルのアップロードもサポートされています。

クライアントが同じ POST リクエストで複数のファイルをアップロードする場合、最初のファイルのみが受け入れられ、他のファイルは無視されます。

  1. クライアントは、必要に応じて、POST 本文のサイズを示すために、POST に「Content-Length」ヘッダーを含めることができます。SMM は、このヘッダーをチェックし、サイズがファームウェア更新でサポートされている最大ファイル・サイズ内であることを確認します。ファイルがサービスでサポートされているサイズよりも大きい場合、サービスはコード 413 (要求エンティティが大きすぎます) を返し、ファイル・サイズが大きすぎることを示すエラー・メッセージを表示します。

  2. 指定された「Content-Length」は 0~2147483647 (0~0x7FFFFFFF) 以内でなければならず、そうでなければHTTP 400 が返されます。

  3. クライアントは、必要に応じて、RFC2388 で定義されているように、イメージ・ファイル名を指定するために、POST 本文データに HTTP マルチパート・フォーム・データを含めることができます。これは「curl -F」操作と同等です。これはオプションであり、サービスで要求することはできません。クライアントが同じ POST 要求で複数のファイルをアップロードすると、サービスは HTTP 400 (不正な要求)を返し、フォーマットがサポートされていないことを示すエラーメッセージを表示します。

  4. サービスが前の更新プログラムをフラッシュしてビジー状態になっている間に、HttpPushUri ファームウェア更新への別の POST が実行された場合、サービスは要求を受け入れてファイルをアップロードし、ファイルのアップロードが完了したときに更新がまだ進行中の場合、サービスは更新サービスがビジーであることを示す ResourceInUse エラーをタスク・リソースに返し、プッシュ更新を拒否します。

    個々の URI ですが、MultipartHttpPushUri を介したファイルのアップロードが進行中の場合、HttpPushUri を介したファイルのアップロードは 409 Confilict で拒否される可能性があり、その逆も同様です。

ステータス・コード

HTTP ステータス・コードエラー・メッセージ ID
401不正
403禁止
503サービスが一時的に利用できません
500内部エラー
202受け入れる

プッシュ・アップロードの例を以下に示します。

  1. ファームウェア・イメージを 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>”)
    • <ファームウェア・イメージ>
      • 例:「lnvgy_fw_smm3_q4sm01a-1.0.00_anyos_comp.uxz」