検索クエリーを入力してください
<book_title> を検索 ...
Cluster Server 7.3.1 エージェント開発者ガイド - AIX、Linux、Solaris、Windows
Last Published:
2018-01-17
Product(s):
InfoScale & Storage Foundation (7.3.1)
- 概要
- エージェントのエントリポイントの概要
- エージェントのエントリポイントについて
- エージェントエントリポイントの説明
- 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++ エージェントで使用されるログ用 API の例
#include <stdio.h> #include <locale.h> #include "VCSAgApi.h" void res_attr_changed(const char *res_name, const char *changed_res_name,const char *changed_attr_name, void **new_val) { /* * NOT REQUIRED if the function is empty or is not logging * any messages to the agent log file */ VCSAG_LOG_INIT("res_attr_changed"); } extern "C" unsigned int res_clean(const char *res_name, VCSAgWhyClean wc, void **attr_val) { VCSAG_LOG_INIT("res_clean"); if ((attr_val) && (*attr_val)) { if ((remove((CHAR *)(*attr_val)) == 0) || (errno == ENOENT)) { return 0; // Success } } return 1; // Failure } void res_close(const char *res_name, void **attr_val) { VCSAG_LOG_INIT("res_close"); } // // Determine if the given file is online (file exists) or // offline (file does not exist). // extern "C" VCSAgResState res_monitor(const char *res_name, void **attr_val, int *conf_level) { VCSAG_LOG_INIT("res_monitor"); VCSAgResState state = VCSAgResUnknown; *conf_level = 0; /* * This msg will be printed for all resources if VCS_DBG4 * is enabled for the resource type. Else it will be * logged only for that resource that has the dbg level * VCS_DBG4 enabled */ VCSAG_RES_LOG_MSG(VCS_DBG4, VCS_DEFAULT_FLAGS, "PathName is(%s)", (CHAR *)(*attr_val)); if ((attr_val) && (*attr_val)) { struct stat stat_buf; if ( (stat((CHAR *)(* attr_val), &stat_buf) == 0) && (strlen((CHAR *)(* attr_val)) != 0) ) { state = VCSAgResOnline; *conf_level = 100; } else { state = VCSAgResOffline; *conf_level = 0; } } VCSAG_RES_LOG_MSG(VCS_DBG7, VCS_DEFAULT_FLAGS, "State is (%d)", (int)state); return state; } extern "C" unsigned int res_online(const char *res_name, void **attr_val) { int fd = -1; VCSAG_LOG_INIT("res_online"); if ((attr_val) && (*attr_val)) { if (strlen((CHAR *)(* attr_val)) == 0) { VCSAG_LOG_MSG(VCS_WARNING, 3001, VCS_DEFAULT_FLAGS, "The value for PathName attribute is not specified"); VCSAG_CONSOLE_LOG_MSG(VCS_WARNING, 3001, VCS_DEFAULT_FLAGS, "The value for PathName attribute is not specified"); return 0; } if (fd = creat((CHAR *)(*attr_val), S_IRUSR|S_IWUSR) < 0) { VCSAG_LOG_MSG(VCS_ERROR, 3002, VCS_DEFAULT_FLAGS, "Resource could not be brought up because, " "the attempt to create the file(%s) failed " "with error(%d)", (CHAR *)(*attr_val), errno); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 3002, VCS_DEFAULT_FLAGS, "Resource could not be brought up because, " "the attempt to create the file(%s) failed " "with error(%d)", (CHAR *)(*attr_val), errno); return 0; } close(fd); } return 0; } extern "C" unsigned int res_offline(const char *res_name, void **attr_val) { VCSAG_LOG_INIT("res_offline"); if ((attr_val) && (*attr_val) && (remove((CHAR*) (*attr_val)) != 0) && (errno != ENOENT)) { VCSAG_LOG_MSG(VCS_ERROR, 14002, VCS_DEFAULT_FLAGS, "Resource could not be brought down because, the attempt to remove the file(%s) failed with error(%d)", (CHAR *)(*attr_val), errno); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 14002, VCS_DEFAULT_FLAGS, "Resource could not be brought down because, the attempt to remove the file(%s) failed with error(%d)", (CHAR *)(*attr_val), errno); } return 0; } void res_open(const char *res_name, void **attr_val) { VCSAG_LOG_INIT("res_open"); } VCSEXPORT void VCSDECL VCSAgStartup() { VCSAG_LOG_INIT("VCSAgStartup"); VCSAgInitEntryPointStruct(V51); VCSAgValidateAndSetEntryPoint(VCSAgEPMonitor, res_monitor); VCSAgValidateAndSetEntryPoint(VCSAgEPOnline, res_online); VCSAgValidateAndSetEntryPoint(VCSAgEPOffline, res_offline); VCSAgValidateAndSetEntryPoint(VCSAgEPClean, res_clean); VCSAgSetLogCategory(2001); char *s = setlocale(LC_ALL, NULL); VCSAG_LOGDBG_MSG(VCS_DBG1, VCS_DEFAULT_FLAGS, "Locale is %s", s); }