Cluster Server 7.3.1 エージェント開発者ガイド - AIX、Linux、Solaris、Windows
- 概要
- エージェントのエントリポイントの概要
- エージェントのエントリポイントについて
- エージェントエントリポイントの説明
- action エントリポイントについて
- info エントリポイントについて
- C++ またはスクリプトエントリポイントの使用上の注意事項
- エージェント情報ファイルについて
- ArgList 属性と ArgListValues 属性について
- C++ でのエントリポイントの作成
- C++ でのエントリポイントの作成について
- C++ のエントリポイントの構文
- エージェントフレームワークの基本関数
- コンテナサポートのためのエージェントフレームワーク基本関数
- スクリプトでのエントリポイントの作成
- スクリプトでのエントリポイントの作成について
- スクリプトエントリポイントの構文
- エージェントフレームワークの基本関数
- VCSAG_GET_ATTR_VALUE
- コンテナをサポートするエージェントフレームワーク基本関数
- スクリプトのエントリポイントの例
- エージェントメッセージのログ
- カスタムエージェントの作成
- スクリプトベースの IMF 対応カスタムエージェントの作成
- エージェントのテスト
- 静的タイプ属性
- 静的属性について
- 静的タイプ属性の定義
- AdvDbg
- ArgList
- 状態の遷移図
- 国際化されたメッセージ
- First Failure Data Capture(FFDC)を使用した VCS リソースの予期しない動作のトラブルシューティング
- 付録 A. 5.0 より前の VCS エージェントの使用
C++ action の構文
unsigned int action(const char *res_name, const char *action_token, void **attr_val, char **args, char *action_output);
C++ の action エントリポイントに渡されるパラメータは、ユーザーが実行する例を使用して次のように記述されます。
$> hares -action res1 myaction...
これをコマンドラインまたは同等の GUI から実行します。
res_name: 入力パラメータです。そのコンテキストで action エントリポイントが呼び出されるリソースの名前です。上の例では、res_name は「res1」に設定されます。
action_token: 入力パラメータです。ユーザーが実行したい処理の名前を与えます。上の例では、action_token は「myaction」に設定されます。
ユーザーが
$> hares -action res1 youraction ...
を実行した場合は、上と同じ関数が呼び出されますが、action_token が「youraction」に設定されます。このパラメータによって、1 つのエージェントが別の処理を実装し、すべての処理を上記の同じ関数内で対応できるようになります。
attr_val: 入力パラメータです。処理が呼び出されるリソースの ArgListValues を含んでいます。
args: 入力パラメータです。「hares -action」コマンドを呼び出すときに「-actionargs」スイッチに渡される文字列のリストを含んでいます。
$> hares -action res1 myaction -actionargs foo bar fubar -sys ...
これは、「foo」、「bar」、「fubar」を args パラメータで与えます。
action_output: 出力パラメータです。エージェントの開発者が「hares -action」コマンドを呼び出すことの結果としてユーザーに参照してほしいすべての出力を、このパラメータによってポインタが指定されているバッファに格納する必要があります。ユーザーに表示される文字の最大数は 2048(2K)文字です。
action エントリポイントを実装する関数の名前をエージェントに登録するには、VCSAgValidateAndSetEntryPoint() API を使います。
次に例を示します。
extern "C" unsigned int res_action (const char *res_name, const char *token,void **attr_val, char **args, char *action_output) { const int output_buffer_size = 2048; // // checks on the attr_val entry point arg list // perform an action based on the action token passed in if (!strcmp(token, "token1")) { // // Perform action corresponding to token1 // } else if (!strcmp(token, "token2") { // // Perform action corresponding to token2 // } : : : } else { // // a token for which no action is implemented yet // VCSAgSnprintf(action_output, output_buffer_size, "No implementation provided for token(%s)", token); } // // Any other checks to be done // // // return value should indicate whether the ep succeeded or // not: // return 0 on success // any other value on failure // if (success) { return 0; } else { return 1; } } void VCSAgStartup() { VCSAG_LOG_INIT("VCSAgStartup"); VCSAgSetLogCategory(10051); VCSAgInitEntryPointStruct(V51); VCSAgValidateAndSetEntryPoint(VCSAgEPAction, res_action); }