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++ entry points on UNIX
The example in this section shows how to build the FileOnOff agent using your own VCSAgStartup function and the C++ version of online, offline, and monitor entry points. This example implements the VCSAgStartup, online, offline, and monitor entry points only.
To use VCSAgStartup and C++ entry points
- 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); VCSAgValidateAndSetEntryPoint(VCSAgEPOnline, res_online); VCSAgValidateAndSetEntryPoint(VCSAgEPOffline, res_offline); }
- Modify res_online():
// This is a C++ implementation of the online entry // point for the FileOnOff resource type. This function // brings online a FileOnOff resource by creating the // corresponding file. It is assumed that the complete // pathname of the file will be passed as the first // ArgList attribute. unsigned int res_online(const char *res_name, void **attr_val) { int fd = -1; int ret = 0; char *pathname = NULL; VCSAG_LOG_INIT("res_online"); /* * Get PathName attribute form attr_val parameter, passed to res_online function and store * it under pathname variable. * */ if (NULL == pathname) { return 0; } VCSAG_LOGDBG_MSG(VCS_DBG2, VCS_DEFAULT_FLAGS, "Creating file %s", pathname); if ((fd = open(pathname, S_IRUSR|S_IWUSR)) < 0) { VCSAG_LOG_MSG(VCS_ERROR, 2003, VCS_DEFAULT_FLAGS, "Attempt to create the file failed with errno=%d", errno); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 2003, VCS_DEFAULT_FLAGS, "Attempt to create the file failed with errno=%d", errno); } else { close(fd); } return 0; }
- Modify res_offline():
// Function: res_offline // Description: This function deletes the file // unsigned int res_offline(const char *res_name, void **attr_val) { char *pathname = NULL; VCSAG_LOG_INIT("res_offline"); /* * Get PathName attribute form attr_val parameter, passed to res_offline function and store * under pathname variable. * */ if (NULL == pathname) { return 0; /* success: nothing to remove */ } VCSAG_LOGDBG_MSG(VCS_DBG2, VCS_DEFAULT_FLAGS, "Removing file %s", pathname); if ((0 != remove(pathname)) && (ENOENT != errno)) { VCSAG_LOG_MSG(VCS_ERROR, 2002, VCS_DEFAULT_FLAGS, "Attempt to remove the file failed with errno=%d", errno); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 2002, VCS_DEFAULT_FLAGS, "Attempt to remove the file failed with errno=%d", errno); return 1; /* failure: attempt to remove failed */ } return 0; /* success: file removed */ }
- Modify the res_monitor(), function.
- Compile agent.C and build the agent by invoking make. (Makefile is provided.)
make
- Create the directory for the agent binaries:
mkdir /opt/VRTSvcs/bin/FileOnOff
- Install the FileOnOff agent.
make install AGENT=FileOnOff