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

Function clone_internal_constraints

pengine/clone.c:846–886  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

844}
845
846void
847clone_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
848{
849 resource_t *last_rsc = NULL;
850 GListPtr gIter = rsc->children;
851 clone_variant_data_t *clone_data = NULL;
852
853 get_clone_variant_data(clone_data, rsc);
854
855 pe_rsc_trace(rsc, "Internal constraints for %s", rsc->id);
856 new_rsc_order(rsc, RSC_STOPPED, rsc, RSC_START, pe_order_optional, data_set);
857 new_rsc_order(rsc, RSC_START, rsc, RSC_STARTED, pe_order_runnable_left, data_set);
858 new_rsc_order(rsc, RSC_STOP, rsc, RSC_STOPPED, pe_order_runnable_left, data_set);
859
860 if (rsc->variant == pe_master) {
861 new_rsc_order(rsc, RSC_DEMOTED, rsc, RSC_STOP, pe_order_optional, data_set);
862 new_rsc_order(rsc, RSC_STARTED, rsc, RSC_PROMOTE, pe_order_runnable_left, data_set);
863 }
864
865 for (; gIter != NULL; gIter = gIter->next) {
866 resource_t *child_rsc = (resource_t *) gIter->data;
867
868 child_rsc->cmds->internal_constraints(child_rsc, data_set);
869
870 order_start_start(rsc, child_rsc, pe_order_runnable_left | pe_order_implies_first_printed);
871 new_rsc_order(child_rsc, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed,
872 data_set);
873 if (clone_data->ordered && last_rsc) {
874 order_start_start(last_rsc, child_rsc, pe_order_optional);
875 }
876
877 order_stop_stop(rsc, child_rsc, pe_order_implies_first_printed);
878 new_rsc_order(child_rsc, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed,
879 data_set);
880 if (clone_data->ordered && last_rsc) {
881 order_stop_stop(child_rsc, last_rsc, pe_order_optional);
882 }
883
884 last_rsc = child_rsc;
885 }
886}
887
888static void
889assign_node(resource_t * rsc, node_t * node, gboolean force)

Callers 1

Calls 1

new_rsc_orderFunction · 0.85

Tested by

no test coverage detected