summaryrefslogtreecommitdiffstats
path: root/include/lrm/raexec.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lrm/raexec.h')
-rw-r--r--include/lrm/raexec.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/include/lrm/raexec.h b/include/lrm/raexec.h
new file mode 100644
index 0000000..0b69831
--- /dev/null
+++ b/include/lrm/raexec.h
@@ -0,0 +1,157 @@
+/*
+ * raexec.h: The universal interface of RA Execution Plugin
+ *
+ * Author: Sun Jiang Dong <sunjd@cn.ibm.com>
+ * Copyright (c) 2004 International Business Machines
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef RAEXEC_H
+#define RAEXEC_H
+#include <glib.h>
+#include <lrm/racommon.h>
+
+/* Uniform return value of executing RA */
+enum UNIFORM_RET_EXECRA {
+ EXECRA_EXEC_UNKNOWN_ERROR = -2,
+ EXECRA_NO_RA = -1,
+ EXECRA_OK = 0,
+ EXECRA_UNKNOWN_ERROR = 1,
+ EXECRA_INVALID_PARAM = 2,
+ EXECRA_UNIMPLEMENT_FEATURE = 3,
+ EXECRA_INSUFFICIENT_PRIV = 4,
+ EXECRA_NOT_INSTALLED = 5,
+ EXECRA_NOT_CONFIGURED = 6,
+ EXECRA_NOT_RUNNING = 7,
+ EXECRA_RUNNING_MASTER = 8,
+ EXECRA_FAILED_MASTER = 9,
+
+ /* For status command only */
+ EXECRA_RA_DEAMON_DEAD1 = 11,
+ EXECRA_RA_DEAMON_DEAD2 = 12,
+ EXECRA_RA_DEAMON_STOPPED = 13,
+ EXECRA_STATUS_UNKNOWN = 14
+};
+typedef enum UNIFORM_RET_EXECRA uniform_ret_execra_t;
+
+#define RA_MAX_NAME_LENGTH 240
+#define RA_MAX_DIRNAME_LENGTH 200
+#define RA_MAX_BASENAME_LENGTH 40
+
+/*
+ * RA Execution Interfaces
+ * The plugin usage is divided into two step. First to send out a command to
+ * execute a resource agent via calling function execra. Execra is a unblock
+ * function, always return at once. Then to call function post_query_result to
+ * get the RA exection result.
+*/
+struct RAExecOps {
+ /*
+ * Description:
+ * Launch a exection of a resource agent -- normally is a script
+ *
+ * Parameters:
+ * rsc_id: The resource instance id.
+ * rsc_type: The basename of a RA.
+ * op_type: The operation that hope RA to do, such as "start",
+ * "stop" and so on.
+ * cmd_params: The command line parameters need to be passed to
+ * the RA for a execution.
+ * env_params: The enviroment parameters need to be set for
+ * affecting the action of a RA execution. As for
+ * OCF style RA, it's the only way to pass
+ * parameter to the RA.
+ *
+ * Return Value:
+ * 0: RA execution is ok, while the exec_key is a valid value.
+ * -1: The RA don't exist.
+ * -2: There are invalid command line parameters.
+ * -3: Other unkown error when launching the execution.
+ */
+ int (*execra)(
+ const char * rsc_id,
+ const char * rsc_type,
+ const char * provider,
+ const char * op_type,
+ const int timeout,
+ GHashTable * params);
+
+ /*
+ * Description:
+ * Map the specific ret value to a uniform value.
+ *
+ * Parameters:
+ * ret_execra: the RA type specific ret value.
+ * op_type: the operation type
+ * std_output: the output which the RA write to stdout.
+ *
+ * Return Value:
+ * A uniform value without regarding RA type.
+ */
+ uniform_ret_execra_t (*map_ra_retvalue)(
+ int ret_execra
+ , const char * op_type
+ , const char * std_output);
+
+ /*
+ * Description:
+ * List all resource info of this class
+ *
+ * Parameters:
+ * rsc_info: a GList which item data type is rsc_info_t as
+ * defined above, containing all resource info of
+ * this class in the local machine.
+ *
+ * Return Value:
+ * >=0 : succeed. the RA type number of this RA class
+ * -1: failed due to invalid RA directory such as not existing.
+ * -2: failed due to other factors
+ */
+ int (*get_resource_list)(GList ** rsc_info);
+
+ /*
+ * Description:
+ * List all providers of this type
+ *
+ * Parameters:
+ * providers: a GList which item data type is string.
+ * the name of providers of the resource agent
+ *
+ * Return Value:
+ * >=0 : succeed. the provider number of this RA
+ * -1: failed due to invalid RA directory such as not existing.
+ * -2: failed due to other factors
+ */
+ int (*get_provider_list)(const char* ra_type, GList ** providers);
+
+ /*
+ * Description:
+ * List the metadata of the resource agent this class
+ *
+ * Parameters:
+ * rsc_type: the type of the ra
+ *
+ * Return Value:
+ * !NULL : succeed. the RA metadata.
+ * NULL: failed
+ */
+ char* (*get_resource_meta)(const char* rsc_type, const char* provider);
+};
+
+#define RA_EXEC_TYPE RAExec
+#define RA_EXEC_TYPE_S "RAExec"
+
+#endif /* RAEXEC_H */