diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h index 89e17b8..a4f8086 100644 --- a/include/crm/pengine/internal.h +++ b/include/crm/pengine/internal.h @@ -529,6 +529,7 @@ void pe_action_set_flag_reason(const char *function, long line, pe_action_t *act void pe__set_resource_flags_recursive(pe_resource_t *rsc, uint64_t flags); void pe__clear_resource_flags_recursive(pe_resource_t *rsc, uint64_t flags); +void pe__clear_resource_flags_on_all(pe_working_set_t *data_set, uint64_t flag); gboolean add_tag_ref(GHashTable * tags, const char * tag_name, const char * obj_ref); diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 1f5a25b..d3e93ca 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -283,7 +283,6 @@ stacks_and_constraints(pcmk__output_t *out, va_list args) { pe_working_set_t *data_set = va_arg(args, pe_working_set_t *); gboolean recursive = va_arg(args, gboolean); - GList *lpc = NULL; xmlNodePtr cib_constraints = get_object_root(XML_CIB_TAG_CONSTRAINTS, data_set->input); @@ -292,11 +291,7 @@ stacks_and_constraints(pcmk__output_t *out, va_list args) { // Constraints apply to group/clone, not member/instance rsc = uber_parent(rsc); - for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { - pe_resource_t *r = (pe_resource_t *) lpc->data; - - pe__clear_resource_flags(r, pe_rsc_allocating); - } + pe__clear_resource_flags_on_all(data_set, pe_rsc_allocating); out->message(out, "colocations-list", rsc, TRUE, recursive); @@ -304,11 +299,7 @@ stacks_and_constraints(pcmk__output_t *out, va_list args) { out->message(out, "locations-list", rsc); out->end_list(out); - for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { - pe_resource_t *r = (pe_resource_t *) lpc->data; - - pe__clear_resource_flags(r, pe_rsc_allocating); - } + pe__clear_resource_flags_on_all(data_set, pe_rsc_allocating); out->message(out, "colocations-list", rsc, FALSE, recursive); return pcmk_rc_ok; @@ -321,7 +312,6 @@ stacks_and_constraints_xml(pcmk__output_t *out, va_list args) { pe_working_set_t *data_set = va_arg(args, pe_working_set_t *); gboolean recursive = va_arg(args, gboolean); - GList *lpc = NULL; xmlNodePtr cib_constraints = get_object_root(XML_CIB_TAG_CONSTRAINTS, data_set->input); @@ -330,11 +320,7 @@ stacks_and_constraints_xml(pcmk__output_t *out, va_list args) { // Constraints apply to group/clone, not member/instance rsc = uber_parent(rsc); - for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { - pe_resource_t *r = (pe_resource_t *) lpc->data; - - pe__clear_resource_flags(r, pe_rsc_allocating); - } + pe__clear_resource_flags_on_all(data_set, pe_rsc_allocating); pcmk__output_xml_create_parent(out, "constraints", NULL); @@ -346,11 +332,7 @@ stacks_and_constraints_xml(pcmk__output_t *out, va_list args) { out->message(out, "locations-list", rsc); pcmk__output_xml_pop_parent(out); - for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { - pe_resource_t *r = (pe_resource_t *) lpc->data; - - pe__clear_resource_flags(r, pe_rsc_allocating); - } + pe__clear_resource_flags_on_all(data_set, pe_rsc_allocating); out->message(out, "colocations-list", rsc, FALSE, recursive); return pcmk_rc_ok; diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index b0922fa..b07afbe 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -2010,6 +2010,15 @@ pe__clear_resource_flags_recursive(pe_resource_t *rsc, uint64_t flags) } void +pe__clear_resource_flags_on_all(pe_working_set_t *data_set, uint64_t flag) +{ + for (GList *lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { + pe_resource_t *r = (pe_resource_t *) lpc->data; + pe__clear_resource_flags_recursive(r, flag); + } +} + +void pe__set_resource_flags_recursive(pe_resource_t *rsc, uint64_t flags) { pe__set_resource_flags(rsc, flags); diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 3a9feac..f4500db 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -386,11 +386,7 @@ cli_resource_update_attribute(pcmk__output_t *out, pe_resource_t *rsc, need_init = FALSE; unpack_constraints(cib_constraints, data_set); - for (lpc = data_set->resources; lpc != NULL; lpc = lpc->next) { - pe_resource_t *r = (pe_resource_t *) lpc->data; - - pe__clear_resource_flags(r, pe_rsc_allocating); - } + pe__clear_resource_flags_on_all(data_set, pe_rsc_allocating); } crm_debug("Looking for dependencies %p", rsc->rsc_cons_lhs);