Nutanix Database Service(NDB)で、REST API でデータベースを Soft Remove してみます。
今回の環境
NDB バージョンは、2.5.4 です。
そして、データベース削除の処理が失敗して、再実行してもオペレーションが「待機中」のまま進まなくなってしまっています。

オペレーションの停止
削除オペレーションが「待機中」でも、NDB Server では上書きでの削除オペレーションを開始できません。
そこで、オペレーションを手動で停止します。
「オペレーション」画面で、待機中のオペレーションを選択して「操作を停止」をクリックします。そして確認画面で「Yes」をクリックします。

データベースの Soft Remove
NDB の REST API を利用するためのデータやコマンド ラインを用意するには、API リファレンスか、NDB Web UI の「同等の API」ボタンから確認します。
データベースの Soft Remove には、下記の DELETE メソッドを利用します。
DELETE メソッドには、下記の JSON データを渡します。
- このうち delete / remove / softRemove は、どれかひとつだけを true にします。
- フォーマットされた JSON を1行にまとめるには、jq の「-c」オプションなどが利用できます。
{
"delete": false,
"remove": false,
"softRemove": true,
"forced": false,
"deleteTimeMachine": true,
"deleteLogicalCluster": true
}
curl では、下記のようなコマンド ラインで実行します。
- データベースの UUID も「同等の API」ボタンなどから確認できます。
- NDB Server: 192.168.12.156
- データベースの UUID: 0ecc36ec-2115-482f-b91e-9e609cacfeb9
- -u: NDB Server の「ユーザ:パスワード」を指定
- -d: さきほどの JSON データ
curl -k -X DELETE \ https://192.168.12.156/era/v0.9/databases/0ecc36ec-2115-482f-b91e-9e609cacfeb9 \ -H 'Content-Type: application/json' \ -u 'admin:パスワード' \ -d '{"delete":false,"remove":false,"softRemove":true,"forced":false,"deleteTimeMachine":true,"deleteLogicalCluster":true}'
適当な Linux などから curl コマンドを実行するとオペレーションが開始され、NDB Server からデータベースの登録が削除されます。下記のようにオペレーションの情報が返されます。
{
"name": "Database (id:0ecc36ec-2115-482f-b91e-9e609cacfeb9) has been soft-removed successfully",
"workId": null,
"operationId": null,
"dbserverId": null,
"message": " Database (id:0ecc36ec-2115-482f-b91e-9e609cacfeb9) has been soft-removed successfully.",
"entityId": "d7598f7b-b652-4254-9458-a908e129bf1e",
"entityName": "pgsql14-01 (deleted at:2024-05-03 01:03:27UTC)",
"entityType": "ERA_DATABASE",
"status": "success",
"associatedOperations": null,
"dependencyReport": null
}
「システム操作を表示」を ON にすると、REST API による削除に関連したオペレーションが表示されます。

これで NDB からデータベースの登録が削除されました。DB サーバ VM からは削除されていないので、手動での削除が必要です。
以上。
