31 update_synapse_ready(
synapse_t * synapse,
int action_id)
34 gboolean updates = FALSE;
39 synapse->
ready = TRUE;
40 for (lpc = synapse->
inputs; lpc != NULL; lpc = lpc->next) {
45 if (prereq->
id == action_id) {
46 crm_trace(
"Marking input %d of synapse %d confirmed", action_id, synapse->
id);
51 synapse->
ready = FALSE;
63 update_synapse_confirmed(
synapse_t * synapse,
int action_id)
66 gboolean updates = FALSE;
67 gboolean is_confirmed = TRUE;
73 for (lpc = synapse->
actions; lpc != NULL; lpc = lpc->next) {
78 if (action->
id == action_id) {
79 crm_trace(
"Confirmed: Action %d of Synapse %d", action_id, synapse->
id);
85 crm_trace(
"Synapse %d still not confirmed after action %d", synapse->
id, action_id);
89 if (is_confirmed && synapse->
confirmed == FALSE) {
105 gboolean updates = FALSE;
108 for (lpc = graph->
synapses; lpc != NULL; lpc = lpc->next) {
116 rc = update_synapse_confirmed(synapse, action->
id);
119 rc = update_synapse_ready(synapse, action->
id);
121 updates = updates || rc;
125 crm_trace(
"Updated graph with completed action %d", action->
id);
138 crm_trace(
"Checking pre-reqs for synapse %d", synapse->
id);
140 synapse->
ready = TRUE;
141 for (lpc = synapse->
inputs; lpc != NULL; lpc = lpc->next) {
146 crm_trace(
"Input %d for synapse %d not satisfied: not confirmed", prereq->
id, synapse->
id);
147 synapse->
ready = FALSE;
150 crm_trace(
"Input %d for synapse %d not satisfied: failed", prereq->
id, synapse->
id);
151 synapse->
ready = FALSE;
156 for (lpc = synapse->
actions; synapse->
ready && lpc != NULL; lpc = lpc->next) {
168 crm_trace(
"Deferring synapse %d: allowed", synapse->
id);
173 return synapse->
ready;
179 const char *
id = NULL;
183 id =
ID(action->
xml);
188 crm_trace(
"Executing pseudo-event: %s (%d)",
id, action->
id);
192 crm_trace(
"Executing rsc-event: %s (%d)",
id, action->
id);
196 const char *task = NULL;
202 crm_trace(
"Executing STONITH-event: %s (%d)",
id, action->
id);
206 crm_trace(
"Executing crm-event: %s (%d)",
id, action->
id);
210 crm_err(
"Failed on unsupported command type: %s (id=%s)", crm_element_name(action->
xml),
id);
219 CRM_CHECK(synapse != NULL,
return FALSE);
225 for (lpc = synapse->
actions; lpc != NULL; lpc = lpc->next) {
229 gboolean passed = FALSE;
232 passed = initiate_action(graph, action);
233 if (passed == FALSE) {
234 crm_err(
"Failed initiating <%s id=%d> in synapse %d",
235 crm_element_name(action->
xml), action->
id, synapse->
id);
250 int stat_log_level = LOG_DEBUG;
253 const char *status =
"In-progress";
267 crm_trace(
"Entering graph %d callback", graph->
id);
270 for (lpc = graph->
synapses; lpc != NULL; lpc = lpc->next) {
278 crm_trace(
"Synapse %d: confirmation pending", synapse->
id);
284 for (lpc = graph->
synapses; lpc != NULL; lpc = lpc->next) {
290 }
else if (synapse->
failed) {
299 if (should_fire_synapse(graph, synapse)) {
302 if(fire_synapse(graph, synapse) == FALSE) {
303 crm_err(
"Synapse %d failed to fire", synapse->
id);
304 stat_log_level = LOG_ERR;
322 stat_log_level = LOG_NOTICE;
327 stat_log_level = LOG_WARNING;
329 status =
"Terminated";
331 }
else if (graph->
skipped != 0) {
335 }
else if (graph->
fired == 0) {
340 "Transition %d (Complete=%d, Pending=%d,"
341 " Fired=%d, Skipped=%d, Incomplete=%d, Source=%s): %s",