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

Function find_compatible_child_by_node

pengine/clone.c:906–949  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

904}
905
906static resource_t *
907find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc,
908 enum rsc_role_e filter, gboolean current)
909{
910 node_t *node = NULL;
911 GListPtr gIter = NULL;
912
913 if (local_node == NULL) {
914 crm_err("Can't colocate unrunnable child %s with %s", local_child->id, rsc->id);
915 return NULL;
916 }
917
918 crm_trace("Looking for compatible child from %s for %s on %s",
919 local_child->id, rsc->id, local_node->details->uname);
920
921 gIter = rsc->children;
922 for (; gIter != NULL; gIter = gIter->next) {
923 resource_t *child_rsc = (resource_t *) gIter->data;
924 enum rsc_role_e next_role = child_rsc->fns->state(child_rsc, current);
925
926 node = child_rsc->fns->location(child_rsc, NULL, current);
927
928 if (filter != RSC_ROLE_UNKNOWN && next_role != filter) {
929 crm_trace("Filtered %s", child_rsc->id);
930 continue;
931 }
932
933 if (node && local_node && node->details == local_node->details) {
934 crm_trace("Pairing %s with %s on %s",
935 local_child->id, child_rsc->id, node->details->uname);
936 return child_rsc;
937
938 } else if (node) {
939 crm_trace("%s - %s vs %s", child_rsc->id, node->details->uname,
940 local_node->details->uname);
941
942 } else {
943 crm_trace("%s - not allocated %d", child_rsc->id, current);
944 }
945 }
946
947 crm_trace("Can't pair %s with %s", local_child->id, rsc->id);
948 return NULL;
949}
950
951resource_t *
952find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter,

Callers 1

find_compatible_childFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected