| 231 | } |
| 232 | |
| 233 | static gint |
| 234 | sort_master_instance(gconstpointer a, gconstpointer b, gpointer data_set) |
| 235 | { |
| 236 | int rc; |
| 237 | enum rsc_role_e role1 = RSC_ROLE_UNKNOWN; |
| 238 | enum rsc_role_e role2 = RSC_ROLE_UNKNOWN; |
| 239 | |
| 240 | const resource_t *resource1 = (const resource_t *)a; |
| 241 | const resource_t *resource2 = (const resource_t *)b; |
| 242 | |
| 243 | CRM_ASSERT(resource1 != NULL); |
| 244 | CRM_ASSERT(resource2 != NULL); |
| 245 | |
| 246 | role1 = resource1->fns->state(resource1, TRUE); |
| 247 | role2 = resource2->fns->state(resource2, TRUE); |
| 248 | |
| 249 | rc = sort_rsc_index(a, b); |
| 250 | if (rc != 0) { |
| 251 | crm_trace("%s %c %s (index)", resource1->id, rc < 0 ? '<' : '>', resource2->id); |
| 252 | return rc; |
| 253 | } |
| 254 | |
| 255 | if (role1 > role2) { |
| 256 | crm_trace("%s %c %s (role)", resource1->id, '<', resource2->id); |
| 257 | return -1; |
| 258 | |
| 259 | } else if (role1 < role2) { |
| 260 | crm_trace("%s %c %s (role)", resource1->id, '>', resource2->id); |
| 261 | return 1; |
| 262 | } |
| 263 | |
| 264 | return sort_clone_instance(a, b, data_set); |
| 265 | } |
| 266 | |
| 267 | GHashTable * |
| 268 | master_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, const char *attr, |
nothing calls this directly
no test coverage detected