18 #define VARIANT_GROUP 1
24 xmlNode *xml_obj = rsc->
xml;
25 xmlNode *xml_native_rsc = NULL;
26 group_variant_data_t *group_data = NULL;
28 const char *group_colocated = g_hash_table_lookup(rsc->
meta,
"collocated");
29 const char *clone_id = NULL;
33 group_data = calloc(1,
sizeof(group_variant_data_t));
34 group_data->num_children = 0;
35 group_data->first_child = NULL;
36 group_data->last_child = NULL;
40 if ((group_ordered == NULL)
42 group_data->ordered = TRUE;
44 if ((group_colocated == NULL)
46 group_data->colocated = TRUE;
51 for (xml_native_rsc = __xml_first_child_element(xml_obj); xml_native_rsc != NULL;
52 xml_native_rsc = __xml_next_element(xml_native_rsc)) {
57 if (
common_unpack(xml_native_rsc, &new_rsc, rsc, data_set) == FALSE) {
59 if (new_rsc != NULL && new_rsc->
fns != NULL) {
65 group_data->num_children++;
68 if (group_data->first_child == NULL) {
69 group_data->first_child = new_rsc;
71 group_data->last_child = new_rsc;
76 if (group_data->num_children == 0) {
81 pe_rsc_trace(rsc,
"Added %d children to resource %s...", group_data->num_children, rsc->
id);
89 gboolean c_all = TRUE;
90 gboolean c_any = FALSE;
93 for (; gIter != NULL; gIter = gIter->next) {
96 if (child_rsc->
fns->
active(child_rsc, all)) {
103 if (c_any == FALSE) {
105 }
else if (all && c_all == FALSE) {
112 group_print_xml(
pe_resource_t * rsc,
const char *pre_text,
long options,
void *print_data)
121 for (; gIter != NULL; gIter = gIter->next) {
124 child_rsc->
fns->
print(child_rsc, child_text, options, print_data);
134 char *child_text = NULL;
137 if (pre_text == NULL) {
142 group_print_xml(rsc, pre_text, options, print_data);
148 status_print(
"%sResource Group: %s", pre_text ? pre_text :
"", rsc->
id);
161 for (; gIter != NULL; gIter = gIter->next) {
167 child_rsc->
fns->
print(child_rsc, child_text, options, print_data);
184 unsigned int options = va_arg(args,
unsigned int);
189 char *count = crm_itoa(g_list_length(gIter));
192 gboolean printed_header = FALSE;
194 for (; gIter != NULL; gIter = gIter->next) {
197 if (!printed_header) {
198 printed_header = TRUE;
202 ,
"number_resources", count);
207 out->message(out, crm_map_element_name(child_rsc->
xml), options, child_rsc, only_show);
210 if (printed_header) {
221 unsigned int options = va_arg(args,
unsigned int);
225 out->begin_list(out, NULL, NULL,
"Resource Group: %s", rsc->
id);
233 out->message(out, crm_map_element_name(child_rsc->
xml), options, child_rsc, only_show);
246 unsigned int options = va_arg(args,
unsigned int);
250 out->begin_list(out, NULL, NULL,
"Resource Group: %s", rsc->
id);
259 out->message(out, crm_map_element_name(child_rsc->
xml), options, child_rsc, only_show);
279 child_rsc->
fns->
free(child_rsc);
294 for (; gIter != NULL; gIter = gIter->next) {
298 if (role > group_role) {