本記事では、アップグレードに必要なRPMパッケージをアップロードする方法について説明します。
呼び出しの注意事項
インターフェース制約
obshell ServerはこのAPIに対してセキュリティ検証を行います。詳細については、APIハイブリッド暗号化を参照してください。
リクエストパス
POST /api/v1/upgrade/package
リクエストタイプ
multipart/form-data
リクエストパラメータ
| パラメータ | タイプ | 必須 | サンプル値 | 説明 |
|---|---|---|---|---|
| file | file | はい | なし | アップロードするRPMパッケージを指定します |
戻り値
| パラメータ | タイプ | 説明 |
|---|---|---|
| successful | bool | リクエストが成功したかどうか。 |
| timestamp | time.Time | サーバーがリクエストを完了したタイムスタンプ。 |
| duration | int | サーバーがリクエストを処理に要した時間(ミリ秒)。 |
| status | int | HTTP Status 標準に従ったエンコード。 |
| traceId | string | リクエストのTrace ID。 |
| data | UpgradePkgInfo | 詳細は、以下の UpgradePkgInfo情報のデータ構造 を参照してください。 |
| error | ApiError | リクエストで発生したエラー。含まれる情報は次のとおりです:
|
UpgradePkgInfo情報のデータ構造:
| パラメータ | タイプ | 説明 |
|---|---|---|
| pkgId | int | ソフトウェアパッケージID |
| name | string | ソフトウェアパッケージ名 |
| version | string | ソフトウェアパッケージのバージョン |
| releaseDistribution | string | ソフトウェアパッケージのリリースバージョン |
| distribution | string | ソフトウェアパッケージのディストリビューション |
| release | string | ソフトウェアパッケージのビルド番号 |
| architecture | string | ソフトウェアパッケージのアーキテクチャ |
| Size | int | ソフトウェアパッケージの解凍サイズ、単位はバイトです。 |
| PayloadSize | int | ソフトウェアパッケージのサイズ、単位はバイトです。 |
| ChunkCount | int | ソフトウェアパッケージのスライス数 |
| Md5 | string | ソフトウェアパッケージのMD5 |
| UpgradeDepYaml | string | ソフトウェアパッケージのアップグレード依存関係ファイル |
| GmtModify | time.Time | ソフトウェアパッケージの最終変更日時 |
例
リクエストの例
-F "file=@/home/rpmbuild/RPMS/x86_64/oceanbase-ce-4.2.1.1-101000062023110109.el7.x86_64.rpm"
/api/v1/upgrade/package
返却例
{
"successful": true,
"timestamp": "2024-01-09T16:55:58.153159003+08:00",
"duration": 68288,
"status": 200,
"traceId": "42464438789e774e",
"data": {
"PkgId": 1,
"Name": "oceanbase-ce",
"Version": "4.2.1.1",
"ReleaseDistribution": "101000062023110109.el7",
"Distribution": "el7",
"Release": "101000062023110109",
"Architecture": "x86_64",
"Size": 433648329,
"PayloadSize": 96547244,
"ChunkCount": 6,
"Md5": "550d75397013d00ca0a8e529d17020c3",
"UpgradeDepYaml": "# oceanbaseの各バージョンのアップグレード依存関係を記述します\n# ドキュメント release/ptw5y7 を参照してください\n\n# 各正式にリリースされたobバージョンについて、以下のYAMLドキュメントに項目を追加します。項目には次のプロパティが含まれます:\n# * version: アップグレード対象のバージョン、またはアップグレードプロセスで通過するバージョンです。通常はA.B.C形式のバージョン番号を使用します。A.B.C-D形式の場合、ビルド番号がD以上である必要があります。\n# * can_be_upgraded_to: このバージョンがOB QA互換性テストをパスしており、*直接* アップグレードできるobバージョン番号を表します。リスト形式で複数のバージョンを含めることができます。\n# * deprecated: デフォルトはFalseです。Trueの場合、このバージョンは廃止されています。アップグレードの開始点として使用でき、アップグレード中間バージョンとしても使用できますが、アップグレードターゲットバージョンとしては使用できません。\n# * require_from_binary: デフォルトはFalseです。Trueの場合、アップグレードプロセスにおいて中間バージョンとして使用される場合、upgradeスクリプトを実行するだけでなく、observerも同バージョンにアップグレードする必要があります。\n#\n\n# OCPのOBアップグレードモジュールはこのファイルを読み取り、アップグレードの開始バージョンと目標バージョンを指定して、上記の制約を満たす条件下で最短のアップグレードパスを自動的に探索します。\n# 基本的なアルゴリズムは以下の通りです:\n# 次の説明に基づいてグラフを構築します。各バージョンをノードとし、can_be_upgraded_toの関係をエッジとして定義します。開始バージョンとアップグレード目標バージョンの2つのバージョン間の最短パスを探索します。開始点以外のノードはdeprecatedであってはなりません。\n# A.B.CとA.B.C-Dの両方のノードがマッチする場合、後者を優先的に選択します。\n#\n\n- version: 4.0.0.0\n can_be_upgraded_to:\n - 4.1.0.0\n\n# 4.1.0.xは障害点です\n- version: 4.1.0.0-100000192023032010 # 4.1ベータ版はターゲットバージョンとして使用できません\n can_be_upgraded_to:\n - 4.1.0.0\n deprecated: True\n\n- version: 4.1.0.0\n can_be_upgraded_to:\n - 4.1.0.1\n\n- version: 4.1.0.1\n can_be_upgraded_to:\n - 4.1.0.2\n\n- version: 4.1.0.2\n can_be_upgraded_to:\n - 4.2.0.0\n require_from_binary:\n value: True\n when_come_from: [4.0.0.0, 4.1.0.0-100000192023032010]\n\n- version: 4.2.0.0-100000152023080109 # 4.2 RC2はターゲットバージョンとして使用できません\n can_be_upgraded_to:\n - 4.2.0.0\n deprecated: True\n\n- version: 4.2.0.0-100010022023081817 # 4.2 RC2のホットフィックス版はターゲットバージョンとして使用できません\n can_be_upgraded_to:\n - 4.2.0.0\n deprecated: True\n\n- version: 4.2.0.0\n can_be_upgraded_to:\n - 4.2.1.0\n\n# 4.2.1.xは障害点です\n- version: 4.2.1.0\n can_be_upgraded_to:\n - 4.2.1.1\n\n- version: 4.2.1.1\n can_be_upgraded_to:\n - 4.3.0.0\n require_from_binary:\n value: True\n when_come_from: [4.1.0.0, 4.1.0.1, 4.1.0.2, 4.2.0.0]\n",
"GmtModify": "0001-01-01T00:00:00Z"
}
}
関連ドキュメント
コマンドラインからAPIインターフェースを呼び出す他に、SDKメソッドを使用してAPIを呼び出すこともできます。
obshell-sdk-pythonを使用したAPIリクエストメソッドの紹介については、RPMパッケージのアップロードを参照してください。
obshell-sdk-goを使用したAPIリクエストメソッドの紹介については、RPMパッケージのアップロードを参照してください。