2017-02-17 3 views
0

ブロックボリュームをフェイルオーバーした後、レプリカ(restoreFromSnapshot)に対して復元操作を実行しました。 APIは戻り値をTrueとして約2秒で戻ってきました。スナップショットの復元操作が完了したかどうかを確認する方法

私はすぐに元のボリュームにフェイルバックするAPIを解雇し、次のエラー

SoftLayerAPIError(SoftLayer_Exception_Network_Storage_BlockingOperationInProgress)を得た:スナップショットの復元は、ボリュームIBM02SEL328078-363上で現在進行中です。このプロセス中、要求された操作(レプリカボリュームからの即時フェールバック)は、プロセスが終了するまで完了できません。

これは、restoreFromSnapshot()が成功を返しても、実際の復元操作がまだ進行中である可能性があることを示しています。

復元操作の現在の状態を確認する方法と、復元操作が正常に完了したことを確認する方法は何ですか。

答えて

0

ソフトレイヤーのリソース上でアクションを実行すると、トランザクションが作成されます(ほぼすべての場合)。トランザクションが完了するまで、リソース上で新しいアクションを実行することはできません。したがって、操作の復元が完了したかどうかを確認する方法は、トランザクションが実行されていないことを確認することです。その場合はuse the SoftLayer_Network_Storage::getActiveTransactionsメソッドを使用します。

RESTful

GET https://$USERID:[email protected]/rest/v3/SoftLayer_Network_Storage/$storageID/getActiveTransactions.json 

Note replace: $USERID $APIIKEY and $storageID 

このメソッドは、メソッドが空の結果を返してトランザクションが終了した場合に、ストレージ内で実行中のトランザクションを返します。

しかし、このアプローチでは欠点があります。トランザクションが作成されるまでに時間がかかることがあるので、トランザクションが表示されるまでAPIを繰り返し要求する必要があり、そうでない場合はすぐにトランザクションが実行されますそのトランザクションは数分でトランザクションが表示されない場合には、これを処理する必要がありますので、これが非常に速く完了している可能性が高いため、ストレージ上で別のアクションを開始できます。

関連する問題