34 struct dirent **namelist;
39 char buffer[FILENAME_MAX + 1];
42 if (
'.' == namelist[file_num]->d_name[0]) {
43 free(namelist[file_num]);
48 free(namelist[file_num]);
53 namelist[file_num]->d_name);
54 if (stat(buffer, &prop) == 0 && S_ISREG(prop.st_mode)) {
56 namelist[file_num]->d_name);
60 free(namelist[file_num]);
81 xmlNode *actions = NULL;
82 xmlXPathObject *xpathObj = NULL;
88 crm_warn(
"Could not execute metadata action for %s: %s " 103 if (buffer == NULL) {
104 crm_warn(
"Metadata action for %s returned no data", agent);
112 crm_warn(
"Metadata for %s is invalid", agent);
117 if (numXpathResults(xpathObj) > 0) {
124 if (numXpathResults(xpathObj) <= 0) {
138 xpathObj =
xpath_search(xml,
"//parameter[@name='port']");
139 if (numXpathResults(xpathObj) > 0) {
148 if (buffer == NULL) {
164 int rc = stat(buffer, &prop);
167 return (rc >= 0) && S_ISREG(prop.st_mode);
172 const char *agent, GHashTable *params,
int timeout,
173 char **output,
char **error_output)
177 target, 0, timeout, params,
void stonith__destroy_action(stonith_action_t *action)
struct stonith_action_s stonith_action_t
#define pcmk_err_schema_validation
bool stonith__agent_is_rhcs(const char *agent)
const char * pcmk_strerror(int rc)
void stonith__action_result(stonith_action_t *action, int *rc, char **output, char **error_output)
int stonith__execute(stonith_action_t *action)
int alphasort(const void *dirent1, const void *dirent2)
const char * crm_xml_add(xmlNode *node, const char *name, const char *value)
Create an XML attribute with specified name and value.
int stonith__rhcs_metadata(const char *agent, int timeout, char **output)
Execute RHCS-compatible agent's meta-data action.
bool crm_starts_with(const char *str, const char *prefix)
Check whether a string starts with a certain sequence.
xmlNode * string2xml(const char *input)
stonith_key_value_t * stonith_key_value_add(stonith_key_value_t *kvp, const char *key, const char *value)
#define crm_warn(fmt, args...)
xmlNode * create_xml_node(xmlNode *parent, const char *name)
#define CRM_DEFAULT_OP_TIMEOUT_S
#define RH_STONITH_PREFIX
void free_xml(xmlNode *child)
int stonith__list_rhcs_agents(stonith_key_value_t **devices)
xmlXPathObjectPtr xpath_search(xmlNode *xml_top, const char *path)
xmlNode * getXpathResult(xmlXPathObjectPtr xpathObj, int index)
stonith_action_t * stonith_action_create(const char *agent, const char *_action, const char *victim, uint32_t victim_nodeid, int timeout, GHashTable *device_args, GHashTable *port_map)
int stonith__rhcs_validate(stonith_t *st, int call_options, const char *target, const char *agent, GHashTable *params, int timeout, char **output, char **error_output)
void freeXpathObject(xmlXPathObjectPtr xpathObj)
char * crm_strdup_printf(char const *format,...) __attribute__((__format__(__printf__
char * dump_xml_formatted_with_text(xmlNode *msg)