crm_debug_3("Ordering %s before %s (%d->%d)", trigger->uuid, confirm->uuid, confirm->id, trigger->id);
pe_notify(resource_t *rsc, node_t *node, action_t *op, action_t *confirm,	  crm_data_t *parent, pe_working_set_t *data_set){	char *key = NULL;	action_t *trigger = NULL;	action_wrapper_t *wrapper = NULL;	const char *value = NULL;	const char *task = NULL;		if(op == NULL || confirm == NULL) {		return;	}	CRM_DEV_ASSERT(node != NULL);	value = g_hash_table_lookup(op->extra, "notify_type");	task = g_hash_table_lookup(op->extra, "notify_operation");	crm_debug_2("Creating actions for %s: %s (%s-%s)",		    op->uuid, rsc->id, value, task);		key = generate_notify_key(rsc->id, value, task);		trigger = custom_action(		rsc, key, op->task, node, op->optional, data_set);	g_hash_table_foreach(op->extra, dup_attr, trigger->extra);	trigger->extra_xml = parent;	/* pseudo_notify before notify */	crm_debug_3("Ordering %s before %s (%d->%d)",		op->uuid, trigger->uuid, trigger->id, op->id);	crm_malloc0(wrapper, sizeof(action_wrapper_t));	wrapper->action = op;	wrapper->type = pe_ordering_manditory;		trigger->actions_before = g_list_append(		trigger->actions_before, wrapper);	wrapper = NULL;	crm_malloc0(wrapper, sizeof(action_wrapper_t));	wrapper->action = trigger;	wrapper->type = pe_ordering_manditory;	op->actions_after = g_list_append(		op->actions_after, wrapper);	/* notify before pseudo_notified */	crm_debug_3("Ordering %s before %s (%d->%d)",		    trigger->uuid, confirm->uuid, confirm->id, trigger->id);	value = g_hash_table_lookup(op->extra, "notify_confirm");	if(crm_is_true(value)) {		wrapper = NULL;		crm_malloc0(wrapper, sizeof(action_wrapper_t));		wrapper->action = trigger;		wrapper->type = pe_ordering_manditory;		confirm->actions_before = g_list_append(			confirm->actions_before, wrapper);		wrapper = NULL;		crm_malloc0(wrapper, sizeof(action_wrapper_t));		wrapper->action = confirm;		wrapper->type = pe_ordering_manditory;		trigger->actions_after = g_list_append(			trigger->actions_after, wrapper);	}	}