シャドウ・アプリケーションの昇格
/essbase/rest/v1/applications/actions/shadowPromote
シャドウ・アプリケーションをベース・アプリケーションに昇格させます。概念上は、昇格操作はファイル・システム・レベルでEssbaseアプリケーション・ディレクトリをソースの場所から宛先の場所に移動させることと同等です。
Essbaseによって、昇格前に両方のアプリケーションが停止(アンロード)される必要があります(それらが実行されている場合)。アンロードの時点で、宛先アプリケーションで問合せなどの操作が進行中だった場合は、Essbaseによってそれらの操作が終了され、アプリケーションのアンロードが試みられます。
正常なアンロード・プロセスが失敗するか、その実行時間が入力引数timeoutToForceUnloadApp (unit=seconds)で許可されている時間よりも長くなると、Essbaseによってアプリケーションが強制終了されます。
例: タイムアウトに60秒を指定したが、進行中のリクエストの終了、およびアプリケーションの正常なアンロードが1分以内に完了しなかった場合は、Essbaseによって強制終了がトリガーされます。終了後、Essbaseによってシャドウ・アプリケーションが昇格されます。
昇格操作は、集約ストレージ、ブロック・ストレージおよびハイブリッド・モードを含め、すべてのアプリケーション上でサポートされています。
ノート: 既存のアプリケーションを移動するときは、アプリケーションおよびキューブのアーティファクト(メタデータやデータなど)のみがソースから宛先に置き換えられます。
昇格の間、宛先アプリケーション上の、ユーザー、グループおよびセキュリティ・フィルタなどのすべてのセキュリティ・レイヤー関連付けは保持されますが、シャドウおよびソース・アプリケーションでは失われます。パーティション定義にも同じルールが当てはまります。
例: ユーザーXおよびYにApp1への読取りアクセス権があり、管理者がシャドウApp2を昇格させてApp1を置き換えた場合、XとYはApp1にアクセスできるようになります。
ユーザーZにApp2へのアクセス権があった場合、昇格後に、ZはApp1にアクセスできません。
シャドウ化アプリケーションからベースへの昇格は、キューブ数とキューブ名に変更がない場合のみ認められます。つまり、キューブの名前が変更された場合や、アプリケーションがそのシャドウ化後に追加または削除された場合、そのようなアプリケーションの昇格はエラーで失敗し、両方のアプリケーションはそのままになります。
例: ASOAppNew.cubeNewをASO.cubeと置き換えることができません。ASOAppNew.cubeをASO.cubeと置き換えることができます。
ヒント: この昇格APIを呼び出す前にアプリケーションをアンロードまたは停止する必要はありません。Essbaseによってアプリケーションがロードされて情報が収集され、アプリケーションを移動する前にそれがアンロードされます。
リクエスト
- application/json
- application/xml
shadowAppName: ベースに昇格させる必要がある非表示のシャドウ・アプリケーションの名前。
primaryAppName: プライマリ・アプリケーションの名前。
timeoutToForceUnloadApp: アプリケーションによって実行されたリクエストが時間間隔を過ぎても進行中である場合に強制アンロードするまでの時間間隔(秒単位)。
runInBackground: 「シャドウ・プロモート」をジョブとしてスケジュールするにはtrueを指定し、それ以外の場合はfalseを指定します。
object
- primaryAppName(required): string
プライマリの、シャドウでないアプリケーションの名前。
- runInBackground: boolean
「シャドウ・プロモート」をジョブとしてスケジュールするにはtrueを指定し、それ以外の場合はfalseを指定します。
- shadowAppName(required): string
ソースのコピーであるシャドウ・アプリケーションの一意の名前。
- timeoutToForceUnloadApp(required): integer(int32)
アプリケーションによって実行されたリクエストが進行中である場合にそのアプリケーションを強制的にアンロードおよび停止するまでの時間間隔(秒単位)。正常なアンロード・プロセスが失敗するか、その実行時間がこのタイムアウトで許可されている時間よりも長くなると、Essbaseによってアプリケーションが強制終了されます。
レスポンス
- application/json
- application/xml
200 レスポンス
OK
シャドウ・アプリケーションの昇格が正常に完了しました。
400 レスポンス
不正なリクエスト
シャドウ・アプリケーションの昇格に失敗しました。
500 レスポンス
サーバーの内部エラーです。
503 レスポンス
使用できないサービス
ネーミング例外またはサーバー例外。
例
次の例では、Essbase REST APIを使用して非表示(シャドウ)アプリケーションをプライマリ・ステータスに昇格する方法を示します。
この例では、cURLを使用して、Windowsシェル・スクリプトからREST APIにアクセスします。呼出し元ユーザーのIDおよびパスワードは変数であり、properties.bat
内でその変数値が設定されています。
cURLコマンドを含むスクリプト
call properties.bat
curl -X POST https://myserver.example.com:9001/essbase/rest/v1/applications/actions/shadowPromote -H "Accept:application/json" -H "Content-Type: application/json" -d '{"primaryAppName": "Sample_Dynamic", "runInBackground": true, "shadowAppName": "SDShadow", "timeoutToForceUnloadApp": 60}' -u %User%:%Password%
レスポンスの例
{
"job_ID" : 27,
"appName" : null,
"dbName" : null,
"jobType" : "Shadow Promote",
"jobfileName" : "SDShadow",
"userName" : "admin",
"startTime" : 1722104384000,
"endTime" : 1722104384000,
"statusCode" : 100,
"statusMessage" : "In Progress",
"jobInputInfo" : {
"primaryAppName" : "Sample_Dynamic",
"shadowAppName" : "SDShadow",
"timeoutToForceUnloadApp" : 60
},
"jobOutputInfo" : {
"errorMessage" : ""
},
"links" : [ {
"rel" : "self",
"href" : "https://myserver.example.com:9001/essbase/rest/v1/jobs",
"method" : "POST"
}, {
"rel" : "canonical",
"href" : "https://myserver.example.com:9001/essbase/rest/v1/jobs",
"method" : "POST"
}, {
"rel" : "Job Status",
"href" : "https://myserver.example.com:9001/essbase/rest/v1/jobs/27",
"method" : "GET"
} ]
}