diff -r 9132a8507a56 include/crm/pengine/status.h --- a/include/crm/pengine/status.h Wed Aug 01 10:01:21 2012 +0900 +++ b/include/crm/pengine/status.h Wed Aug 01 10:08:04 2012 +0900 @@ -101,6 +101,7 @@ int max_valid_nodes; int order_id; int action_id; + int colocation_id; /* final output */ xmlNode *graph; diff -r 9132a8507a56 lib/pengine/status.c --- a/lib/pengine/status.c Wed Aug 01 10:01:21 2012 +0900 +++ b/lib/pengine/status.c Wed Aug 01 10:08:04 2012 +0900 @@ -224,6 +224,7 @@ data_set->colocation_constraints = NULL; data_set->order_id = 1; + data_set->colocation_id = 1; data_set->action_id = 1; data_set->num_synapse = 0; data_set->max_valid_nodes = 0; diff -r 9132a8507a56 pengine/constraints.c --- a/pengine/constraints.c Wed Aug 01 10:01:21 2012 +0900 +++ b/pengine/constraints.c Wed Aug 01 10:08:04 2012 +0900 @@ -522,7 +522,14 @@ return 1; } - return strcmp(rsc_constraint1->rsc_lh->id, rsc_constraint2->rsc_lh->id); + if (rsc_constraint1->colocation_id > rsc_constraint2->colocation_id) { + return 1; + } + if (rsc_constraint1->colocation_id < rsc_constraint2->colocation_id) { + return -1; + } + + return 0; } static gint sort_cons_priority_rh(gconstpointer a, gconstpointer b) @@ -543,7 +550,15 @@ if(rsc_constraint1->rsc_rh->priority < rsc_constraint2->rsc_rh->priority) { return 1; } - return strcmp(rsc_constraint1->rsc_rh->id, rsc_constraint2->rsc_rh->id); + + if (rsc_constraint1->colocation_id > rsc_constraint2->colocation_id) { + return 1; + } + if (rsc_constraint1->colocation_id < rsc_constraint2->colocation_id) { + return -1; + } + + return 0; } gboolean @@ -581,6 +596,7 @@ new_con->rsc_lh = rsc_lh; new_con->rsc_rh = rsc_rh; new_con->score = score; + new_con->colocation_id = data_set->colocation_id++; new_con->role_lh = text2role(state_lh); new_con->role_rh = text2role(state_rh); new_con->node_attribute = node_attr; diff -r 9132a8507a56 pengine/pengine.h --- a/pengine/pengine.h Wed Aug 01 10:01:21 2012 +0900 +++ b/pengine/pengine.h Wed Aug 01 10:08:04 2012 +0900 @@ -75,6 +75,7 @@ int role_rh; int score; + int colocation_id; }; struct rsc_to_node_s {