35 crm_trace(
"Setting alert key %s = '%s'", *key, value);
45 char *value_s = crm_itoa(value);
47 head = alert_key2param(head, name, value_s);
58 head = alert_key2param(head, name, value_s);
64 set_ev_kv(gpointer key, gpointer value, gpointer user_data)
69 crm_trace(
"Setting environment variable %s='%s'",
70 (
char*)key, (
char*)value);
79 g_hash_table_foreach(entry->
envvars, set_ev_kv, &head);
89 is_target_alert(
char **list,
const char *value)
91 int target_list_num = 0;
100 target_list_num = g_strv_length(list);
102 for (
int cnt = 0; cnt < target_list_num; cnt++) {
103 if (strcmp(list[cnt], value) == 0) {
129 bool any_success = FALSE, any_failure = FALSE;
130 const char *kind_s = crm_alert_flag2text(kind);
132 struct timeval tv_now;
133 char timestamp_epoch[20];
134 char timestamp_usec[7];
139 for (GList *iter = g_list_first(alert_list); iter; iter = g_list_next(iter)) {
145 if (is_not_set(entry->
flags, kind)) {
146 crm_trace(
"Filtering unwanted %s alert to %s via %s",
154 crm_trace(
"Filtering unwanted attribute '%s' alert to %s via %s",
160 if (gettimeofday(&tv_now, NULL) == 0) {
164 crm_info(
"Sending %s alert via %s to %s",
168 for (head = params; head != NULL; head = head->
next) {
184 snprintf(timestamp_epoch,
sizeof(timestamp_epoch),
"%lld",
185 (
long long) tv_now.tv_sec);
187 snprintf(timestamp_usec,
sizeof(timestamp_usec),
"%06d", now->
useconds);
191 copy_params = alert_envvar2params(copy_params, entry);
209 return (any_success? -1 : -2);
231 const char *node, uint32_t nodeid,
232 const char *attr_name,
const char *attr_value)
268 const char *node, uint32_t nodeid,
const char *state)
281 rc = exec_alert_list(lrmd, alert_list,
crm_alert_node, NULL, params);
303 const char *target,
const char *task,
const char *desc,
316 params = alert_key2param_int(params,
CRM_alert_rc, op_rc);
378 params = alert_key2param(params,
CRM_alert_desc, services_ocf_exitcode_str(op->
rc));
#define CRM_CHECK(expr, failure_action)
const char * crm_alert_keys[CRM_ALERT_INTERNAL_KEY_MAX][3]
const char * pcmk_strerror(int rc)
int lrmd_send_resource_alert(lrmd_t *lrmd, GList *alert_list, const char *node, lrmd_event_data_t *op)
int rsc_op_expected_rc(lrmd_event_data_t *event)
char * crm_time_format_hr(const char *format, crm_time_hr_t *hr_dt)
Wrappers for and extensions to glib mainloop.
int(* exec_alert)(lrmd_t *lrmd, const char *alert_id, const char *alert_path, int timeout, lrmd_key_value_t *params)
Execute an alert agent.
int lrmd_send_node_alert(lrmd_t *lrmd, GList *alert_list, const char *node, uint32_t nodeid, const char *state)
#define crm_trace(fmt, args...)
lrmd_key_value_t * lrmd_key_value_add(lrmd_key_value_t *kvp, const char *key, const char *value)
struct lrmd_key_value_s * next
void lrmd_key_value_freeall(lrmd_key_value_t *head)
Cluster status and scheduling.
lrmd_api_operations_t * cmds
int lrmd_send_fencing_alert(lrmd_t *lrmd, GList *alert_list, const char *target, const char *task, const char *desc, int op_rc)
crm_time_hr_t * crm_time_timeval_hr_convert(crm_time_hr_t *target, struct timeval *tv)
#define crm_err(fmt, args...)
char ** select_attribute_name
#define safe_str_eq(a, b)
int lrmd_send_attribute_alert(lrmd_t *lrmd, GList *alert_list, const char *node, uint32_t nodeid, const char *attr_name, const char *attr_value)
char * crm_strdup_printf(char const *format,...) __attribute__((__format__(__printf__
#define crm_info(fmt, args...)