MCPcopy Create free account
hub / github.com/ClusterLabs/pacemaker / apply_master_prefs

Function apply_master_prefs

pengine/master.c:501–550  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

499#define max(a, b) a<b?b:a
500
501static void
502apply_master_prefs(resource_t * rsc)
503{
504 int score, new_score;
505 GListPtr gIter = rsc->children;
506 clone_variant_data_t *clone_data = NULL;
507
508 get_clone_variant_data(clone_data, rsc);
509
510 if (clone_data->applied_master_prefs) {
511 /* Make sure we only do this once */
512 return;
513 }
514
515 clone_data->applied_master_prefs = TRUE;
516
517 for (; gIter != NULL; gIter = gIter->next) {
518 GHashTableIter iter;
519 node_t *node = NULL;
520 resource_t *child_rsc = (resource_t *) gIter->data;
521
522 g_hash_table_iter_init(&iter, child_rsc->allowed_nodes);
523 while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) {
524 if (can_run_resources(node) == FALSE) {
525 /* This node will never be promoted to master,
526 * so don't apply the master score as that may
527 * lead to clone shuffling
528 */
529 continue;
530 }
531
532 score = master_score(child_rsc, node, 0);
533 if (score > 0) {
534 new_score = merge_weights(node->weight, score);
535 if (new_score != node->weight) {
536 pe_rsc_trace(rsc, "\t%s: Updating preference for %s (%d->%d)",
537 child_rsc->id, node->details->uname, node->weight, new_score);
538 node->weight = new_score;
539 }
540 }
541
542 new_score = max(child_rsc->priority, score);
543 if (new_score != child_rsc->priority) {
544 pe_rsc_trace(rsc, "\t%s: Updating priority (%d->%d)",
545 child_rsc->id, child_rsc->priority, new_score);
546 child_rsc->priority = new_score;
547 }
548 }
549 }
550}
551
552static void
553set_role_slave(resource_t * rsc, gboolean current)

Callers 1

master_colorFunction · 0.85

Calls 5

g_hash_table_iter_initFunction · 0.85
g_hash_table_iter_nextFunction · 0.85
can_run_resourcesFunction · 0.85
master_scoreFunction · 0.85
merge_weightsFunction · 0.85

Tested by

no test coverage detected