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

Function rsc_ticket_constraint

pengine/native.c:1476–1562  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1474}
1475
1476void
1477rsc_ticket_constraint(resource_t * rsc_lh, rsc_ticket_t * rsc_ticket, pe_working_set_t * data_set)
1478{
1479 if (rsc_ticket == NULL) {
1480 pe_err("rsc_ticket was NULL");
1481 return;
1482 }
1483
1484 if (rsc_lh == NULL) {
1485 pe_err("rsc_lh was NULL for %s", rsc_ticket->id);
1486 return;
1487 }
1488
1489 if (rsc_ticket->ticket->granted && rsc_ticket->ticket->standby == FALSE) {
1490 return;
1491 }
1492
1493 if (rsc_lh->children) {
1494 GListPtr gIter = rsc_lh->children;
1495
1496 pe_rsc_trace(rsc_lh, "Processing ticket dependencies from %s", rsc_lh->id);
1497
1498 for (; gIter != NULL; gIter = gIter->next) {
1499 resource_t *child_rsc = (resource_t *) gIter->data;
1500
1501 rsc_ticket_constraint(child_rsc, rsc_ticket, data_set);
1502 }
1503 return;
1504 }
1505
1506 pe_rsc_trace(rsc_lh, "%s: Processing ticket dependency on %s (%s, %s)",
1507 rsc_lh->id, rsc_ticket->ticket->id, rsc_ticket->id, role2text(rsc_ticket->role_lh));
1508
1509 if (rsc_ticket->ticket->granted == FALSE && g_list_length(rsc_lh->running_on) > 0) {
1510 GListPtr gIter = NULL;
1511
1512 switch (rsc_ticket->loss_policy) {
1513 case loss_ticket_stop:
1514 resource_location(rsc_lh, NULL, -INFINITY, "__loss_of_ticket__", data_set);
1515 break;
1516
1517 case loss_ticket_demote:
1518 /*Promotion score will be set to -INFINITY in master_promotion_order() */
1519 if (rsc_ticket->role_lh != RSC_ROLE_MASTER) {
1520 resource_location(rsc_lh, NULL, -INFINITY, "__loss_of_ticket__", data_set);
1521 }
1522 break;
1523
1524 case loss_ticket_fence:
1525 if (filter_rsc_ticket(rsc_lh, rsc_ticket) == FALSE) {
1526 return;
1527 }
1528
1529 resource_location(rsc_lh, NULL, -INFINITY, "__loss_of_ticket__", data_set);
1530
1531 for (gIter = rsc_lh->running_on; gIter != NULL; gIter = gIter->next) {
1532 node_t *node = (node_t *) gIter->data;
1533

Callers 3

clone_colorFunction · 0.85
native_colorFunction · 0.85
group_colorFunction · 0.85

Calls 3

role2textFunction · 0.85
resource_locationFunction · 0.85
filter_rsc_ticketFunction · 0.85

Tested by

no test coverage detected