検索クエリーを入力してください
<book_title> を検索 ...
Cluster Server 7.3.1 エージェント開発者ガイド - AIX、Linux、Solaris、Windows
Last Published:
2018-01-17
Product(s):
InfoScale & Storage Foundation (7.3.1)
- 概要
- エージェントのエントリポイントの概要
- エージェントのエントリポイントについて
- エージェントエントリポイントの説明
- open エントリポイントについて
- monitor エントリポイントについて
- online エントリポイントについて
- offline エントリポイントについて
- clean エントリポイントについて
- action エントリポイントについて
- info エントリポイントについて
- attr_changed エントリポイントについて
- close エントリポイントについて
- shutdown エントリポイントについて
- imf_init エントリポイントについて
- imf_register エントリポイントについて
- imf_getnotification エントリポイントについて
- migrate エントリポイントについて
- meter エントリポイントについて
- エントリポイントの戻り値
- C++ またはスクリプトエントリポイントの使用上の注意事項
- エージェント情報ファイルについて
- ArgList 属性と ArgListValues 属性について
- C++ でのエントリポイントの作成
- C++ でのエントリポイントの作成について
- データ構造
- C++ のエントリポイントの構文
- エージェントフレームワークの基本関数
- VCSAgGetMonitorLevel
- VCSAgGetFwVersion
- VCSAgGetRegVersion
- VCSAgRegisterEPStruct
- VCSAgSetCookie2
- VCSAgRegister
- VCSAgUnregister
- VCSAgGetCookie
- VCSAgStrlcpy
- VCSAgStrlcat
- VCSAgSnprintf
- VCSAgCloseFile
- VCSAgDelString
- VCSAgExec
- VCSAgExecWithTimeout
- VCSAgGenSnmpTrap
- VCSAgSendTrap
- VCSAgLockFile
- VCSAgInitEntryPointStruct
- VCSAgSetStackSize
- VCSAgUnlockFile
- VCSAgValidateAndSetEntryPoint
- VCSAgSetLogCategory
- VCSAgGetProductName
- VCSAgMonitorReturn
- VCSAgSetResEPTimeout
- VCSAgDecryptKey
- VCSAgGetConfDir
- VCSAgGetHomeDir
- VCSAgGetLogDir
- VCSAgGetSystemName
- VCSAG_CONSOLE_LOG_MSG
- VCSAG_LOG_MSG
- VCSAG_LOGDBG_MSG
- VCSAG_RES_LOG_MSG
- コンテナサポートのためのエージェントフレームワーク基本関数
- スクリプトでのエントリポイントの作成
- スクリプトでのエントリポイントの作成について
- スクリプトエントリポイントの構文
- エージェントフレームワークの基本関数
- VCSAG_GET_MONITOR_LEVEL
- VCSAG_GET_AGFW_VERSION
- VCSAG_GET_REG_VERSION
- VCSAG_SET_RES_EP_TIMEOUT
- VCSAG_GET_ATTR_VALUE
- VCSAG_SET_RESINFO
- VCSAG_MONITOR_EXIT
- VCSAG_SYSTEM
- VCSAG_SU
- VCSAG_RETURN_IMF_RESID
- VCSAG_RETURN_IMF_EVENT
- VCSAG_BLD_PSCOMM
- VCSAG_PHANTOM_STATE
- VCSAG_SET_ENVS
- VCSAG_LOG_MSG
- VCSAG_LOGDBG_MSG
- VCSAG_SQUEEZE_SPACES
- コンテナをサポートするエージェントフレームワーク基本関数
- スクリプトのエントリポイントの例
- エージェントメッセージのログ
- カスタムエージェントの作成
- スクリプトベースの IMF 対応カスタムエージェントの作成
- エージェントのテスト
- 静的タイプ属性
- 静的属性について
- 静的タイプ属性の定義
- ActionTimeout
- AdvDbg
- AEPTimeout
- AgentClass
- AgentDirectory
- AgentFailedOn
- AgentFile
- AgentPriority
- AgentReplyTimeout
- AgentStartTimeout
- AlertOnMonitorTimeouts
- ArgList
- AttrChangedTimeout
- AvailableMeters
- CleanRetryLimit
- CleanTimeout
- CloseTimeout
- ContainerOpts
- ConfInterval
- EPClass
- EPPriority
- ExternalStateChange
- FaultOnMonitorTimeouts
- FaultPropagation
- FireDrill
- IMF
- IMFRegList
- InfoInterval
- InfoTimeout
- IntentionalOffline
- LevelTwoMonitorFreq
- LogDbg
- LogFileSize
- LogViaHalog
- ManageFaults
- Meters
- MeterControl
- MeterRegList
- MeterRetryLimit
- MeterTimeout
- MonitorInterval
- MonitorStatsParam
- MonitorTimeout
- MigrateTimeout
- MigrateWaitLimit
- NumThreads
- OfflineMonitorInterval
- OfflineTimeout
- OfflineWaitLimit
- OnlineClass
- OnlinePriority
- OnlineRetryLimit
- OnlineTimeout
- OnlineWaitLimit
- OpenTimeout
- Operations
- RegList
- RestartLimit
- ScriptClass
- ScriptPriority
- SourceFile
- SupportedActions
- SupportedOperations
- ToleranceLimit
- 状態の遷移図
- 国際化されたメッセージ
- 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);
}