85 Stonith *stonith_obj = NULL;
87 static bool need_init =
true;
88 static Stonith *(*st_new_fn) (
const char *) = NULL;
89 static void (*st_del_fn) (Stonith *) = NULL;
99 if (lha_agents_lib && st_new_fn && st_del_fn) {
100 stonith_obj = (*st_new_fn) (agent);
102 (*st_del_fn) (stonith_obj);
112 static gboolean need_init = TRUE;
116 char **type_list = NULL;
117 static char **(*type_list_fn) (void) = NULL;
118 static void (*type_free_fn) (
char **) = NULL;
122 type_list_fn = find_library_function(&lha_agents_lib,
125 type_free_fn = find_library_function(&lha_agents_lib,
127 "stonith_free_hostlist");
131 type_list = (*type_list_fn) ();
134 for (entry = type_list; entry != NULL && *entry; ++entry) {
139 if (type_list && type_free_fn) {
140 (*type_free_fn) (type_list);
174 static const char *no_parameter_info =
"<!-- no value -->";
176 Stonith *stonith_obj = NULL;
178 static gboolean need_init = TRUE;
179 static Stonith *(*st_new_fn) (
const char *) = NULL;
180 static const char *(*st_info_fn) (Stonith *, int) = NULL;
181 static void (*st_del_fn) (Stonith *) = NULL;
182 static void (*st_log_fn) (Stonith *, PILLogFun) = NULL;
196 if (lha_agents_lib && st_new_fn && st_del_fn && st_info_fn && st_log_fn) {
197 char *xml_meta_longdesc = NULL;
198 char *xml_meta_shortdesc = NULL;
200 char *meta_param = NULL;
201 char *meta_longdesc = NULL;
202 char *meta_shortdesc = NULL;
203 const char *timeout_str = NULL;
205 stonith_obj = (*st_new_fn) (agent);
207 (*st_log_fn) (stonith_obj, (PILLogFun) & stonith_plugin);
209 (*st_info_fn) (stonith_obj, ST_DEVICEDESCR));
210 if (meta_longdesc == NULL) {
211 crm_warn(
"no long description in %s's metadata.", agent);
212 meta_longdesc = strdup(no_parameter_info);
216 (*st_info_fn) (stonith_obj, ST_DEVICEID));
217 if (meta_shortdesc == NULL) {
218 crm_warn(
"no short description in %s's metadata.", agent);
219 meta_shortdesc = strdup(no_parameter_info);
223 (*st_info_fn) (stonith_obj, ST_CONF_XML));
224 if (meta_param == NULL) {
225 crm_warn(
"no list of parameters in %s's metadata.", agent);
226 meta_param = strdup(no_parameter_info);
228 (*st_del_fn) (stonith_obj);
231 crm_perror(LOG_ERR,
"Agent %s not found", agent);
236 (
char *)xmlEncodeEntitiesReentrant(NULL, (
const unsigned char *)meta_longdesc);
238 (
char *)xmlEncodeEntitiesReentrant(NULL, (
const unsigned char *)meta_shortdesc);
242 xml_meta_shortdesc, meta_param,
243 timeout_str, timeout_str, timeout_str);
245 xmlFree(xml_meta_longdesc);
246 xmlFree(xml_meta_shortdesc);
248 free(meta_shortdesc);
#define do_crm_log_alias(level, file, function, line, fmt, args...)
Log a message as if it came from a different code location.
int stonith__lha_validate(stonith_t *st, int call_options, const char *target, const char *agent, GHashTable *params, int timeout, char **output, char **error_output)