Page MenuHomeClusterLabs Projects

No OneTemporary

diff --git a/crm/pengine/clone.c b/crm/pengine/clone.c
index aeea85a234..4700d21c5f 100644
--- a/crm/pengine/clone.c
+++ b/crm/pengine/clone.c
@@ -1,1307 +1,1309 @@
/* $Id: clone.c,v 1.6 2006/07/18 06:19:33 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <portability.h>
#include <crm/msg_xml.h>
#include <allocate.h>
#include <utils.h>
#include <lib/crm/pengine/utils.h>
void clone_create_notifications(
resource_t *rsc, action_t *action, action_t *action_complete,
pe_working_set_t *data_set);
typedef struct clone_variant_data_s
{
resource_t *self;
int clone_max;
int clone_node_max;
int active_clones;
int max_nodes;
gboolean interleave;
gboolean ordered;
crm_data_t *xml_obj_child;
gboolean notify_confirm;
GListPtr child_list; /* resource_t* */
} clone_variant_data_t;
void child_stopping_constraints(
clone_variant_data_t *clone_data, enum pe_ordering type,
resource_t *child, resource_t *last, pe_working_set_t *data_set);
void child_starting_constraints(
clone_variant_data_t *clone_data, enum pe_ordering type,
resource_t *child, resource_t *last, pe_working_set_t *data_set);
#define get_clone_variant_data(data, rsc) \
CRM_ASSERT(rsc->variant == pe_clone || rsc->variant == pe_master); \
data = (clone_variant_data_t *)rsc->variant_opaque;
void clone_set_cmds(resource_t *rsc)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
clone_data->self->cmds = &resource_class_alloc_functions[clone_data->self->variant];
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds = &resource_class_alloc_functions[child_rsc->variant];
child_rsc->cmds->set_cmds(child_rsc);
);
}
int clone_num_allowed_nodes(resource_t *rsc)
{
int num_nodes = 0;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
/* what *should* we return here? */
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
int tmp_num_nodes = child_rsc->cmds->num_allowed_nodes(child_rsc);
if(tmp_num_nodes > num_nodes) {
num_nodes = tmp_num_nodes;
}
);
return num_nodes;
}
static gint sort_rsc_provisional(gconstpointer a, gconstpointer b)
{
const resource_t *resource1 = (const resource_t*)a;
const resource_t *resource2 = (const resource_t*)b;
CRM_ASSERT(resource1 != NULL);
CRM_ASSERT(resource2 != NULL);
if(resource1->provisional == resource2->provisional) {
return 0;
} else if(resource1->provisional) {
return 1;
} else if(resource2->provisional) {
return -1;
}
CRM_CHECK(FALSE, return 0);
return 0;
}
static resource_t *
find_clone_child(resource_t *rsc, GListPtr resource_list)
{
crm_debug("foo");
slist_iter(
child, resource_t, resource_list, lpc,
if(child->parent) {
crm_debug("%p / %p vs. %s / %s", rsc, child->parent, rsc->id, child->parent->id);
if(child->parent == rsc) {
return child;
}
} else {
crm_debug("Child %s has no parent", child->id);
}
);
return NULL;
}
node_t *
clone_color(resource_t *rsc, pe_working_set_t *data_set)
{
int local_node_max = 0;
GListPtr node_list = NULL;
int reverse_pointer = 0;
int allocated = 0, pre_allocated = 0;
/* int level = LOG_ERR; */
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
if(clone_data->self->provisional == FALSE) {
return NULL;
}
local_node_max = clone_data->clone_node_max;
clone_data->max_nodes = rsc->cmds->num_allowed_nodes(rsc);
/* give already allocated resources every chance to run on the node
* specified. other resources can be moved/started where we want
* as required
*/
clone_data->child_list = g_list_sort(
clone_data->child_list, sort_rsc_provisional);
crm_debug_2("Coloring children of: %s", rsc->id);
/* rsc->fns->print(rsc, "alloc: ", */
/* pe_print_details|pe_print_dev|pe_print_log, &level); */
clone_data->self->allowed_nodes = g_list_sort(
clone_data->self->allowed_nodes, sort_node_weight);
if(rsc->stickiness <= 0) {
while(local_node_max > 1
&& clone_data->max_nodes * (local_node_max -1)
>= clone_data->clone_max) {
local_node_max--;
crm_debug("Dropped the effective value of"
" clone_node_max to: %d",
local_node_max);
}
}
slist_iter(child, resource_t, clone_data->child_list, lpc2,
node_t *current = NULL;
node_t *chosen = NULL;
if(child->running_on != NULL) {
current = child->running_on->data;
}
if(current == NULL) {
crm_debug_2("Not active: %s", child->id);
continue;
} else if(can_run_resources(current) == FALSE) {
crm_debug_2("Node cant run resources: %s",
current->details->uname);
continue;
} else if(g_list_length(child->running_on) != 1) {
crm_debug("active != 1: %s", child->id);
continue;
}
chosen = pe_find_node_id(
clone_data->self->allowed_nodes, current->details->id);
if(chosen == NULL) {
/* unmanaged mode */
chosen = current;
}
if(chosen->count >= local_node_max) {
crm_warn("Node %s too full for: %s",
chosen->details->uname,
child->id);
continue;
} else if(allocated >= clone_data->clone_max) {
crm_debug_2("Reached maximum allocation: %s", child->id);
break;
}
chosen->weight = merge_weights(chosen->weight, child->stickiness);
if(native_assign_node(child, NULL, chosen)) {
allocated++;
}
/* native_assign_node(clone_data->self, NULL, current); */
);
crm_debug("Running: Total=%d, New=%d, Max=%d",
pre_allocated+allocated, allocated, clone_data->clone_max);
if(clone_data->max_nodes) {
local_node_max = (int) (clone_data->clone_max / clone_data->max_nodes);
if(local_node_max < 1) {
local_node_max = 1;
}
}
if(local_node_max > clone_data->clone_node_max) {
local_node_max = clone_data->clone_node_max;
}
pre_allocated = allocated;
allocated = 0;
if(rsc->stickiness != 0) {
clone_data->self->allowed_nodes = g_list_sort(
clone_data->self->allowed_nodes, sort_node_weight);
}
/* distribute a constant spread */
node_list = clone_data->self->allowed_nodes;
slist_iter(child, resource_t, clone_data->child_list, lpc2,
if(allocated+pre_allocated >= clone_data->clone_max) {
break;
}
if(child->provisional == FALSE) {
crm_debug_3("Spread: Skipping allocated resource: %s", child->id);
continue;
}
while(node_list && local_node_max <= ((node_t*)node_list->data)->count) {
node_list = node_list->next;
}
if(node_list) {
allocated++;
native_assign_node(child, NULL, node_list->data);
}
);
crm_debug("Spread: Total=%d, New=%d, Max=%d",
pre_allocated+allocated, allocated, clone_data->clone_max);
CRM_ASSERT(pre_allocated+allocated <= clone_data->clone_max);
pre_allocated += allocated;
allocated = 0;
/* allocate the rest - if possible */
if(local_node_max < clone_data->clone_node_max) {
local_node_max++;
- node_list = clone_data->self->allowed_nodes;
-
- slist_iter(child, resource_t, clone_data->child_list, lpc2,
- if(child->provisional == FALSE) {
- crm_debug_3("Remainder: Skipping allocated resource: %s", child->id);
- continue;
- }
-
- if(node_list && (pre_allocated+allocated) >= clone_data->clone_max) {
- crm_debug("Allocated maximum possible clone instances");
- node_list = NULL;
- }
-
- while(node_list && local_node_max <= ((node_t*)node_list->data)->count) {
- node_list = node_list->next;
- }
-
- if(node_list) {
- allocated++;
- native_assign_node(child, NULL, node_list->data);
+ }
+
+ node_list = clone_data->self->allowed_nodes;
- } else {
- crm_debug("Child %s not allocated", child->id);
- native_assign_node(child, NULL, NULL);
- }
+ slist_iter(child, resource_t, clone_data->child_list, lpc2,
+ if(child->provisional == FALSE) {
+ crm_debug("Remainder: Skipping allocated resource: %s", child->id);
+ continue;
+ }
+
+ crm_debug("Remainder: Processing: %s", child->id);
+ if(node_list && (pre_allocated+allocated) >= clone_data->clone_max) {
+ crm_debug("Allocated maximum possible clone instances");
+ node_list = NULL;
+ }
+
+ while(node_list && local_node_max <= ((node_t*)node_list->data)->count) {
+ node_list = node_list->next;
+ }
+
+ if(node_list) {
+ allocated++;
+ native_assign_node(child, NULL, node_list->data);
- );
+ } else {
+ crm_debug("Child %s not allocated", child->id);
+ native_assign_node(child, NULL, NULL);
+ }
+
+ );
- crm_debug("Rest: Total=%d, New=%d, Max=%d", pre_allocated, allocated, clone_data->clone_max);
- CRM_ASSERT(pre_allocated+allocated <= clone_data->clone_max);
- }
+ crm_debug("Remainder: Total=%d, New=%d, Max=%d", pre_allocated, allocated, clone_data->clone_max);
+ CRM_ASSERT(pre_allocated+allocated <= clone_data->clone_max);
clone_data->self->provisional = FALSE;
if(rsc->stickiness >= INFINITY) {
return NULL;
}
/* observe node preferences */
reverse_pointer = g_list_length(clone_data->self->allowed_nodes) - 1;
slist_iter(a_node, node_t, clone_data->self->allowed_nodes, lpc,
node_t *replace_node = NULL;
resource_t *replace_rsc = NULL;
CRM_ASSERT(a_node != NULL);
if(a_node->count != 0) {
crm_debug_4("Node %s has %d resources",
a_node->details->uname, a_node->count);
break;
} else if(lpc >= reverse_pointer) {
crm_debug_3("lpc %d, reverse lpc %d", lpc, reverse_pointer);
break;
}
crm_debug_3("Node %s has %d resources, stealing one from...",
a_node->details->uname, a_node->count);
while(replace_rsc == NULL) {
crm_debug_3("lpc %d, reverse lpc %d", lpc, reverse_pointer);
if(lpc >= reverse_pointer) {
return NULL;
}
replace_node = g_list_nth_data(clone_data->self->allowed_nodes, reverse_pointer);
reverse_pointer--;
crm_debug("Trying to reallocated an instance of %s to %s from %s",
rsc->id, a_node->details->uname, replace_node->details->uname);
replace_rsc = find_clone_child(rsc, replace_node->details->allocated_rsc);
if(replace_rsc == NULL) {
CRM_ASSERT(replace_node->count == 0);
crm_debug("nothing on %s", replace_node->details->uname);
}
}
crm_debug("Reallocating %s to %s from %s",
replace_rsc->id, a_node->details->uname, replace_node->details->uname);
native_assign_node(replace_rsc, NULL, a_node);
);
return NULL;
}
static void
clone_update_pseudo_status(
resource_t *child, gboolean *stopping, gboolean *starting)
{
CRM_ASSERT(stopping != NULL);
CRM_ASSERT(starting != NULL);
slist_iter(
action, action_t, child->actions, lpc,
if(*starting && *stopping) {
return;
} else if(action->optional) {
crm_debug_3("Skipping optional: %s", action->uuid);
continue;
} else if(action->pseudo == FALSE && action->runnable == FALSE){
crm_debug_3("Skipping unrunnable: %s", action->uuid);
continue;
} else if(safe_str_eq(CRMD_ACTION_STOP, action->task)) {
crm_debug_2("Stopping due to: %s", action->uuid);
*stopping = TRUE;
} else if(safe_str_eq(CRMD_ACTION_START, action->task)) {
if(action->runnable == FALSE) {
crm_debug_3("Skipping pseduo-op: %s run=%d, pseudo=%d",
action->uuid, action->runnable, action->pseudo);
} else {
crm_debug_2("Starting due to: %s", action->uuid);
crm_debug_3("%s run=%d, pseudo=%d",
action->uuid, action->runnable, action->pseudo);
*starting = TRUE;
}
}
);
}
void clone_create_actions(resource_t *rsc, pe_working_set_t *data_set)
{
gboolean child_starting = FALSE;
gboolean child_stopping = FALSE;
action_t *stop = NULL;
action_t *start = NULL;
action_t *action_complete = NULL;
resource_t *last_start_rsc = NULL;
resource_t *last_stop_rsc = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->create_actions(child_rsc, data_set);
clone_update_pseudo_status(
child_rsc, &child_stopping, &child_starting);
if(child_rsc->starting) {
last_start_rsc = child_rsc;
}
if(child_rsc->stopping) {
last_stop_rsc = child_rsc;
}
);
/* start */
start = start_action(clone_data->self, NULL, !child_starting);
action_complete = custom_action(
clone_data->self, started_key(rsc),
CRMD_ACTION_STARTED, NULL, !child_starting, TRUE, data_set);
start->pseudo = TRUE;
action_complete->pseudo = TRUE;
action_complete->priority = INFINITY;
child_starting_constraints(clone_data, pe_ordering_optional,
NULL, last_start_rsc, data_set);
clone_create_notifications(
rsc, start, action_complete, data_set);
/* stop */
stop = stop_action(clone_data->self, NULL, !child_stopping);
action_complete = custom_action(
clone_data->self, stopped_key(rsc),
CRMD_ACTION_STOPPED, NULL, !child_stopping, TRUE, data_set);
stop->pseudo = TRUE;
action_complete->pseudo = TRUE;
action_complete->priority = INFINITY;
child_stopping_constraints(clone_data, pe_ordering_optional,
NULL, last_stop_rsc, data_set);
clone_create_notifications(rsc, stop, action_complete, data_set);
rsc->actions = clone_data->self->actions;
if(stop->post_notified != NULL && start->pre_notify != NULL) {
order_actions(stop->post_notified, start->pre_notify, pe_ordering_optional);
}
}
void
clone_create_notifications(
resource_t *rsc, action_t *action, action_t *action_complete,
pe_working_set_t *data_set)
{
/*
* pre_notify -> pre_notify_complete -> pseudo_action
* -> (real actions) -> pseudo_action_complete
* -> post_notify -> post_notify_complete
*
* if the pre_noitfy requires confirmation,
* then a list of confirmations will be added as triggers
* to pseudo_action in clone_expand()
*/
action_t *notify = NULL;
action_t *notify_complete = NULL;
enum action_tasks task;
char *notify_key = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
if(rsc->notify == FALSE) {
return;
}
task = text2task(action->task);
/* create pre_notify */
notify_key = generate_notify_key(
clone_data->self->id, "pre", action->task);
notify = custom_action(clone_data->self, notify_key,
CRMD_ACTION_NOTIFY, NULL,
action->optional, TRUE, data_set);
add_hash_param(notify->meta, "notify_type", "pre");
add_hash_param(notify->meta, "notify_operation", action->task);
if(clone_data->notify_confirm) {
add_hash_param(notify->meta, "notify_confirm", "yes");
} else {
add_hash_param(notify->meta, "notify_confirm", "no");
}
notify->pseudo = TRUE;
/* create pre_notify_complete */
notify_key = generate_notify_key(
clone_data->self->id, "confirmed-pre", action->task);
notify_complete = custom_action(clone_data->self, notify_key,
CRMD_ACTION_NOTIFIED, NULL,
action->optional, TRUE, data_set);
add_hash_param(notify_complete->meta, "notify_type", "pre");
add_hash_param(notify_complete->meta, "notify_operation", action->task);
if(clone_data->notify_confirm) {
add_hash_param(notify->meta, "notify_confirm", "yes");
} else {
add_hash_param(notify->meta, "notify_confirm", "no");
}
notify->pseudo = TRUE;
notify_complete->pseudo = TRUE;
/* pre_notify before pre_notify_complete */
custom_action_order(
clone_data->self, NULL, notify,
clone_data->self, NULL, notify_complete,
pe_ordering_manditory, data_set);
/* pre_notify_complete before action */
custom_action_order(
clone_data->self, NULL, notify_complete,
clone_data->self, NULL, action,
pe_ordering_manditory, data_set);
action->pre_notify = notify;
action->pre_notified = notify_complete;
/* create post_notify */
notify_key = generate_notify_key
(clone_data->self->id, "post", action->task);
notify = custom_action(clone_data->self, notify_key,
CRMD_ACTION_NOTIFY, NULL,
action_complete->optional, TRUE, data_set);
add_hash_param(notify->meta, "notify_type", "post");
add_hash_param(notify->meta, "notify_operation", action->task);
if(clone_data->notify_confirm) {
add_hash_param(notify->meta, "notify_confirm", "yes");
} else {
add_hash_param(notify->meta, "notify_confirm", "no");
}
notify->pseudo = TRUE;
/* action_complete before post_notify */
custom_action_order(
clone_data->self, NULL, action_complete,
clone_data->self, NULL, notify,
pe_ordering_postnotify, data_set);
/* create post_notify_complete */
notify_key = generate_notify_key(
clone_data->self->id, "confirmed-post", action->task);
notify_complete = custom_action(clone_data->self, notify_key,
CRMD_ACTION_NOTIFIED, NULL,
action->optional, TRUE, data_set);
add_hash_param(notify_complete->meta, "notify_type", "pre");
add_hash_param(notify_complete->meta, "notify_operation", action->task);
if(clone_data->notify_confirm) {
add_hash_param(notify->meta, "notify_confirm", "yes");
} else {
add_hash_param(notify->meta, "notify_confirm", "no");
}
notify_complete->pseudo = TRUE;
/* post_notify before post_notify_complete */
custom_action_order(
clone_data->self, NULL, notify,
clone_data->self, NULL, notify_complete,
pe_ordering_manditory, data_set);
action->post_notify = notify;
action->post_notified = notify_complete;
if(safe_str_eq(action->task, CRMD_ACTION_STOP)) {
/* post_notify_complete before start */
custom_action_order(
clone_data->self, NULL, notify_complete,
clone_data->self, start_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
} else if(safe_str_eq(action->task, CRMD_ACTION_START)) {
/* post_notify_complete before promote */
custom_action_order(
clone_data->self, NULL, notify_complete,
clone_data->self, promote_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
} else if(safe_str_eq(action->task, CRMD_ACTION_DEMOTE)) {
/* post_notify_complete before promote */
custom_action_order(
clone_data->self, NULL, notify_complete,
clone_data->self, stop_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
}
}
void
child_starting_constraints(
clone_variant_data_t *clone_data, enum pe_ordering type,
resource_t *child, resource_t *last, pe_working_set_t *data_set)
{
if(clone_data->ordered
|| clone_data->self->restart_type == pe_restart_restart) {
type = pe_ordering_manditory;
}
if(child == NULL) {
if(clone_data->ordered && last != NULL) {
crm_debug_4("Ordered version (last node)");
/* last child start before global started */
custom_action_order(
last, start_key(last), NULL,
clone_data->self, started_key(clone_data->self), NULL,
type, data_set);
}
} else if(clone_data->ordered) {
crm_debug_4("Ordered version");
if(last == NULL) {
/* global start before first child start */
last = clone_data->self;
} /* else: child/child relative start */
order_start_start(last, child, type);
} else {
crm_debug_4("Un-ordered version");
/* child start before global started */
custom_action_order(
child, start_key(child), NULL,
clone_data->self, started_key(clone_data->self), NULL,
type, data_set);
/* global start before child start */
/* order_start_start(clone_data->self, child, type); */
order_start_start(
clone_data->self, child, pe_ordering_manditory);
}
}
void
child_stopping_constraints(
clone_variant_data_t *clone_data, enum pe_ordering type,
resource_t *child, resource_t *last, pe_working_set_t *data_set)
{
if(clone_data->ordered
|| clone_data->self->restart_type == pe_restart_restart) {
type = pe_ordering_manditory;
}
if(child == NULL) {
if(clone_data->ordered && last != NULL) {
crm_debug_4("Ordered version (last node)");
/* global stop before first child stop */
order_stop_stop(clone_data->self, last,
pe_ordering_manditory);
}
} else if(clone_data->ordered && last != NULL) {
crm_debug_4("Ordered version");
/* child/child relative stop */
order_stop_stop(child, last, type);
} else if(clone_data->ordered) {
crm_debug_4("Ordered version (1st node)");
/* first child stop before global stopped */
custom_action_order(
child, stop_key(child), NULL,
clone_data->self, stopped_key(clone_data->self), NULL,
type, data_set);
} else {
crm_debug_4("Un-ordered version");
/* child stop before global stopped */
custom_action_order(
child, stop_key(child), NULL,
clone_data->self, stopped_key(clone_data->self), NULL,
type, data_set);
/* global stop before child stop */
order_stop_stop(clone_data->self, child, type);
}
}
void
clone_internal_constraints(resource_t *rsc, pe_working_set_t *data_set)
{
resource_t *last_rsc = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
clone_data->self->cmds->internal_constraints(clone_data->self, data_set);
/* global stop before stopped */
custom_action_order(
clone_data->self, stop_key(clone_data->self), NULL,
clone_data->self, stopped_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
/* global start before started */
custom_action_order(
clone_data->self, start_key(clone_data->self), NULL,
clone_data->self, started_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
/* global stopped before start */
custom_action_order(
clone_data->self, stopped_key(clone_data->self), NULL,
clone_data->self, start_key(clone_data->self), NULL,
pe_ordering_optional, data_set);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->internal_constraints(child_rsc, data_set);
child_starting_constraints(
clone_data, pe_ordering_optional,
child_rsc, last_rsc, data_set);
child_stopping_constraints(
clone_data, pe_ordering_optional,
child_rsc, last_rsc, data_set);
last_rsc = child_rsc;
);
child_starting_constraints(
clone_data, pe_ordering_optional,
NULL, last_rsc, data_set);
child_stopping_constraints(
clone_data, pe_ordering_optional,
NULL, last_rsc, data_set);
}
static resource_t*
find_compatible_child(resource_t *local_child, resource_t *rsc)
{
node_t *local_node = NULL;
node_t *node = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
local_node = local_child->allocated_to;
if(local_node == NULL) {
crm_debug("Can't colocate unrunnable child %s with %s",
local_child->id, rsc->id);
return NULL;
}
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
node = child_rsc->allocated_to;
if(node->details == local_node->details) {
crm_info("Colocating %s with %s on %s",
local_child->id, child_rsc->id, node->details->uname);
return child_rsc;
}
);
crm_debug("Can't colocate child %s with %s",
local_child->id, rsc->id);
return NULL;
}
void clone_rsc_colocation_lh(
resource_t *rsc_lh, resource_t *rsc_rh, rsc_colocation_t *constraint)
{
gboolean do_interleave = FALSE;
resource_t *rsc = constraint->rsc_lh;
clone_variant_data_t *clone_data = NULL;
clone_variant_data_t *clone_data_rh = NULL;
if(rsc == NULL) {
pe_err("rsc_lh was NULL for %s", constraint->id);
return;
} else if(constraint->rsc_rh == NULL) {
pe_err("rsc_rh was NULL for %s", constraint->id);
return;
} else {
crm_debug_4("Processing constraints from %s", rsc->id);
}
get_clone_variant_data(clone_data, rsc);
if(constraint->rsc_rh->variant == pe_clone) {
get_clone_variant_data(
clone_data_rh, constraint->rsc_rh);
if(clone_data->clone_node_max
!= clone_data_rh->clone_node_max) {
pe_err("Cannot interleave "XML_CIB_TAG_INCARNATION
" %s and %s because"
" they do not support the same number of"
" resources per node",
constraint->rsc_lh->id, constraint->rsc_rh->id);
/* only the LHS side needs to be labeled as interleave */
} else if(clone_data->interleave) {
do_interleave = TRUE;
} else if(constraint->score != INFINITY) {
pe_warn("rsc_colocations other than \"-INFINITY\""
" are not supported for non-interleaved "
XML_CIB_TAG_INCARNATION" resources");
return;
}
} else if(constraint->score != -INFINITY) {
pe_warn("Co-location scores other than \"-INFINITY\" are not "
" allowed for non-"XML_CIB_TAG_INCARNATION" resources");
return;
}
if(do_interleave) {
resource_t *rh_child = NULL;
slist_iter(lh_child, resource_t, clone_data->child_list, lpc,
CRM_ASSERT(lh_child != NULL);
rh_child = find_compatible_child(lh_child, rsc_rh);
if(rh_child == NULL) {
continue;
}
lh_child->cmds->rsc_colocation_lh(
lh_child, rh_child, constraint);
);
return;
}
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->rsc_colocation_lh(child_rsc, constraint->rsc_rh, constraint);
);
}
void clone_rsc_colocation_rh(
resource_t *rsc_lh, resource_t *rsc_rh, rsc_colocation_t *constraint)
{
clone_variant_data_t *clone_data = NULL;
CRM_CHECK(rsc_lh != NULL, return);
CRM_CHECK(rsc_lh->variant == pe_native, return);
crm_debug_3("Processing RH of constraint %s", constraint->id);
if(rsc_rh == NULL) {
pe_err("rsc_rh was NULL for %s", constraint->id);
return;
} else if(constraint->score != -INFINITY) {
pe_warn("rsc_dependencies other than \"must_not\" "
"are not supported for clone resources");
return;
} else {
print_resource(LOG_DEBUG_3, "LHS", rsc_lh, FALSE);
}
get_clone_variant_data(clone_data, rsc_rh);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
print_resource(LOG_DEBUG_3, "RHS", child_rsc, FALSE);
child_rsc->cmds->rsc_colocation_rh(rsc_lh, child_rsc, constraint);
);
}
void clone_rsc_order_lh(resource_t *rsc, order_constraint_t *order)
{
char *stop_id = NULL;
char *start_id = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
crm_debug_3("Processing LH of ordering constraint %d", order->id);
stop_id = stop_key(rsc);
start_id = start_key(rsc);
if(safe_str_eq(order->lh_action_task, start_id)) {
crm_free(order->lh_action_task);
order->lh_action_task = started_key(rsc);
} else if(safe_str_eq(order->lh_action_task, stop_id)) {
crm_free(order->lh_action_task);
order->lh_action_task = stopped_key(rsc);
}
crm_free(start_id);
crm_free(stop_id);
clone_data->self->cmds->rsc_order_lh(clone_data->self, order);
}
void clone_rsc_order_rh(
action_t *lh_action, resource_t *rsc, order_constraint_t *order)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
crm_debug_3("Processing RH of ordering constraint %d", order->id);
clone_data->self->cmds->rsc_order_rh(lh_action, clone_data->self, order);
}
void clone_rsc_location(resource_t *rsc, rsc_to_node_t *constraint)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
crm_debug_3("Processing location constraint %s for %s", constraint->id, rsc->id);
clone_data->self->cmds->rsc_location(clone_data->self, constraint);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->rsc_location(child_rsc, constraint);
);
}
static gint
sort_notify_entries(gconstpointer a, gconstpointer b)
{
int tmp;
const notify_entry_t *entry_a = a;
const notify_entry_t *entry_b = b;
if(entry_a == NULL && entry_b == NULL) { return 0; }
if(entry_a == NULL) { return 1; }
if(entry_b == NULL) { return -1; }
if(entry_a->rsc == NULL && entry_b->rsc == NULL) { return 0; }
if(entry_a->rsc == NULL) { return 1; }
if(entry_b->rsc == NULL) { return -1; }
tmp = strcmp(entry_a->rsc->id, entry_b->rsc->id);
if(tmp != 0) {
return tmp;
}
if(entry_a->node == NULL && entry_b->node == NULL) { return 0; }
if(entry_a->node == NULL) { return 1; }
if(entry_b->node == NULL) { return -1; }
return strcmp(entry_a->node->details->id, entry_b->node->details->id);
}
static void
expand_list(GListPtr list, int clones,
char **rsc_list, char **node_list, char **uuid_list)
{
const char *uname = NULL;
const char *rsc_id = NULL;
const char *last_rsc_id = NULL;
CRM_CHECK(list != NULL, return);
if(rsc_list) {
CRM_CHECK(*rsc_list == NULL, *rsc_list = NULL);
}
if(node_list) {
CRM_CHECK(*node_list == NULL, *node_list = NULL);
}
slist_iter(entry, notify_entry_t, list, lpc,
CRM_CHECK(entry != NULL, continue);
rsc_id = entry->rsc->id;
CRM_CHECK(rsc_id != NULL, rsc_id = "__none__");
uname = NULL;
if(entry->node) {
uname = entry->node->details->uname;
}
CRM_CHECK(uname != NULL, uname = "__none__");
/* filter dups */
if(safe_str_eq(rsc_id, last_rsc_id)) {
continue;
}
last_rsc_id = rsc_id;
if(rsc_list != NULL) {
int existing_len = 0;
int len = 2 + strlen(rsc_id); /* +1 space, +1 EOS */
if(rsc_list && *rsc_list) {
existing_len = strlen(*rsc_list);
}
crm_debug_5("Adding %s (%dc) at offset %d",
rsc_id, len-2, existing_len);
crm_realloc(*rsc_list, len + existing_len);
sprintf(*rsc_list + existing_len, "%s ", rsc_id);
}
if(node_list != NULL) {
int existing_len = 0;
int len = 2 + strlen(uname);
if(node_list && *node_list) {
existing_len = strlen(*node_list);
}
crm_debug_5("Adding %s (%dc) at offset %d",
uname, len-2, existing_len);
crm_realloc(*node_list, len + existing_len);
sprintf(*node_list + existing_len, "%s ", uname);
}
);
}
void clone_expand(resource_t *rsc, pe_working_set_t *data_set)
{
char *rsc_list = NULL;
char *node_list = NULL;
char *uuid_list = NULL;
notify_data_t *n_data = NULL;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
crm_malloc0(n_data, sizeof(notify_data_t));
n_data->keys = g_hash_table_new_full(
g_str_hash, g_str_equal,
g_hash_destroy_str, g_hash_destroy_str);
crm_debug_2("Processing actions from %s", rsc->id);
if(rsc->notify) {
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
slist_iter(
op, action_t, clone_data->self->actions, lpc2,
child_rsc->cmds->create_notify_element(
child_rsc, op, n_data, data_set);
);
);
}
/* expand the notify data */
if(rsc->notify && n_data->stop) {
n_data->stop = g_list_sort(
n_data->stop, sort_notify_entries);
rsc_list = NULL; node_list = NULL;
expand_list(n_data->stop, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_stop_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_stop_uname"), node_list);
}
if(rsc->notify && n_data->start) {
n_data->start = g_list_sort(
n_data->start, sort_notify_entries);
rsc_list = NULL; node_list = NULL;
expand_list(n_data->start, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_start_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_start_uname"), node_list);
}
if(rsc->notify && n_data->demote) {
n_data->demote = g_list_sort(
n_data->demote, sort_notify_entries);
rsc_list = NULL; node_list = NULL;
expand_list(n_data->demote, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_demote_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_demote_uname"), node_list);
}
if(rsc->notify && n_data->promote) {
n_data->promote = g_list_sort(
n_data->promote, sort_notify_entries);
rsc_list = NULL; node_list = NULL; uuid_list = NULL;
expand_list(n_data->promote, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_promote_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_promote_uname"), node_list);
}
if(rsc->notify && n_data->active) {
n_data->active = g_list_sort(
n_data->active, sort_notify_entries);
rsc_list = NULL; node_list = NULL; uuid_list = NULL;
expand_list(n_data->active, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_active_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_active_uname"), node_list);
}
if(rsc->notify && n_data->slave) {
n_data->slave = g_list_sort(
n_data->slave, sort_notify_entries);
rsc_list = NULL; node_list = NULL; uuid_list = NULL;
expand_list(n_data->slave, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_slave_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_slave_uname"), node_list);
}
if(rsc->notify && n_data->master) {
n_data->master = g_list_sort(
n_data->master, sort_notify_entries);
rsc_list = NULL; node_list = NULL; uuid_list = NULL;
expand_list(n_data->master, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_master_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_master_uname"), node_list);
}
if(rsc->notify && n_data->inactive) {
n_data->inactive = g_list_sort(
n_data->inactive, sort_notify_entries);
rsc_list = NULL; node_list = NULL; uuid_list = NULL;
expand_list(n_data->inactive, clone_data->clone_max,
&rsc_list, &node_list, &uuid_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_inactive_resource"), rsc_list);
g_hash_table_insert(
n_data->keys,
crm_strdup("notify_inactive_uname"), node_list);
}
/* yes, we DO need this second loop */
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->expand(child_rsc, data_set);
);
/* slist_iter( */
/* action, action_t, clone_data->self->actions, lpc2, */
/* if(safe_str_eq(action->task, CRMD_ACTION_NOTIFY)) { */
/* action->meta_xml = notify_xml; */
/* } */
/* ); */
clone_data->self->cmds->expand(clone_data->self, data_set);
/* destroy the notify_data */
pe_free_shallow(n_data->stop);
pe_free_shallow(n_data->start);
pe_free_shallow(n_data->demote);
pe_free_shallow(n_data->promote);
pe_free_shallow(n_data->master);
pe_free_shallow(n_data->slave);
pe_free_shallow(n_data->active);
pe_free_shallow(n_data->inactive);
g_hash_table_destroy(n_data->keys);
crm_free(n_data);
}
void
clone_agent_constraints(resource_t *rsc)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->agent_constraints(child_rsc);
);
}
void
clone_create_notify_element(resource_t *rsc, action_t *op,
notify_data_t *n_data, pe_working_set_t *data_set)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->create_notify_element(
child_rsc, op, n_data, data_set);
);
}
static gint sort_rsc_id(gconstpointer a, gconstpointer b)
{
const resource_t *resource1 = (const resource_t*)a;
const resource_t *resource2 = (const resource_t*)b;
CRM_ASSERT(resource1 != NULL);
CRM_ASSERT(resource2 != NULL);
return strcmp(resource1->id, resource2->id);
}
gboolean
clone_create_probe(resource_t *rsc, node_t *node, action_t *complete,
gboolean force, pe_working_set_t *data_set)
{
gboolean any_created = FALSE;
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
clone_data->child_list = g_list_sort(
clone_data->child_list, sort_rsc_id);
if(rsc->globally_unique == FALSE && clone_data->clone_node_max == 1) {
/* only look for one copy */
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
if(pe_find_node_id(child_rsc->running_on, node->details->id)) {
return child_rsc->cmds->create_probe(
child_rsc, node, complete, force, data_set);
}
);
}
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
if(child_rsc->cmds->create_probe(
child_rsc, node, complete, force, data_set)) {
any_created = TRUE;
}
if(any_created
&& rsc->globally_unique == FALSE
&& clone_data->clone_node_max == 1) {
/* only look for one copy (clone :0) */
break;
}
);
return any_created;
}
void
clone_stonith_ordering(
resource_t *rsc, action_t *stonith_op, pe_working_set_t *data_set)
{
clone_variant_data_t *clone_data = NULL;
get_clone_variant_data(clone_data, rsc);
slist_iter(
child_rsc, resource_t, clone_data->child_list, lpc,
child_rsc->cmds->stonith_ordering(
child_rsc, stonith_op, data_set);
);
}
diff --git a/crm/pengine/testcases/inc0.exp b/crm/pengine/testcases/inc0.exp
index b6842beffb..75474a74de 100644
--- a/crm/pengine/testcases/inc0.exp
+++ b/crm/pengine/testcases/inc0.exp
@@ -1,244 +1,244 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2">
<action_set>
<rsc_op id="14" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="3" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="4" priority="1000000">
<action_set>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="5">
<action_set>
<rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="6" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="7" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="8">
<action_set>
<rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="9" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="10" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="11">
<action_set>
<rsc_op id="17" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="12" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="14">
<action_set>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0">
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="15" priority="1000000">
<action_set>
- <pseudo_event id="20" operation="running" operation_key="rsc1_running_0">
+ <pseudo_event id="19" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="14" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="17" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="16">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="17" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="18" priority="1000000">
<action_set>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc1.exp b/crm/pengine/testcases/inc1.exp
index 37ef789645..c4821bd7f9 100644
--- a/crm/pengine/testcases/inc1.exp
+++ b/crm/pengine/testcases/inc1.exp
@@ -1,324 +1,324 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="rsc1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc1" long-id="rsc1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="rsc1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="rsc1" long-id="rsc1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2">
<action_set>
<rsc_op id="18" operation="start" operation_key="rsc1_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc1" long-id="rsc1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="3" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="4" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="5">
<action_set>
<rsc_op id="19" operation="start" operation_key="child_rsc2:0_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="6" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="7" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="8">
<action_set>
<rsc_op id="20" operation="start" operation_key="child_rsc2:1_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="9" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="10" priority="1000000">
<action_set>
<rsc_op id="14" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="11">
<action_set>
<rsc_op id="21" operation="start" operation_key="child_rsc2:2_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="12" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
<rsc_op id="15" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="14">
<action_set>
<rsc_op id="22" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="15" priority="1000000">
<action_set>
<rsc_op id="8" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="16" priority="1000000">
<action_set>
<rsc_op id="16" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="17">
<action_set>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0">
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
<rsc_op id="18" operation="start" operation_key="rsc1_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="18" priority="1000000">
<action_set>
- <pseudo_event id="25" operation="running" operation_key="rsc2_running_0">
+ <pseudo_event id="24" operation="running" operation_key="rsc2_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="19" operation="start" operation_key="child_rsc2:0_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="20" operation="start" operation_key="child_rsc2:1_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="21" operation="start" operation_key="child_rsc2:2_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="22" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="19" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="rsc3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc3" long-id="rsc3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="20" priority="1000000">
<action_set>
<rsc_op id="17" operation="monitor" operation_key="rsc3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="rsc3" long-id="rsc3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="21">
<action_set>
- <rsc_op id="28" operation="start" operation_key="rsc3_start_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="27" operation="start" operation_key="rsc3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="rsc3" long-id="rsc3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
- <pseudo_event id="25" operation="running" operation_key="rsc2_running_0"/>
+ <pseudo_event id="24" operation="running" operation_key="rsc2_running_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="22">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="10" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="23" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="rsc1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="rsc3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="24" priority="1000000">
<action_set>
<rsc_op id="10" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="rsc1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="14" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="15" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="16" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="17" operation="monitor" operation_key="rsc3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc2.exp b/crm/pengine/testcases/inc2.exp
index 8f60d957d1..bbea720215 100644
--- a/crm/pengine/testcases/inc2.exp
+++ b/crm/pengine/testcases/inc2.exp
@@ -1,220 +1,220 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="3">
<action_set>
<rsc_op id="13" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="4">
<action_set>
<rsc_op id="14" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="13" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="5" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="6">
<action_set>
<rsc_op id="15" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="7">
<action_set>
<rsc_op id="16" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="15" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="8" priority="1000000">
<action_set>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="9">
<action_set>
<rsc_op id="17" operation="stop" operation_key="child_rsc1:4_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="10">
<action_set>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0">
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
<trigger>
- <pseudo_event id="22" operation="stopped" operation_key="rsc1_stopped_0"/>
+ <pseudo_event id="21" operation="stopped" operation_key="rsc1_stopped_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="11" priority="1000000">
<action_set>
- <pseudo_event id="20" operation="running" operation_key="rsc1_running_0">
+ <pseudo_event id="19" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="14" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="16" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="19" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="12">
<action_set>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0">
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs/>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
- <pseudo_event id="22" operation="stopped" operation_key="rsc1_stopped_0">
+ <pseudo_event id="21" operation="stopped" operation_key="rsc1_stopped_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="13" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="15" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="17" operation="stop" operation_key="child_rsc1:4_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="14">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="15" priority="1000000">
<action_set>
<rsc_op id="3" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc3.exp b/crm/pengine/testcases/inc3.exp
index 25fe1634e4..64af950353 100644
--- a/crm/pengine/testcases/inc3.exp
+++ b/crm/pengine/testcases/inc3.exp
@@ -1,419 +1,419 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="3">
<action_set>
<rsc_op id="18" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="4">
<action_set>
<rsc_op id="19" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="18" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="5" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="6">
<action_set>
<rsc_op id="20" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="7">
<action_set>
<rsc_op id="21" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="20" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="8" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="9">
<action_set>
<rsc_op id="22" operation="stop" operation_key="child_rsc1:4_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="10">
<action_set>
- <pseudo_event id="24" operation="start" operation_key="rsc1_start_0">
+ <pseudo_event id="23" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
<trigger>
- <pseudo_event id="27" operation="stopped" operation_key="rsc1_stopped_0"/>
+ <pseudo_event id="26" operation="stopped" operation_key="rsc1_stopped_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="11" priority="1000000">
<action_set>
- <pseudo_event id="25" operation="running" operation_key="rsc1_running_0">
+ <pseudo_event id="24" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="19" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="21" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="24" operation="start" operation_key="rsc1_start_0"/>
+ <pseudo_event id="23" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="12">
<action_set>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0">
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="41" operation="stopped" operation_key="rsc2_stopped_0"/>
+ <pseudo_event id="40" operation="stopped" operation_key="rsc2_stopped_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
- <pseudo_event id="27" operation="stopped" operation_key="rsc1_stopped_0">
+ <pseudo_event id="26" operation="stopped" operation_key="rsc1_stopped_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="18" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="20" operation="stop" operation_key="child_rsc1:3_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="22" operation="stop" operation_key="child_rsc1:4_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="26" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="25" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="14" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="15" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="16" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="17" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="18">
<action_set>
- <rsc_op id="34" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="33" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="40" operation="stop" operation_key="rsc2_stop_0"/>
+ <pseudo_event id="39" operation="stop" operation_key="rsc2_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="19">
<action_set>
- <rsc_op id="35" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="34" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <rsc_op id="34" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="33" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="38" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="37" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="20" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="21">
<action_set>
- <rsc_op id="36" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="35" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="40" operation="stop" operation_key="rsc2_stop_0"/>
+ <pseudo_event id="39" operation="stop" operation_key="rsc2_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="22">
<action_set>
- <rsc_op id="37" operation="start" operation_key="child_rsc2:4_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="36" operation="start" operation_key="child_rsc2:4_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <rsc_op id="36" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="35" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="38" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="37" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="23">
<action_set>
- <pseudo_event id="38" operation="start" operation_key="rsc2_start_0">
+ <pseudo_event id="37" operation="start" operation_key="rsc2_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
- <pseudo_event id="25" operation="running" operation_key="rsc1_running_0"/>
+ <pseudo_event id="24" operation="running" operation_key="rsc1_running_0"/>
</trigger>
<trigger>
- <pseudo_event id="40" operation="stop" operation_key="rsc2_stop_0"/>
+ <pseudo_event id="39" operation="stop" operation_key="rsc2_stop_0"/>
</trigger>
<trigger>
- <pseudo_event id="41" operation="stopped" operation_key="rsc2_stopped_0"/>
+ <pseudo_event id="40" operation="stopped" operation_key="rsc2_stopped_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="24" priority="1000000">
<action_set>
- <pseudo_event id="39" operation="running" operation_key="rsc2_running_0">
+ <pseudo_event id="38" operation="running" operation_key="rsc2_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
- <rsc_op id="35" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="34" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <rsc_op id="37" operation="start" operation_key="child_rsc2:4_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="36" operation="start" operation_key="child_rsc2:4_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="38" operation="start" operation_key="rsc2_start_0"/>
+ <pseudo_event id="37" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="25">
<action_set>
- <pseudo_event id="40" operation="stop" operation_key="rsc2_stop_0">
+ <pseudo_event id="39" operation="stop" operation_key="rsc2_stop_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</pseudo_event>
</action_set>
<inputs/>
</synapse>
<synapse id="26" priority="1000000">
<action_set>
- <pseudo_event id="41" operation="stopped" operation_key="rsc2_stopped_0">
+ <pseudo_event id="40" operation="stopped" operation_key="rsc2_stopped_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="3"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
- <rsc_op id="34" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="33" operation="stop" operation_key="child_rsc2:3_stop_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <rsc_op id="36" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="35" operation="stop" operation_key="child_rsc2:4_stop_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <pseudo_event id="40" operation="stop" operation_key="rsc2_stop_0"/>
+ <pseudo_event id="39" operation="stop" operation_key="rsc2_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="27">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="28" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="29" priority="1000000">
<action_set>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc7.dot b/crm/pengine/testcases/inc7.dot
index 43bad9b793..53ef20080a 100644
--- a/crm/pengine/testcases/inc7.dot
+++ b/crm/pengine/testcases/inc7.dot
@@ -1,117 +1,117 @@
digraph "g" {
size = "30,30"
"probe_complete" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" [ style=bold color="green" fontcolor="black" ]
"rsc0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"probe_complete node2" [ style=bold color="green" fontcolor="black" ]
"rsc0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"probe_complete node3" [ style=bold color="green" fontcolor="black" ]
"rsc0_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:0_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_monitor_0 node3" [ style=bold color="green" fontcolor="black" ]
"rsc0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:1_start_0 node2" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:2_start_0 node3" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:3_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:4_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:0_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:1_start_0 node3" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:2_start_0 node1" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:3_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:4_start_0 node3" [ style=bold color="green" fontcolor="black" ]
"rsc1_start_0" [ style=bold color="green" fontcolor="orange" ]
"rsc1_running_0" [ style=bold color="green" fontcolor="orange" ]
"child_rsc2:0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_start_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_start_0 node3" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_start_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_start_0 node2" [ style=bold color="green" fontcolor="black" ]
"rsc2_start_0" [ style=bold color="green" fontcolor="orange" ]
"rsc2_running_0" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" -> "probe_complete" [ style = bold]
"probe_complete node2" -> "probe_complete" [ style = bold]
"probe_complete node3" -> "probe_complete" [ style = bold]
"rsc0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:1_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:2_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:3_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:4_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:1_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:2_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:3_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:4_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"rsc0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:1_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:2_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:3_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:4_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:1_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:2_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:3_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:4_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"rsc0_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc1:0_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc1:1_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc1:2_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc1:3_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc1:4_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc2:0_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc2:1_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc2:2_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc2:3_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"child_rsc2:4_monitor_0 node3" -> "probe_complete node3" [ style = bold]
"probe_complete" -> "rsc0_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:0_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:1_start_0 node2" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:2_start_0 node3" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:3_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:4_start_0 node2" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:0_start_0 node2" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:1_start_0 node3" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:2_start_0 node1" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:3_start_0 node2" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:4_start_0 node3" [ style = bold]
"probe_complete" -> "rsc1_start_0" [ style = bold]
-"child_rsc1:0_start_0 node1" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:1_start_0 node2" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:2_start_0 node3" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:3_start_0 node1" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:4_start_0 node2" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:0_start_0 node2" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:1_start_0 node3" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:2_start_0 node1" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:4_start_0 node3" -> "rsc1_running_0" [ style = bold]
"rsc1_start_0" -> "rsc1_running_0" [ style = bold]
"rsc2_start_0" -> "child_rsc2:0_start_0 node1" [ style = bold]
"rsc2_start_0" -> "child_rsc2:1_start_0 node2" [ style = bold]
"rsc2_start_0" -> "child_rsc2:2_start_0 node3" [ style = bold]
"rsc2_start_0" -> "child_rsc2:3_start_0 node1" [ style = bold]
"rsc2_start_0" -> "child_rsc2:4_start_0 node2" [ style = bold]
"probe_complete" -> "rsc2_start_0" [ style = bold]
"rsc1_running_0" -> "rsc2_start_0" [ style = bold]
"child_rsc2:0_start_0 node1" -> "rsc2_running_0" [ style = bold]
"child_rsc2:1_start_0 node2" -> "rsc2_running_0" [ style = bold]
"child_rsc2:2_start_0 node3" -> "rsc2_running_0" [ style = bold]
"child_rsc2:3_start_0 node1" -> "rsc2_running_0" [ style = bold]
"child_rsc2:4_start_0 node2" -> "rsc2_running_0" [ style = bold]
"rsc2_start_0" -> "rsc2_running_0" [ style = bold]
}
diff --git a/crm/pengine/testcases/inc7.exp b/crm/pengine/testcases/inc7.exp
index aec9569f16..1724842295 100644
--- a/crm/pengine/testcases/inc7.exp
+++ b/crm/pengine/testcases/inc7.exp
@@ -1,668 +1,668 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="rsc0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="15" operation="monitor" operation_key="rsc0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2" priority="1000000">
<action_set>
<rsc_op id="27" operation="monitor" operation_key="rsc0_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="3">
<action_set>
<rsc_op id="38" operation="start" operation_key="rsc0_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="4" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="5" priority="1000000">
<action_set>
<rsc_op id="16" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="6" priority="1000000">
<action_set>
<rsc_op id="28" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="7">
<action_set>
- <rsc_op id="39" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="39" operation="start" operation_key="child_rsc1:0_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="8" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="9" priority="1000000">
<action_set>
<rsc_op id="17" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="10" priority="1000000">
<action_set>
<rsc_op id="29" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="11">
<action_set>
- <rsc_op id="40" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="40" operation="start" operation_key="child_rsc1:1_start_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="12" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
<rsc_op id="18" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="14" priority="1000000">
<action_set>
<rsc_op id="30" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="15">
<action_set>
- <rsc_op id="41" operation="start" operation_key="child_rsc1:2_start_0" on_node="node3" on_node_uuid="uuid3">
+ <rsc_op id="41" operation="start" operation_key="child_rsc1:2_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="16" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="17" priority="1000000">
<action_set>
<rsc_op id="19" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="18" priority="1000000">
<action_set>
<rsc_op id="31" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="19">
<action_set>
- <rsc_op id="42" operation="start" operation_key="child_rsc1:3_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="42" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="20" priority="1000000">
<action_set>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="21" priority="1000000">
<action_set>
<rsc_op id="20" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="22" priority="1000000">
<action_set>
<rsc_op id="32" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="23">
<action_set>
- <rsc_op id="43" operation="start" operation_key="child_rsc1:4_start_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="43" operation="start" operation_key="child_rsc1:4_start_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="24">
<action_set>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="25" priority="1000000">
<action_set>
<pseudo_event id="45" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
- <rsc_op id="39" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="39" operation="start" operation_key="child_rsc1:0_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <rsc_op id="40" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="40" operation="start" operation_key="child_rsc1:1_start_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
- <rsc_op id="41" operation="start" operation_key="child_rsc1:2_start_0" on_node="node3" on_node_uuid="uuid3"/>
+ <rsc_op id="41" operation="start" operation_key="child_rsc1:2_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <rsc_op id="42" operation="start" operation_key="child_rsc1:3_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="42" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <rsc_op id="43" operation="start" operation_key="child_rsc1:4_start_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="43" operation="start" operation_key="child_rsc1:4_start_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<pseudo_event id="44" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="26" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="27" priority="1000000">
<action_set>
<rsc_op id="21" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="28" priority="1000000">
<action_set>
<rsc_op id="33" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="29">
<action_set>
<rsc_op id="48" operation="start" operation_key="child_rsc2:0_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="30" priority="1000000">
<action_set>
<rsc_op id="10" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="31" priority="1000000">
<action_set>
<rsc_op id="22" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="32" priority="1000000">
<action_set>
<rsc_op id="34" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="33">
<action_set>
<rsc_op id="49" operation="start" operation_key="child_rsc2:1_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="34" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="35" priority="1000000">
<action_set>
<rsc_op id="23" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="36" priority="1000000">
<action_set>
<rsc_op id="35" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="37">
<action_set>
<rsc_op id="50" operation="start" operation_key="child_rsc2:2_start_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="38" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="39" priority="1000000">
<action_set>
<rsc_op id="24" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="40" priority="1000000">
<action_set>
<rsc_op id="36" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="41">
<action_set>
<rsc_op id="51" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="42" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="43" priority="1000000">
<action_set>
<rsc_op id="25" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="44" priority="1000000">
<action_set>
<rsc_op id="37" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node3" on_node_uuid="uuid3">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="45">
<action_set>
<rsc_op id="52" operation="start" operation_key="child_rsc2:4_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="46">
<action_set>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
<trigger>
<pseudo_event id="45" operation="running" operation_key="rsc1_running_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="47" priority="1000000">
<action_set>
<pseudo_event id="54" operation="running" operation_key="rsc2_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="48" operation="start" operation_key="child_rsc2:0_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="49" operation="start" operation_key="child_rsc2:1_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="50" operation="start" operation_key="child_rsc2:2_start_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="51" operation="start" operation_key="child_rsc2:3_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="52" operation="start" operation_key="child_rsc2:4_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<pseudo_event id="53" operation="start" operation_key="rsc2_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="48">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="14" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="26" operation="probe_complete" operation_key="probe_complete" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
</inputs>
</synapse>
<synapse id="49" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="rsc0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="10" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="50" priority="1000000">
<action_set>
<rsc_op id="14" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="15" operation="monitor" operation_key="rsc0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="16" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="17" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="18" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="19" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="20" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="21" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="22" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="23" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="24" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="25" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="51" priority="1000000">
<action_set>
<rsc_op id="26" operation="probe_complete" operation_key="probe_complete" on_node="node3" on_node_uuid="uuid3">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="27" operation="monitor" operation_key="rsc0_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="28" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="29" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="30" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="31" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="32" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="33" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="34" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="35" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="36" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
<trigger>
<rsc_op id="37" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node3" on_node_uuid="uuid3"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc8.dot b/crm/pengine/testcases/inc8.dot
index 3914d6c7f2..03ad51ca86 100644
--- a/crm/pengine/testcases/inc8.dot
+++ b/crm/pengine/testcases/inc8.dot
@@ -1,64 +1,74 @@
digraph "g" {
size = "30,30"
"probe_complete" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" [ style=bold color="green" fontcolor="black" ]
"rsc0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"probe_complete node2" [ style=bold color="green" fontcolor="black" ]
"rsc0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc2:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"rsc0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:1_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:0_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ]
"rsc1_start_0" [ style=bold color="green" fontcolor="orange" ]
"rsc1_running_0" [ style=bold color="green" fontcolor="orange" ]
+"child_rsc2:0_start_0 node2" [ style=bold color="green" fontcolor="black" ]
+"child_rsc2:1_start_0 node1" [ style=bold color="green" fontcolor="black" ]
+"rsc2_start_0" [ style=bold color="green" fontcolor="orange" ]
+"rsc2_running_0" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" -> "probe_complete" [ style = bold]
"probe_complete node2" -> "probe_complete" [ style = bold]
"rsc0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:1_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:2_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:3_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:4_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:1_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:2_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:3_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc2:4_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"rsc0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:1_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:2_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:3_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:4_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:1_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:2_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:3_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc2:4_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"probe_complete" -> "rsc0_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:0_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:1_start_0 node2" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:0_start_0 node2" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold]
"probe_complete" -> "rsc1_start_0" [ style = bold]
-"child_rsc1:0_start_0 node1" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:1_start_0 node2" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:0_start_0 node2" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold]
"rsc1_start_0" -> "rsc1_running_0" [ style = bold]
+"rsc2_start_0" -> "child_rsc2:0_start_0 node2" [ style = bold]
+"rsc2_start_0" -> "child_rsc2:1_start_0 node1" [ style = bold]
+"probe_complete" -> "rsc2_start_0" [ style = bold]
+"child_rsc2:0_start_0 node2" -> "rsc2_running_0" [ style = bold]
+"child_rsc2:1_start_0 node1" -> "rsc2_running_0" [ style = bold]
+"rsc2_start_0" -> "rsc2_running_0" [ style = bold]
}
diff --git a/crm/pengine/testcases/inc8.exp b/crm/pengine/testcases/inc8.exp
index 93522ede2e..563707e18c 100644
--- a/crm/pengine/testcases/inc8.exp
+++ b/crm/pengine/testcases/inc8.exp
@@ -1,369 +1,425 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="rsc0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="15" operation="monitor" operation_key="rsc0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2">
<action_set>
<rsc_op id="26" operation="start" operation_key="rsc0_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc0" long-id="rsc0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="3" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="4" priority="1000000">
<action_set>
<rsc_op id="16" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="5">
<action_set>
- <rsc_op id="27" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="27" operation="start" operation_key="child_rsc1:0_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="29" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="6" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="7" priority="1000000">
<action_set>
<rsc_op id="17" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="8">
<action_set>
- <rsc_op id="28" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="28" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="29" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="9" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="10" priority="1000000">
<action_set>
<rsc_op id="18" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="11" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="12" priority="1000000">
<action_set>
<rsc_op id="19" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="13" priority="1000000">
<action_set>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="14" priority="1000000">
<action_set>
<rsc_op id="20" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="15">
<action_set>
<pseudo_event id="29" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="16" priority="1000000">
<action_set>
<pseudo_event id="30" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
- <rsc_op id="27" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="27" operation="start" operation_key="child_rsc1:0_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
- <rsc_op id="28" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="28" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<pseudo_event id="29" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="17" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="18" priority="1000000">
<action_set>
<rsc_op id="21" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="19" priority="1000000">
+ <synapse id="19">
+ <action_set>
+ <rsc_op id="33" operation="start" operation_key="child_rsc2:0_start_0" on_node="node2" on_node_uuid="uuid2">
+ <primitive id="child_rsc2:0" long-id="rsc2:child_rsc2:0" class="heartbeat" type="apache"/>
+ <attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
+ </rsc_op>
+ </action_set>
+ <inputs>
+ <trigger>
+ <pseudo_event id="35" operation="start" operation_key="rsc2_start_0"/>
+ </trigger>
+ </inputs>
+ </synapse>
+ <synapse id="20" priority="1000000">
<action_set>
<rsc_op id="10" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="20" priority="1000000">
+ <synapse id="21" priority="1000000">
<action_set>
<rsc_op id="22" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="21" priority="1000000">
+ <synapse id="22">
+ <action_set>
+ <rsc_op id="34" operation="start" operation_key="child_rsc2:1_start_0" on_node="node1" on_node_uuid="uuid1">
+ <primitive id="child_rsc2:1" long-id="rsc2:child_rsc2:1" class="heartbeat" type="apache"/>
+ <attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
+ </rsc_op>
+ </action_set>
+ <inputs>
+ <trigger>
+ <pseudo_event id="35" operation="start" operation_key="rsc2_start_0"/>
+ </trigger>
+ </inputs>
+ </synapse>
+ <synapse id="23" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="22" priority="1000000">
+ <synapse id="24" priority="1000000">
<action_set>
<rsc_op id="23" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:2" long-id="rsc2:child_rsc2:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="23" priority="1000000">
+ <synapse id="25" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="24" priority="1000000">
+ <synapse id="26" priority="1000000">
<action_set>
<rsc_op id="24" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:3" long-id="rsc2:child_rsc2:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="25" priority="1000000">
+ <synapse id="27" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="26" priority="1000000">
+ <synapse id="28" priority="1000000">
<action_set>
<rsc_op id="25" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc2:4" long-id="rsc2:child_rsc2:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="27">
+ <synapse id="29">
+ <action_set>
+ <pseudo_event id="35" operation="start" operation_key="rsc2_start_0">
+ <attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
+ </pseudo_event>
+ </action_set>
+ <inputs>
+ <trigger>
+ <pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
+ </trigger>
+ </inputs>
+ </synapse>
+ <synapse id="30" priority="1000000">
+ <action_set>
+ <pseudo_event id="36" operation="running" operation_key="rsc2_running_0">
+ <attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="1"/>
+ </pseudo_event>
+ </action_set>
+ <inputs>
+ <trigger>
+ <rsc_op id="33" operation="start" operation_key="child_rsc2:0_start_0" on_node="node2" on_node_uuid="uuid2"/>
+ </trigger>
+ <trigger>
+ <rsc_op id="34" operation="start" operation_key="child_rsc2:1_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ </trigger>
+ <trigger>
+ <pseudo_event id="35" operation="start" operation_key="rsc2_start_0"/>
+ </trigger>
+ </inputs>
+ </synapse>
+ <synapse id="31">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="14" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
- <synapse id="28" priority="1000000">
+ <synapse id="32" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="rsc0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="10" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
- <synapse id="29" priority="1000000">
+ <synapse id="33" priority="1000000">
<action_set>
<rsc_op id="14" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="15" operation="monitor" operation_key="rsc0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="16" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="17" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="18" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="19" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="20" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="21" operation="monitor" operation_key="child_rsc2:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="22" operation="monitor" operation_key="child_rsc2:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="23" operation="monitor" operation_key="child_rsc2:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="24" operation="monitor" operation_key="child_rsc2:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="25" operation="monitor" operation_key="child_rsc2:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/inc9.exp b/crm/pengine/testcases/inc9.exp
index 6584512636..76c0636e7d 100644
--- a/crm/pengine/testcases/inc9.exp
+++ b/crm/pengine/testcases/inc9.exp
@@ -1,132 +1,132 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="1" priority="1000000">
<action_set>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="2" priority="1000000">
<action_set>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="3">
<action_set>
<rsc_op id="13" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="4" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="rsc1:child_rsc1:0_monitor_0" internal_operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc1:child_rsc1:0" long-id="child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="5" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="rsc1:child_rsc1:1_monitor_0" internal_operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="rsc1:child_rsc1:1" long-id="child_rsc1:4" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="6">
<action_set>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0">
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs/>
</synapse>
<synapse id="7" priority="1000000">
<action_set>
- <pseudo_event id="22" operation="stopped" operation_key="rsc1_stopped_0">
+ <pseudo_event id="21" operation="stopped" operation_key="rsc1_stopped_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="13" operation="stop" operation_key="child_rsc1:2_stop_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <pseudo_event id="21" operation="stop" operation_key="rsc1_stop_0"/>
+ <pseudo_event id="20" operation="stop" operation_key="rsc1_stop_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="8">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="9" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="rsc1:child_rsc1:0_monitor_0" internal_operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="rsc1:child_rsc1:1_monitor_0" internal_operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="10" priority="1000000">
<action_set>
<rsc_op id="5" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="8" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/testcases/master-0.dot b/crm/pengine/testcases/master-0.dot
index 789b178c44..ac42e3f993 100644
--- a/crm/pengine/testcases/master-0.dot
+++ b/crm/pengine/testcases/master-0.dot
@@ -1,44 +1,44 @@
digraph "g" {
size = "30,30"
"probe_complete" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ]
"probe_complete node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:0_start_0 node1" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:1_start_0 node2" [ style=bold color="green" fontcolor="black" ]
-"child_rsc1:2_start_0 node1" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ]
+"child_rsc1:2_start_0 node2" [ style=bold color="green" fontcolor="black" ]
"child_rsc1:3_start_0 node2" [ style=bold color="green" fontcolor="black" ]
"rsc1_start_0" [ style=bold color="green" fontcolor="orange" ]
"rsc1_running_0" [ style=bold color="green" fontcolor="orange" ]
"probe_complete node1" -> "probe_complete" [ style = bold]
"probe_complete node2" -> "probe_complete" [ style = bold]
"child_rsc1:0_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:1_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:2_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:3_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:4_monitor_0 node1" -> "probe_complete node1" [ style = bold]
"child_rsc1:0_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:1_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:2_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:3_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"child_rsc1:4_monitor_0 node2" -> "probe_complete node2" [ style = bold]
"rsc1_start_0" -> "child_rsc1:0_start_0 node1" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:1_start_0 node2" [ style = bold]
-"rsc1_start_0" -> "child_rsc1:2_start_0 node1" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold]
+"rsc1_start_0" -> "child_rsc1:2_start_0 node2" [ style = bold]
"rsc1_start_0" -> "child_rsc1:3_start_0 node2" [ style = bold]
"probe_complete" -> "rsc1_start_0" [ style = bold]
"child_rsc1:0_start_0 node1" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:1_start_0 node2" -> "rsc1_running_0" [ style = bold]
-"child_rsc1:2_start_0 node1" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold]
+"child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold]
"child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold]
"rsc1_start_0" -> "rsc1_running_0" [ style = bold]
}
diff --git a/crm/pengine/testcases/master-0.exp b/crm/pengine/testcases/master-0.exp
index d8473eefd8..114f4757e6 100644
--- a/crm/pengine/testcases/master-0.exp
+++ b/crm/pengine/testcases/master-0.exp
@@ -1,244 +1,244 @@
<transition_graph network-delay="60s" transition_id="0">
<synapse id="0" priority="1000000">
+ <action_set>
+ <rsc_op id="7" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
+ <primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
+ <attributes crm_feature_set="1.0.6" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
+ </rsc_op>
+ </action_set>
+ <inputs/>
+ </synapse>
+ <synapse id="1" priority="1000000">
+ <action_set>
+ <rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
+ <primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
+ <attributes crm_feature_set="1.0.6" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
+ </rsc_op>
+ </action_set>
+ <inputs/>
+ </synapse>
+ <synapse id="2" priority="1000000">
<action_set>
<rsc_op id="3" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="1" priority="1000000">
+ <synapse id="3" priority="1000000">
<action_set>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="2">
+ <synapse id="4">
<action_set>
<rsc_op id="14" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:0" long-id="rsc1:child_rsc1:0" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_clone="0" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
- <synapse id="3" priority="1000000">
+ <synapse id="5" priority="1000000">
<action_set>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="4" priority="1000000">
+ <synapse id="6" priority="1000000">
<action_set>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="5">
+ <synapse id="7">
<action_set>
- <rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2">
+ <rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:1" long-id="rsc1:child_rsc1:1" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_clone="1" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
- <synapse id="6" priority="1000000">
+ <synapse id="8" priority="1000000">
<action_set>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="7" priority="1000000">
+ <synapse id="9" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="8">
+ <synapse id="10">
<action_set>
- <rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node1" on_node_uuid="uuid1">
+ <rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:2" long-id="rsc1:child_rsc1:2" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_clone="2" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
- <synapse id="9" priority="1000000">
+ <synapse id="11" priority="1000000">
<action_set>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="10" priority="1000000">
+ <synapse id="12" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs/>
</synapse>
- <synapse id="11">
+ <synapse id="13">
<action_set>
<rsc_op id="17" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2">
<primitive id="child_rsc1:3" long-id="rsc1:child_rsc1:3" class="heartbeat" type="apache"/>
<attributes crm_feature_set="1.0.6" CRM_meta_role="Slave" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_clone="3" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
- <synapse id="12" priority="1000000">
- <action_set>
- <rsc_op id="7" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1">
- <primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
- <attributes crm_feature_set="1.0.6" CRM_meta_role="Stopped" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
- </rsc_op>
- </action_set>
- <inputs/>
- </synapse>
- <synapse id="13" priority="1000000">
- <action_set>
- <rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2">
- <primitive id="child_rsc1:4" long-id="rsc1:child_rsc1:4" class="heartbeat" type="apache"/>
- <attributes crm_feature_set="1.0.6" CRM_meta_role="Stopped" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_clone="4" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
- </rsc_op>
- </action_set>
- <inputs/>
- </synapse>
<synapse id="14">
<action_set>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete"/>
</trigger>
</inputs>
</synapse>
<synapse id="15" priority="1000000">
<action_set>
<pseudo_event id="19" operation="running" operation_key="rsc1_running_0">
<attributes crm_feature_set="1.0.6" CRM_meta_timeout="20000" CRM_meta_clone_max="5" CRM_meta_clone_node_max="2" CRM_meta_master_max="2" CRM_meta_master_node_max="1"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="14" operation="start" operation_key="child_rsc1:0_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node2" on_node_uuid="uuid2"/>
+ <rsc_op id="15" operation="start" operation_key="child_rsc1:1_start_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
- <rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node1" on_node_uuid="uuid1"/>
+ <rsc_op id="16" operation="start" operation_key="child_rsc1:2_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="17" operation="start" operation_key="child_rsc1:3_start_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<pseudo_event id="18" operation="start" operation_key="rsc1_start_0"/>
</trigger>
</inputs>
</synapse>
<synapse id="16">
<action_set>
<pseudo_event id="1" operation="probe_complete" operation_key="probe_complete">
<attributes crm_feature_set="1.0.6"/>
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
<synapse id="17" priority="1000000">
<action_set>
<rsc_op id="2" operation="probe_complete" operation_key="probe_complete" on_node="node1" on_node_uuid="uuid1">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="3" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="4" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="5" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="6" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
<trigger>
<rsc_op id="7" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node1" on_node_uuid="uuid1"/>
</trigger>
</inputs>
</synapse>
<synapse id="18" priority="1000000">
<action_set>
<rsc_op id="8" operation="probe_complete" operation_key="probe_complete" on_node="node2" on_node_uuid="uuid2">
<attributes crm_feature_set="1.0.6" CRM_meta_op_no_wait="true"/>
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="9" operation="monitor" operation_key="child_rsc1:0_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="10" operation="monitor" operation_key="child_rsc1:1_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="11" operation="monitor" operation_key="child_rsc1:2_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="12" operation="monitor" operation_key="child_rsc1:3_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
<trigger>
<rsc_op id="13" operation="monitor" operation_key="child_rsc1:4_monitor_0" on_node="node2" on_node_uuid="uuid2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>
diff --git a/crm/pengine/utils.c b/crm/pengine/utils.c
index a830d6e4ce..3fe0a3a088 100644
--- a/crm/pengine/utils.c
+++ b/crm/pengine/utils.c
@@ -1,378 +1,378 @@
/* $Id: utils.c,v 1.147 2006/07/05 14:20:02 andrew Exp $ */
/*
* Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <crm/msg_xml.h>
#include <allocate.h>
#include <utils.h>
#include <lib/crm/pengine/utils.h>
/* only for rsc_colocation constraints */
rsc_colocation_t *
invert_constraint(rsc_colocation_t *constraint)
{
rsc_colocation_t *inverted_con = NULL;
crm_debug_3("Inverting constraint");
if(constraint == NULL) {
pe_err("Cannot invert NULL constraint");
return NULL;
}
crm_malloc0(inverted_con, sizeof(rsc_colocation_t));
if(inverted_con == NULL) {
return NULL;
}
inverted_con->id = constraint->id;
inverted_con->score = constraint->score;
/* swap the direction */
inverted_con->rsc_lh = constraint->rsc_rh;
inverted_con->rsc_rh = constraint->rsc_lh;
inverted_con->state_lh = constraint->state_rh;
inverted_con->state_rh = constraint->state_lh;
crm_action_debug_3(
print_rsc_colocation("Inverted constraint", inverted_con, FALSE));
return inverted_con;
}
gint sort_cons_strength(gconstpointer a, gconstpointer b)
{
const rsc_colocation_t *rsc_constraint1 = (const rsc_colocation_t*)a;
const rsc_colocation_t *rsc_constraint2 = (const rsc_colocation_t*)b;
if(a == NULL) { return 1; }
if(b == NULL) { return -1; }
if(rsc_constraint1->score > rsc_constraint2->score) {
return 1;
}
if(rsc_constraint1->score < rsc_constraint2->score) {
return -1;
}
return 0;
}
void
print_rsc_to_node(const char *pre_text, rsc_to_node_t *cons, gboolean details)
{
if(cons == NULL) {
crm_debug_4("%s%s: <NULL>",
pre_text==NULL?"":pre_text,
pre_text==NULL?"":": ");
return;
}
crm_debug_4("%s%s%s Constraint %s (%p) - %d nodes:",
pre_text==NULL?"":pre_text,
pre_text==NULL?"":": ",
"rsc_to_node",
cons->id, cons,
g_list_length(cons->node_list_rh));
if(details == FALSE) {
crm_debug_4("\t%s (node placement rule)",
safe_val3(NULL, cons, rsc_lh, id));
slist_iter(
node, node_t, cons->node_list_rh, lpc,
print_node("\t\t-->", node, FALSE)
);
}
}
void
print_rsc_colocation(const char *pre_text, rsc_colocation_t *cons, gboolean details)
{
if(cons == NULL) {
crm_debug_4("%s%s: <NULL>",
pre_text==NULL?"":pre_text,
pre_text==NULL?"":": ");
return;
}
crm_debug_4("%s%s%s Constraint %s (%p):",
pre_text==NULL?"":pre_text,
pre_text==NULL?"":": ",
XML_CONS_TAG_RSC_DEPEND, cons->id, cons);
if(details == FALSE) {
crm_debug_4("\t%s --> %s, %d",
safe_val3(NULL, cons, rsc_lh, id),
safe_val3(NULL, cons, rsc_rh, id),
cons->score);
}
}
void
pe_free_ordering(GListPtr constraints)
{
GListPtr iterator = constraints;
while(iterator != NULL) {
order_constraint_t *order = iterator->data;
iterator = iterator->next;
crm_free(order->lh_action_task);
crm_free(order->rh_action_task);
crm_free(order);
}
if(constraints != NULL) {
g_list_free(constraints);
}
}
void
pe_free_rsc_to_node(GListPtr constraints)
{
GListPtr iterator = constraints;
while(iterator != NULL) {
rsc_to_node_t *cons = iterator->data;
iterator = iterator->next;
pe_free_shallow(cons->node_list_rh);
crm_free(cons);
}
if(constraints != NULL) {
g_list_free(constraints);
}
}
rsc_to_node_t *
rsc2node_new(const char *id, resource_t *rsc,
int node_weight, node_t *foo_node, pe_working_set_t *data_set)
{
rsc_to_node_t *new_con = NULL;
if(rsc == NULL || id == NULL) {
pe_err("Invalid constraint %s for rsc=%p", crm_str(id), rsc);
return NULL;
}
crm_malloc0(new_con, sizeof(rsc_to_node_t));
if(new_con != NULL) {
new_con->id = id;
new_con->rsc_lh = rsc;
new_con->node_list_rh = NULL;
new_con->role_filter = RSC_ROLE_UNKNOWN;
if(foo_node != NULL) {
node_t *copy = node_copy(foo_node);
copy->weight = node_weight;
new_con->node_list_rh = g_list_append(NULL, copy);
} else {
CRM_CHECK(node_weight == 0, return NULL);
}
data_set->placement_constraints = g_list_append(
data_set->placement_constraints, new_con);
rsc->rsc_location = g_list_append(
rsc->rsc_location, new_con);
}
return new_con;
}
const char *
ordering_type2text(enum pe_ordering type)
{
const char *result = "<unknown>";
switch(type)
{
case pe_ordering_manditory:
result = "manditory";
break;
case pe_ordering_restart:
result = "restart";
break;
case pe_ordering_recover:
result = "recover";
break;
case pe_ordering_optional:
result = "optional";
break;
case pe_ordering_postnotify:
result = "post_notify";
break;
}
return result;
}
gboolean
can_run_resources(const node_t *node)
{
if(node->details->online == FALSE
|| node->details->shutdown
|| node->details->unclean
|| node->details->standby) {
crm_debug_2("%s: online=%d, unclean=%d, standby=%d",
node->details->uname, node->details->online,
node->details->unclean, node->details->standby);
return FALSE;
}
return TRUE;
}
/* return -1 if 'a' is more preferred
* return 1 if 'b' is more preferred
*/
gint sort_node_weight(gconstpointer a, gconstpointer b)
{
const node_t *node1 = (const node_t*)a;
const node_t *node2 = (const node_t*)b;
int node1_weight = 0;
int node2_weight = 0;
if(a == NULL) { return 1; }
if(b == NULL) { return -1; }
node1_weight = node1->weight;
node2_weight = node2->weight;
if(can_run_resources(node1) == FALSE) {
node1_weight = -INFINITY;
}
if(can_run_resources(node2) == FALSE) {
node2_weight = -INFINITY;
}
if(node1_weight > node2_weight) {
crm_debug_3("%s (%d) > %s (%d) : weight",
node1->details->uname, node1_weight,
node2->details->uname, node2_weight);
return -1;
}
if(node1_weight < node2_weight) {
crm_debug_3("%s (%d) < %s (%d) : weight",
node1->details->uname, node1_weight,
node2->details->uname, node2_weight);
return 1;
}
crm_debug_3("%s (%d) == %s (%d) : weight",
node1->details->uname, node1_weight,
node2->details->uname, node2_weight);
/* now try to balance resources across the cluster */
if(node1->details->num_resources
< node2->details->num_resources) {
crm_debug_3("%s (%d) < %s (%d) : resources",
node1->details->uname, node1->details->num_resources,
node2->details->uname, node2->details->num_resources);
return -1;
} else if(node1->details->num_resources
> node2->details->num_resources) {
crm_debug_3("%s (%d) > %s (%d) : resources",
node1->details->uname, node1->details->num_resources,
node2->details->uname, node2->details->num_resources);
return 1;
}
crm_debug_4("%s = %s", node1->details->uname, node2->details->uname);
return 0;
}
gboolean
native_assign_node(resource_t *rsc, GListPtr nodes, node_t *chosen)
{
int multiple = 0;
CRM_ASSERT(rsc->variant == pe_native);
if(chosen == NULL) {
crm_debug("Could not allocate a node for %s", rsc->id);
rsc->next_role = RSC_ROLE_STOPPED;
return FALSE;
} else if(chosen->details->unclean
|| chosen->details->standby
|| chosen->details->shutdown) {
crm_debug("All nodes for color %s are unavailable"
", unclean or shutting down", rsc->id);
rsc->next_role = RSC_ROLE_STOPPED;
return FALSE;
} else if(chosen->weight < 0) {
- crm_debug_2("Even highest ranked node for color %s, had weight %d",
+ crm_debug("Even highest ranked node for %s, had weight %d",
rsc->id, chosen->weight);
rsc->next_role = RSC_ROLE_STOPPED;
return FALSE;
}
if(rsc->next_role == RSC_ROLE_UNKNOWN) {
rsc->next_role = RSC_ROLE_STARTED;
}
slist_iter(candidate, node_t, nodes, lpc,
crm_debug("Color %s, Node[%d] %s: %d", rsc->id, lpc,
candidate->details->uname, candidate->weight);
if(chosen->weight > 0
&& candidate->details->unclean == FALSE
&& candidate->weight == chosen->weight) {
multiple++;
} else {
break;
}
);
if(multiple > 1) {
int log_level = LOG_INFO;
char *score = score2char(chosen->weight);
if(chosen->weight >= INFINITY) {
log_level = LOG_WARNING;
}
crm_log_maybe(log_level, "%d nodes with equal score (%s) for"
" running the listed resources (chose %s):",
multiple, score, chosen->details->uname);
crm_free(score);
}
/* todo: update the old node for each resource to reflect its
* new resource count
*/
if(rsc->allocated_to) {
node_t *old = rsc->allocated_to;
old->details->allocated_rsc = g_list_remove(old->details->allocated_rsc, rsc);
old->details->num_resources--;
old->count--;
}
crm_debug("Assigning %s to %s", chosen->details->uname, rsc->id);
rsc->provisional = FALSE;
crm_free(rsc->allocated_to);
rsc->allocated_to = node_copy(chosen);
chosen->details->allocated_rsc = g_list_append(chosen->details->allocated_rsc, rsc);
chosen->details->num_resources++;
chosen->count++;
return TRUE;
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Jan 25, 7:12 AM (1 d, 15 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1321628
Default Alt Text
(208 KB)

Event Timeline