Please enter search query.
Search <book_title>...
InfoScale™ 9.0 Cluster Server Agent Developer's Guide - AIX, Linux, Solaris, Windows
Last Published:
2025-04-13
Product(s):
InfoScale & Storage Foundation (9.0)
Platform: AIX,Linux,Solaris,Windows
- Introduction
- Agent entry point overview
- About agent entry points
- Agent entry points described
- About the action entry point
- About the info entry point
- Considerations for using C++ or script entry points
- About the agent information file
- About the ArgList and ArgListValues attributes
- Creating entry points in C++
- About creating entry points in C++
- Syntax for C++ entry points
- Agent framework primitives
- Agent Framework primitives for container support
- Creating entry points in scripts
- About creating entry points in scripts
- Syntax for script entry points
- Agent framework primitives
- VCSAG_GET_ATTR_VALUE
- Agent Framework primitives with container support
- Example script entry points
- Logging agent messages
- Building a custom agent
- Building a script based IMF-aware custom agent
- Creating XML file required for AMF plugins to do resource registration for online and offline state monitoring
- Testing agents
- Static type attributes
- About static attributes
- Static type attribute definitions
- AdvDbg
- ArgList
- State transition diagram
- Internationalized messages
- Troubleshooting VCS resource's unexpected behavior using First Failure Data Capture (FFDC)
- Appendix A. Using pre-5.0 VCS agents
Example: Using C++ and script entry points on UNIX
The following example shows how to build the FileOnOff agent using your own VCSAgStartup function, the C++ version of the monitor entry point, and script versions of online and offline entry points. This example implements the VCSAgStartup, online, offline, and monitor entry points only.
To implement the agent using VCSAgStartup, C++, and script entry points
- Create a directory for the agent:
mkdir /opt/VRTSvcs/src/agent/FileOnOff
- Copy the contents from the sample agent to the directory you created in the previous step:
cp -r /opt/VRTSvcs/src/agent/Sample/* /opt/VRTSvcs/src/agent/FileOnOff
- Change to the new directory:
cd /opt/VRTSvcs/src/agent/FileOnOff
- Edit the file agent.C and modify the VCSAgStartup()function (the last several lines) to match the following example:
// Description: This functions registers the entry points // void VCSAgStartup() { VCSAG_LOG_INIT("VCSAgStartup"); VCSAgSetLogCategory(10051); VCSAgInitEntryPointStruct(V51); VCSAgValidateAndSetEntryPoint(VCSAgEPMonitor, res_monitor); }
- Modify the res_monitor() function:
// Function: res_monitor // Description: Determine if the given file is online (file exists) // or offline (file does not exist). VCSAgResState res_monitor(const char *res_name, void **attr_val, int *conf_level) { int ret = 0; char *pathname = NULL; struct stat64 stat_buf; VCSAgResState state = VCSAgResUnknown; VCSAG_LOG_INIT("res_monitor"); /* * Get PathName attribute form attr_val parameter, passed to res_offline function and store * under pathname variable. * */ if (NULL == pathname) { return VCSAgResUnknown; } VCSAG_LOGDBG_MSG(VCS_DBG2, VCS_DEFAULT_FLAGS, "Checking if file %s exists or not", pathname); if (0 == stat64(pathname, &stat_buf)) { /* * If the pathname is a directory, return status as unknown */ if (S_ISDIR(stat_buf.st_mode) != 0) { VCSAG_LOG_MSG(VCS_ERROR, 2004, VCS_DEFAULT_FLAGS, "%s is a directory", pathname); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 2004, VCS_DEFAULT_FLAGS, "%s is a directory", pathname); *conf_level = 0; return VCSAgResUnknown; } *conf_level = 100; return VCSAgResOnline; } *conf_level = 0; return VCSAgResOffline; }
- Compile agent.C and build the agent by invoking make. (Makefile is provided.)
make
- Build the script entry points for the agent.
- Create a directory for the agent:
mkdir /opt/VRTSvcs/bin/FileOnOff
- Install the FileOnOff agent.