15 #define SUMMARY_HEADER(rc, out) do { \
16 if (rc == pcmk_rc_no_output) { \
17 out->begin_list(out, NULL, NULL, "Cluster Summary"); \
23 failed_action_string(xmlNodePtr xml_op) {
29 time_t last_change = 0;
42 "='%s', queued=%sms, exec=%sms",
43 op_key ? op_key :
ID(xml_op),
45 services_ocf_exitcode_str(
rc),
rc,
47 services_lrm_status_str(status),
48 exit_reason ? exit_reason :
"none",
57 return crm_strdup_printf(
"%s on %s '%s' (%d): call=%s, status=%s, exitreason='%s'",
58 op_key ? op_key :
ID(xml_op),
60 services_ocf_exitcode_str(
rc),
rc,
62 services_lrm_status_str(status),
63 exit_reason ? exit_reason :
"none");
70 xmlNode *stack =
get_xpath_object(
"//nvpair[@name='cluster-infrastructure']",
71 data_set->
input, LOG_DEBUG);
76 last_changed_string(
const char *last_written,
const char *user,
77 const char *client,
const char *origin) {
78 if (last_written != NULL || user != NULL || client != NULL || origin != NULL) {
80 last_written ? last_written :
"",
83 client ?
" via " :
"",
86 origin ? origin :
"");
93 op_history_string(xmlNode *xml_op,
const char *task,
const char *interval_ms_s,
94 int rc, gboolean print_timing) {
96 char *interval_str = NULL;
106 char *last_change_str = NULL;
107 char *last_run_str = NULL;
108 char *exec_str = NULL;
109 char *queue_str = NULL;
111 const char *value = NULL;
144 interval_str ? interval_str :
"",
145 last_change_str ? last_change_str :
"",
146 last_run_str ? last_run_str :
"",
147 exec_str ? exec_str :
"",
148 queue_str ? queue_str :
"",
149 rc, services_ocf_exitcode_str(
rc));
151 if (last_change_str) {
152 free(last_change_str);
168 interval_str ?
":" :
"",
169 interval_str ? interval_str :
"");
180 resource_history_string(
pe_resource_t *rsc,
const char *rsc_id, gboolean all,
181 int failcount, time_t last_failure) {
186 }
else if (all || failcount || last_failure > 0) {
187 char *failcount_s = NULL;
188 char *lastfail_s = NULL;
194 failcount_s = strdup(
"");
196 if (last_failure > 0) {
204 lastfail_s? lastfail_s :
"");
214 PCMK__OUTPUT_ARGS(
"cluster-summary",
"struct pe_working_set_t *",
"gboolean",
"gboolean",
"gboolean",
215 "gboolean",
"gboolean",
"gboolean")
219 gboolean print_clone_detail = va_arg(args, gboolean);
220 gboolean show_stack = va_arg(args, gboolean);
221 gboolean show_dc = va_arg(args, gboolean);
222 gboolean show_times = va_arg(args, gboolean);
223 gboolean show_counts = va_arg(args, gboolean);
224 gboolean show_options = va_arg(args, gboolean);
227 const char *stack_s = get_cluster_stack(data_set);
231 out->message(out,
"cluster-stack", stack_s);
235 if (data_set->
dc_node == NULL || show_dc) {
237 data_set->
input, LOG_DEBUG);
238 const char *dc_version_s = dc_version?
245 out->message(out,
"cluster-dc", data_set->
dc_node, quorum, dc_version_s, dc_name);
256 out->message(out,
"cluster-times", last_written, user, client, origin);
261 out->message(out,
"cluster-counts", g_list_length(data_set->
nodes),
268 out->message(out,
"cluster-options", data_set);
276 out->message(out,
"maint-mode");
283 PCMK__OUTPUT_ARGS(
"cluster-summary",
"struct pe_working_set_t *",
"gboolean",
"gboolean",
"gboolean",
284 "gboolean",
"gboolean",
"gboolean")
288 gboolean print_clone_detail = va_arg(args, gboolean);
289 gboolean show_stack = va_arg(args, gboolean);
290 gboolean show_dc = va_arg(args, gboolean);
291 gboolean show_times = va_arg(args, gboolean);
292 gboolean show_counts = va_arg(args, gboolean);
293 gboolean show_options = va_arg(args, gboolean);
296 const char *stack_s = get_cluster_stack(data_set);
300 out->message(out,
"cluster-stack", stack_s);
304 if (data_set->
dc_node == NULL || show_dc) {
306 data_set->
input, LOG_DEBUG);
307 const char *dc_version_s = dc_version?
314 out->message(out,
"cluster-dc", data_set->
dc_node, quorum, dc_version_s, dc_name);
325 out->message(out,
"cluster-times", last_written, user, client, origin);
330 out->message(out,
"cluster-counts", g_list_length(data_set->
nodes),
344 out->begin_list(out, NULL, NULL,
"Config Options");
345 out->message(out,
"cluster-options", data_set);
353 out->message(out,
"maint-mode");
364 const char *node_host = NULL;
365 const char *node_id = NULL;
374 if (host_node && host_node->
details) {
377 if (node_host == NULL) {
390 name_len += strlen(node_host) + 1;
393 name_len += strlen(node_id) + 3;
397 node_name = malloc(name_len);
401 strcat(node_name,
"@");
402 strcat(node_name, node_host);
405 strcat(node_name,
" (");
406 strcat(node_name, node_id);
407 strcat(node_name,
")");
414 ,
size_t pairs_count, ...)
416 xmlNodePtr xml_node = NULL;
425 : xmlNewChild(xml_node, NULL, (
pcmkXmlStr) tag_name, NULL);
427 va_start(args, pairs_count);
428 while(pairs_count--) {
429 const char *param_name = va_arg(args,
const char *);
430 const char *param_value = va_arg(args,
const char *);
431 if (param_name && param_value) {
443 PCMK__OUTPUT_ARGS(
"ban",
"struct pe_node_t *",
"struct pe__location_t *",
"gboolean")
448 gboolean print_clone_detail = va_arg(args, gboolean);
463 PCMK__OUTPUT_ARGS(
"ban",
"struct pe_node_t *",
"struct pe__location_t *",
"gboolean")
468 gboolean print_clone_detail = va_arg(args, gboolean);
471 out->list_item(out, NULL,
"%s\tprevents %s from running %son %s",
480 PCMK__OUTPUT_ARGS(
"ban",
"struct pe_node_t *",
"struct pe__location_t *",
"gboolean")
486 gboolean print_clone_detail G_GNUC_UNUSED = va_arg(args, gboolean);
488 char *weight_s = crm_itoa(pe_node->
weight);
507 unsigned int nnodes = va_arg(args,
unsigned int);
508 int nresources = va_arg(args,
int);
509 int ndisabled = va_arg(args,
int);
510 int nblocked = va_arg(args,
int);
518 if (ndisabled && nblocked) {
533 " from further action due to failure)");
534 }
else if (ndisabled && !nblocked) {
543 }
else if (!ndisabled && nblocked) {
552 " from further action due to failure)");
566 unsigned int nnodes = va_arg(args,
unsigned int);
567 int nresources = va_arg(args,
int);
568 int ndisabled = va_arg(args,
int);
569 int nblocked = va_arg(args,
int);
571 out->list_item(out, NULL,
"%d node%s configured",
574 if (ndisabled && nblocked) {
575 out->list_item(out, NULL,
"%d resource instance%s configured "
576 "(%d DISABLED, %d BLOCKED from "
577 "further action due to failure)",
580 }
else if (ndisabled && !nblocked) {
581 out->list_item(out, NULL,
"%d resource instance%s configured "
584 }
else if (!ndisabled && nblocked) {
585 out->list_item(out, NULL,
"%d resource instance%s configured "
586 "(%d BLOCKED from further action "
590 out->list_item(out, NULL,
"%d resource instance%s configured",
603 unsigned int nnodes = va_arg(args,
unsigned int);
604 int nresources = va_arg(args,
int);
605 int ndisabled = va_arg(args,
int);
606 int nblocked = va_arg(args,
int);
608 char *s = crm_itoa(nnodes);
612 s = crm_itoa(nresources);
616 s = crm_itoa(ndisabled);
620 s = crm_itoa(nblocked);
627 PCMK__OUTPUT_ARGS(
"cluster-dc",
"struct pe_node_t *",
"const char *",
"const char *",
"char *")
633 const char *quorum = va_arg(args,
const char *);
634 const char *dc_version_s = va_arg(args,
const char *);
635 char *dc_name = va_arg(args,
char *);
642 dc_name, dc_version_s ? dc_version_s :
"unknown");
647 dc_name, dc_version_s ? dc_version_s :
"unknown");
661 PCMK__OUTPUT_ARGS(
"cluster-dc",
"struct pe_node_t *",
"const char *",
"const char *",
"char *")
665 const char *quorum = va_arg(args,
const char *);
666 const char *dc_version_s = va_arg(args,
const char *);
667 char *dc_name = va_arg(args,
char *);
670 out->list_item(out,
"Current DC",
"%s (version %s) - partition %s quorum",
671 dc_name, dc_version_s ? dc_version_s :
"unknown",
674 out->list_item(out,
"Current DC",
"NONE");
680 PCMK__OUTPUT_ARGS(
"cluster-dc",
"struct pe_node_t *",
"const char *",
"const char *",
"char *")
686 const char *quorum = va_arg(args,
const char *);
687 const char *dc_version_s = va_arg(args,
const char *);
688 char *dc_name G_GNUC_UNUSED = va_arg(args,
char *);
706 fprintf(out->dest,
"\n *** Resource management is DISABLED ***");
707 fprintf(out->dest,
"\n The cluster will not attempt to start, stop or recover services");
708 fprintf(out->dest,
"\n");
717 out->list_item(out, NULL,
"STONITH of failed nodes %s",
720 out->list_item(out, NULL,
"Cluster is %s",
725 out->list_item(out, NULL,
"No quorum policy: Freeze resources");
729 out->list_item(out, NULL,
"No quorum policy: Stop ALL resources");
733 out->list_item(out, NULL,
"No quorum policy: Ignore");
737 out->list_item(out, NULL,
"No quorum policy: Suicide");
747 " (the cluster will not attempt to start, stop, or recover services)");
749 out->list_item(out, NULL,
"Resource management: enabled");
761 out->info(out,
"Resource management is DISABLED. The cluster will not attempt to start, stop or recover services.");
773 out->list_item(out, NULL,
"STONITH of failed nodes %s",
776 out->list_item(out, NULL,
"Cluster is %s",
781 out->list_item(out, NULL,
"No quorum policy: Freeze resources");
785 out->list_item(out, NULL,
"No quorum policy: Stop ALL resources");
789 out->list_item(out, NULL,
"No quorum policy: Ignore");
793 out->list_item(out, NULL,
"No quorum policy: Suicide");
806 xmlSetProp(node, (
pcmkXmlStr)
"stonith-enabled",
808 xmlSetProp(node, (
pcmkXmlStr)
"symmetric-cluster",
829 xmlSetProp(node, (
pcmkXmlStr)
"maintenance-mode",
839 const char *stack_s = va_arg(args,
const char *);
850 const char *stack_s = va_arg(args,
const char *);
851 out->list_item(out,
"Stack",
"%s", stack_s);
859 const char *stack_s = va_arg(args,
const char *);
866 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
872 const char *last_written = va_arg(args,
const char *);
873 const char *user = va_arg(args,
const char *);
874 const char *client = va_arg(args,
const char *);
875 const char *origin = va_arg(args,
const char *);
877 char *buf = last_changed_string(last_written, user, client, origin);
890 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
896 const char *last_written = va_arg(args,
const char *);
897 const char *user = va_arg(args,
const char *);
898 const char *client = va_arg(args,
const char *);
899 const char *origin = va_arg(args,
const char *);
911 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
914 const char *last_written = va_arg(args,
const char *);
915 const char *user = va_arg(args,
const char *);
916 const char *client = va_arg(args,
const char *);
917 const char *origin = va_arg(args,
const char *);
919 char *buf = last_changed_string(last_written, user, client, origin);
922 out->list_item(out,
"Last change",
" %s", buf);
931 xmlNodePtr xml_op = va_arg(args, xmlNodePtr);
932 char *s = failed_action_string(xml_op);
934 out->list_item(out, NULL,
"%s", s);
942 xmlNodePtr xml_op = va_arg(args, xmlNodePtr);
950 char *rc_s = crm_itoa(
rc);
951 char *reason_s =
crm_xml_escape(exit_reason ? exit_reason :
"none");
954 xmlSetProp(node, (
pcmkXmlStr) (op_key ?
"op_key" :
"id"),
965 (
pcmkXmlStr) services_lrm_status_str(status));
968 guint interval_ms = 0;
972 char *rc_change = NULL;
975 s = crm_itoa(interval_ms);
999 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1003 unsigned int print_opts = va_arg(args,
unsigned int);
1004 gboolean full = va_arg(args, gboolean);
1005 const char *node_mode G_GNUC_UNUSED = va_arg(args,
const char *);
1006 gboolean print_clone_detail = va_arg(args, gboolean);
1007 gboolean print_brief = va_arg(args, gboolean);
1008 gboolean group_by_node = va_arg(args, gboolean);
1036 if (print_brief && group_by_node) {
1037 out->begin_list(out, NULL, NULL, NULL);
1042 }
else if (group_by_node) {
1045 out->begin_list(out, NULL, NULL, NULL);
1048 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1053 out->begin_list(out, NULL, NULL,
"%s", buf);
1061 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1065 unsigned int print_opts = va_arg(args,
unsigned int);
1066 gboolean full = va_arg(args, gboolean);
1067 const char *node_mode = va_arg(args,
const char *);
1068 gboolean print_clone_detail = va_arg(args, gboolean);
1069 gboolean print_brief = va_arg(args, gboolean);
1070 gboolean group_by_node = va_arg(args, gboolean);
1087 if (group_by_node) {
1088 out->begin_list(out, NULL, NULL,
"%s", buf);
1089 out->begin_list(out, NULL, NULL,
"Resources");
1099 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1106 out->list_item(out, NULL,
"%s", buf);
1118 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1122 unsigned int print_opts = va_arg(args,
unsigned int);
1123 gboolean full = va_arg(args, gboolean);
1124 const char *node_mode G_GNUC_UNUSED = va_arg(args,
const char *);
1125 gboolean print_clone_detail G_GNUC_UNUSED = va_arg(args, gboolean);
1126 gboolean print_brief G_GNUC_UNUSED = va_arg(args, gboolean);
1127 gboolean group_by_node = va_arg(args, gboolean);
1157 "resources_running", length_s,
1162 xmlSetProp(xml_node, (
pcmkXmlStr)
"id_as_resource",
1166 if (group_by_node) {
1171 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1186 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1189 const char *
name = va_arg(args,
const char *);
1190 const char *value = va_arg(args,
const char *);
1191 gboolean add_extra = va_arg(args, gboolean);
1192 int expected_score = va_arg(args,
int);
1199 out->list_item(out, NULL,
"%-32s\t: %-10s\t: Connectivity is lost",
name, value);
1200 }
else if (v < expected_score) {
1201 out->list_item(out, NULL,
"%-32s\t: %-10s\t: Connectivity is degraded (Expected=%d)",
name, value, expected_score);
1203 out->list_item(out, NULL,
"%-32s\t: %-10s",
name, value);
1206 out->list_item(out, NULL,
"%-32s\t: %-10s",
name, value);
1212 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1215 const char *
name = va_arg(args,
const char *);
1216 const char *value = va_arg(args,
const char *);
1217 gboolean add_extra = va_arg(args, gboolean);
1218 int expected_score = va_arg(args,
int);
1230 }
else if (v < expected_score) {
1231 char *buf =
crm_strdup_printf(
"(connectivity is degraded -- expected %d", expected_score);
1236 out->list_item(out, NULL,
"%s: %s",
name, value);
1242 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1245 const char *
name = va_arg(args,
const char *);
1246 const char *value = va_arg(args,
const char *);
1247 gboolean add_extra = va_arg(args, gboolean);
1248 int expected_score = va_arg(args,
int);
1255 char *buf = crm_itoa(expected_score);
1263 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1268 unsigned int print_opts = va_arg(args,
unsigned int);
1269 gboolean print_clone_detail = va_arg(args, gboolean);
1270 gboolean print_brief = va_arg(args, gboolean);
1271 gboolean group_by_node = va_arg(args, gboolean);
1273 gboolean printed_header = FALSE;
1275 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1282 if (printed_header == FALSE) {
1283 printed_header = TRUE;
1284 out->begin_list(out, NULL, NULL,
"Node List");
1287 out->message(out,
"node", node, print_opts, TRUE, NULL, print_clone_detail,
1288 print_brief, group_by_node, only_show);
1291 if (printed_header == TRUE) {
1298 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1303 unsigned int print_opts = va_arg(args,
unsigned int);
1304 gboolean print_clone_detail = va_arg(args, gboolean);
1305 gboolean print_brief = va_arg(args, gboolean);
1306 gboolean group_by_node = va_arg(args, gboolean);
1309 char *online_nodes = NULL;
1310 char *online_remote_nodes = NULL;
1311 char *online_guest_nodes = NULL;
1312 char *offline_nodes = NULL;
1313 char *offline_remote_nodes = NULL;
1316 gboolean printed_header = FALSE;
1318 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1320 const char *node_mode = NULL;
1328 if (printed_header == FALSE) {
1329 out->begin_list(out, NULL, NULL,
"Node List");
1331 printed_header = TRUE;
1337 node_mode =
"UNCLEAN (online)";
1340 node_mode =
"UNCLEAN (pending)";
1343 node_mode =
"UNCLEAN (offline)";
1347 node_mode =
"pending";
1350 node_mode =
"standby (on-fail)";
1355 node_mode =
"standby (with active resources)";
1357 node_mode =
"standby";
1360 node_mode =
"OFFLINE (standby)";
1365 node_mode =
"maintenance";
1367 node_mode =
"OFFLINE (maintenance)";
1371 node_mode =
"online";
1372 if (group_by_node == FALSE) {
1387 node_mode =
"OFFLINE";
1388 if (group_by_node == FALSE) {
1403 out->message(out,
"node", node, print_opts, TRUE, node_mode, print_clone_detail,
1404 print_brief, group_by_node, only_show);
1410 out->list_item(out,
"Online",
"[%s ]", online_nodes);
1413 if (offline_nodes) {
1414 out->list_item(out,
"OFFLINE",
"[%s ]", offline_nodes);
1415 free(offline_nodes);
1417 if (online_remote_nodes) {
1418 out->list_item(out,
"RemoteOnline",
"[%s ]", online_remote_nodes);
1419 free(online_remote_nodes);
1421 if (offline_remote_nodes) {
1422 out->list_item(out,
"RemoteOFFLINE",
"[%s ]", offline_remote_nodes);
1423 free(offline_remote_nodes);
1425 if (online_guest_nodes) {
1426 out->list_item(out,
"GuestOnline",
"[%s ]", online_guest_nodes);
1427 free(online_guest_nodes);
1430 if (printed_header == TRUE) {
1437 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1442 unsigned int print_opts = va_arg(args,
unsigned int);
1443 gboolean print_clone_detail = va_arg(args, gboolean);
1444 gboolean print_brief = va_arg(args, gboolean);
1445 gboolean group_by_node = va_arg(args, gboolean);
1447 out->begin_list(out, NULL, NULL,
"nodes");
1448 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1455 out->message(out,
"node", node, print_opts, TRUE, NULL, print_clone_detail,
1456 print_brief, group_by_node, only_show);
1463 PCMK__OUTPUT_ARGS(
"op-history",
"struct xmlNode *",
"const char *",
"const char *",
"int",
"gboolean")
1466 xmlNode *xml_op = va_arg(args, xmlNode *);
1467 const char *task = va_arg(args,
const char *);
1468 const char *interval_ms_s = va_arg(args,
const char *);
1469 int rc = va_arg(args,
int);
1470 gboolean print_timing = va_arg(args, gboolean);
1472 char *buf = op_history_string(xml_op, task, interval_ms_s,
rc, print_timing);
1474 out->list_item(out, NULL,
"%s", buf);
1480 PCMK__OUTPUT_ARGS(
"op-history",
"struct xmlNode *",
"const char *",
"const char *",
"int",
"gboolean")
1483 xmlNode *xml_op = va_arg(args, xmlNode *);
1484 const char *task = va_arg(args,
const char *);
1485 const char *interval_ms_s = va_arg(args,
const char *);
1486 int rc = va_arg(args,
int);
1487 gboolean print_timing = va_arg(args, gboolean);
1497 if (interval_ms_s &&
safe_str_neq(interval_ms_s,
"0")) {
1504 const char *value = NULL;
1509 if (int_value > 0) {
1518 if (int_value > 0) {
1538 rc_s = crm_itoa(
rc);
1545 PCMK__OUTPUT_ARGS(
"resource-history",
"struct pe_resource_t *",
"const char *",
"gboolean",
"int",
"time_t",
"gboolean")
1549 const char *rsc_id = va_arg(args,
const char *);
1550 gboolean all = va_arg(args, gboolean);
1551 int failcount = va_arg(args,
int);
1552 time_t last_failure = va_arg(args,
int);
1553 gboolean as_header = va_arg(args, gboolean);
1555 char *buf = resource_history_string(rsc, rsc_id, all, failcount, last_failure);
1558 out->begin_list(out, NULL, NULL,
"%s", buf);
1560 out->list_item(out, NULL,
"%s", buf);
1567 PCMK__OUTPUT_ARGS(
"resource-history",
"struct pe_resource_t *",
"const char *",
"gboolean",
"int",
"time_t",
"gboolean")
1571 const char *rsc_id = va_arg(args,
const char *);
1572 gboolean all = va_arg(args, gboolean);
1573 int failcount = va_arg(args,
int);
1574 time_t last_failure = va_arg(args,
int);
1575 gboolean as_header = va_arg(args, gboolean);
1582 }
else if (all || failcount || last_failure > 0) {
1586 xmlSetProp(node, (
pcmkXmlStr)
"migration-threshold",
1590 if (failcount > 0) {
1591 char *s = crm_itoa(failcount);
1598 if (last_failure > 0) {
1604 if (as_header == FALSE) {
1618 out->list_item(out, NULL,
"%s:\t%s%s %s", ticket->
id,
1619 ticket->
granted ?
"granted" :
"revoked",
1620 ticket->
standby ?
" [standby]" :
"",
1624 out->list_item(out, NULL,
"%s:\t%s%s", ticket->
id,
1625 ticket->
granted ?
"granted" :
"revoked",
1626 ticket->
standby ?
" [standby]" :
"");
1639 out->list_item(out, ticket->
id,
"\t%s%s %s",
1640 ticket->
granted ?
"granted" :
"revoked",
1641 ticket->
standby ?
" [standby]" :
"",
1645 out->list_item(out, ticket->
id,
"\t%s%s",
1646 ticket->
granted ?
"granted" :
"revoked",
1647 ticket->
standby ?
" [standby]" :
"");
1656 xmlNodePtr node = NULL;
1666 xmlSetProp(node, (
pcmkXmlStr)
"last-granted",
1752 { NULL, NULL, NULL }
1769 crm_trace(
"%sNode %s: (weight=%d, fixed=%s)",
1774 char *pe_mutable = strdup(
"\t\t");
1778 unames = g_list_prepend(unames, strdup(
"*"));
1786 for (; gIter != NULL; gIter = gIter->next) {
1789 out->
message(out, crm_map_element_name(rsc->
xml),
1793 g_list_free_full(unames, free);