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

Function can_run_instance

pengine/clone.c:350–388  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350static node_t *
351can_run_instance(resource_t * rsc, node_t * node)
352{
353 node_t *local_node = NULL;
354 clone_variant_data_t *clone_data = NULL;
355
356 if (can_run_resources(node) == FALSE) {
357 goto bail;
358
359 } else if (is_set(rsc->flags, pe_rsc_orphan)) {
360 goto bail;
361 }
362
363 local_node = parent_node_instance(rsc, node);
364 get_clone_variant_data(clone_data, rsc->parent);
365
366 if (local_node == NULL) {
367 crm_warn("%s cannot run on %s: node not allowed", rsc->id, node->details->uname);
368 goto bail;
369
370 } else if (local_node->weight < 0) {
371 common_update_score(rsc, node->details->id, local_node->weight);
372 pe_rsc_trace(rsc, "%s cannot run on %s: Parent node weight doesn't allow it.",
373 rsc->id, node->details->uname);
374 } else if (local_node->count < clone_data->clone_node_max) {
375 pe_rsc_trace(rsc, "%s can run on %s: %d", rsc->id, node->details->uname, local_node->count);
376 return local_node;
377
378 } else {
379 pe_rsc_trace(rsc, "%s cannot run on %s: node full (%d >= %d)",
380 rsc->id, node->details->uname, local_node->count, clone_data->clone_node_max);
381 }
382
383 bail:
384 if (node) {
385 common_update_score(rsc, node->details->id, -INFINITY);
386 }
387 return NULL;
388}
389
390static node_t *
391color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, pe_working_set_t * data_set)

Callers 1

color_instanceFunction · 0.85

Calls 4

can_run_resourcesFunction · 0.85
is_setFunction · 0.85
parent_node_instanceFunction · 0.85
common_update_scoreFunction · 0.85

Tested by

no test coverage detected