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: Demote promotable "
734 "resources and stop all other resources");
738 out->list_item(out, NULL,
"No quorum policy: Ignore");
742 out->list_item(out, NULL,
"No quorum policy: Suicide");
752 " (the cluster will not attempt to start, stop, or recover services)");
754 out->list_item(out, NULL,
"Resource management: enabled");
766 out->info(out,
"Resource management is DISABLED. The cluster will not attempt to start, stop or recover services.");
778 out->list_item(out, NULL,
"STONITH of failed nodes %s",
781 out->list_item(out, NULL,
"Cluster is %s",
786 out->list_item(out, NULL,
"No quorum policy: Freeze resources");
790 out->list_item(out, NULL,
"No quorum policy: Stop ALL resources");
794 out->list_item(out, NULL,
"No quorum policy: Demote promotable "
795 "resources and stop all other resources");
799 out->list_item(out, NULL,
"No quorum policy: Ignore");
803 out->list_item(out, NULL,
"No quorum policy: Suicide");
816 xmlSetProp(node, (
pcmkXmlStr)
"stonith-enabled",
818 xmlSetProp(node, (
pcmkXmlStr)
"symmetric-cluster",
843 xmlSetProp(node, (
pcmkXmlStr)
"maintenance-mode",
853 const char *stack_s = va_arg(args,
const char *);
864 const char *stack_s = va_arg(args,
const char *);
865 out->list_item(out,
"Stack",
"%s", stack_s);
873 const char *stack_s = va_arg(args,
const char *);
880 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
886 const char *last_written = va_arg(args,
const char *);
887 const char *user = va_arg(args,
const char *);
888 const char *client = va_arg(args,
const char *);
889 const char *origin = va_arg(args,
const char *);
891 char *buf = last_changed_string(last_written, user, client, origin);
904 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
910 const char *last_written = va_arg(args,
const char *);
911 const char *user = va_arg(args,
const char *);
912 const char *client = va_arg(args,
const char *);
913 const char *origin = va_arg(args,
const char *);
925 PCMK__OUTPUT_ARGS(
"cluster-times",
"const char *",
"const char *",
"const char *",
"const char *")
928 const char *last_written = va_arg(args,
const char *);
929 const char *user = va_arg(args,
const char *);
930 const char *client = va_arg(args,
const char *);
931 const char *origin = va_arg(args,
const char *);
933 char *buf = last_changed_string(last_written, user, client, origin);
936 out->list_item(out,
"Last change",
" %s", buf);
945 xmlNodePtr xml_op = va_arg(args, xmlNodePtr);
946 char *s = failed_action_string(xml_op);
948 out->list_item(out, NULL,
"%s", s);
956 xmlNodePtr xml_op = va_arg(args, xmlNodePtr);
964 char *rc_s = crm_itoa(
rc);
965 char *reason_s =
crm_xml_escape(exit_reason ? exit_reason :
"none");
968 xmlSetProp(node, (
pcmkXmlStr) (op_key ?
"op_key" :
"id"),
979 (
pcmkXmlStr) services_lrm_status_str(status));
982 guint interval_ms = 0;
986 char *rc_change = NULL;
989 s = crm_itoa(interval_ms);
1013 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1017 unsigned int print_opts = va_arg(args,
unsigned int);
1018 gboolean full = va_arg(args, gboolean);
1019 const char *node_mode G_GNUC_UNUSED = va_arg(args,
const char *);
1020 gboolean print_clone_detail = va_arg(args, gboolean);
1021 gboolean print_brief = va_arg(args, gboolean);
1022 gboolean group_by_node = va_arg(args, gboolean);
1050 if (print_brief && group_by_node) {
1051 out->begin_list(out, NULL, NULL, NULL);
1056 }
else if (group_by_node) {
1059 out->begin_list(out, NULL, NULL, NULL);
1062 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1067 out->begin_list(out, NULL, NULL,
"%s", buf);
1075 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1079 unsigned int print_opts = va_arg(args,
unsigned int);
1080 gboolean full = va_arg(args, gboolean);
1081 const char *node_mode = va_arg(args,
const char *);
1082 gboolean print_clone_detail = va_arg(args, gboolean);
1083 gboolean print_brief = va_arg(args, gboolean);
1084 gboolean group_by_node = va_arg(args, gboolean);
1101 if (group_by_node) {
1102 out->begin_list(out, NULL, NULL,
"%s", buf);
1103 out->begin_list(out, NULL, NULL,
"Resources");
1113 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1120 out->list_item(out, NULL,
"%s", buf);
1132 PCMK__OUTPUT_ARGS(
"node",
"struct pe_node_t *",
"unsigned int",
"gboolean",
"const char *",
"gboolean",
"gboolean",
"gboolean",
"GListPtr")
1136 unsigned int print_opts = va_arg(args,
unsigned int);
1137 gboolean full = va_arg(args, gboolean);
1138 const char *node_mode G_GNUC_UNUSED = va_arg(args,
const char *);
1139 gboolean print_clone_detail G_GNUC_UNUSED = va_arg(args, gboolean);
1140 gboolean print_brief G_GNUC_UNUSED = va_arg(args, gboolean);
1141 gboolean group_by_node = va_arg(args, gboolean);
1171 "resources_running", length_s,
1176 xmlSetProp(xml_node, (
pcmkXmlStr)
"id_as_resource",
1180 if (group_by_node) {
1185 out->message(out, crm_map_element_name(rsc->
xml), print_opts |
pe_print_rsconly, rsc, only_show);
1200 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1203 const char *
name = va_arg(args,
const char *);
1204 const char *value = va_arg(args,
const char *);
1205 gboolean add_extra = va_arg(args, gboolean);
1206 int expected_score = va_arg(args,
int);
1213 out->list_item(out, NULL,
"%-32s\t: %-10s\t: Connectivity is lost",
name, value);
1214 }
else if (v < expected_score) {
1215 out->list_item(out, NULL,
"%-32s\t: %-10s\t: Connectivity is degraded (Expected=%d)",
name, value, expected_score);
1217 out->list_item(out, NULL,
"%-32s\t: %-10s",
name, value);
1220 out->list_item(out, NULL,
"%-32s\t: %-10s",
name, value);
1226 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1229 const char *
name = va_arg(args,
const char *);
1230 const char *value = va_arg(args,
const char *);
1231 gboolean add_extra = va_arg(args, gboolean);
1232 int expected_score = va_arg(args,
int);
1244 }
else if (v < expected_score) {
1245 char *buf =
crm_strdup_printf(
"(connectivity is degraded -- expected %d", expected_score);
1250 out->list_item(out, NULL,
"%s: %s",
name, value);
1256 PCMK__OUTPUT_ARGS(
"node-attribute",
"const char *",
"const char *",
"gboolean",
"int")
1259 const char *
name = va_arg(args,
const char *);
1260 const char *value = va_arg(args,
const char *);
1261 gboolean add_extra = va_arg(args, gboolean);
1262 int expected_score = va_arg(args,
int);
1269 char *buf = crm_itoa(expected_score);
1277 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1282 unsigned int print_opts = va_arg(args,
unsigned int);
1283 gboolean print_clone_detail = va_arg(args, gboolean);
1284 gboolean print_brief = va_arg(args, gboolean);
1285 gboolean group_by_node = va_arg(args, gboolean);
1287 gboolean printed_header = FALSE;
1289 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1296 if (printed_header == FALSE) {
1297 printed_header = TRUE;
1298 out->begin_list(out, NULL, NULL,
"Node List");
1301 out->message(out,
"node", node, print_opts, TRUE, NULL, print_clone_detail,
1302 print_brief, group_by_node, only_show);
1305 if (printed_header == TRUE) {
1312 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1317 unsigned int print_opts = va_arg(args,
unsigned int);
1318 gboolean print_clone_detail = va_arg(args, gboolean);
1319 gboolean print_brief = va_arg(args, gboolean);
1320 gboolean group_by_node = va_arg(args, gboolean);
1323 char *online_nodes = NULL;
1324 char *online_remote_nodes = NULL;
1325 char *online_guest_nodes = NULL;
1326 char *offline_nodes = NULL;
1327 char *offline_remote_nodes = NULL;
1330 gboolean printed_header = FALSE;
1332 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1334 const char *node_mode = NULL;
1342 if (printed_header == FALSE) {
1343 out->begin_list(out, NULL, NULL,
"Node List");
1345 printed_header = TRUE;
1351 node_mode =
"UNCLEAN (online)";
1354 node_mode =
"UNCLEAN (pending)";
1357 node_mode =
"UNCLEAN (offline)";
1361 node_mode =
"pending";
1364 node_mode =
"standby (on-fail)";
1369 node_mode =
"standby (with active resources)";
1371 node_mode =
"standby";
1374 node_mode =
"OFFLINE (standby)";
1379 node_mode =
"maintenance";
1381 node_mode =
"OFFLINE (maintenance)";
1385 node_mode =
"online";
1386 if (group_by_node == FALSE) {
1401 node_mode =
"OFFLINE";
1402 if (group_by_node == FALSE) {
1417 out->message(out,
"node", node, print_opts, TRUE, node_mode, print_clone_detail,
1418 print_brief, group_by_node, only_show);
1424 out->list_item(out,
"Online",
"[%s ]", online_nodes);
1427 if (offline_nodes) {
1428 out->list_item(out,
"OFFLINE",
"[%s ]", offline_nodes);
1429 free(offline_nodes);
1431 if (online_remote_nodes) {
1432 out->list_item(out,
"RemoteOnline",
"[%s ]", online_remote_nodes);
1433 free(online_remote_nodes);
1435 if (offline_remote_nodes) {
1436 out->list_item(out,
"RemoteOFFLINE",
"[%s ]", offline_remote_nodes);
1437 free(offline_remote_nodes);
1439 if (online_guest_nodes) {
1440 out->list_item(out,
"GuestOnline",
"[%s ]", online_guest_nodes);
1441 free(online_guest_nodes);
1444 if (printed_header == TRUE) {
1451 PCMK__OUTPUT_ARGS(
"node-list",
"GListPtr",
"GListPtr",
"unsigned int",
"gboolean",
"gboolean",
"gboolean")
1456 unsigned int print_opts = va_arg(args,
unsigned int);
1457 gboolean print_clone_detail = va_arg(args, gboolean);
1458 gboolean print_brief = va_arg(args, gboolean);
1459 gboolean group_by_node = va_arg(args, gboolean);
1461 out->begin_list(out, NULL, NULL,
"nodes");
1462 for (
GListPtr gIter = nodes; gIter != NULL; gIter = gIter->next) {
1469 out->message(out,
"node", node, print_opts, TRUE, NULL, print_clone_detail,
1470 print_brief, group_by_node, only_show);
1477 PCMK__OUTPUT_ARGS(
"op-history",
"struct xmlNode *",
"const char *",
"const char *",
"int",
"gboolean")
1480 xmlNode *xml_op = va_arg(args, xmlNode *);
1481 const char *task = va_arg(args,
const char *);
1482 const char *interval_ms_s = va_arg(args,
const char *);
1483 int rc = va_arg(args,
int);
1484 gboolean print_timing = va_arg(args, gboolean);
1486 char *buf = op_history_string(xml_op, task, interval_ms_s,
rc, print_timing);
1488 out->list_item(out, NULL,
"%s", buf);
1494 PCMK__OUTPUT_ARGS(
"op-history",
"struct xmlNode *",
"const char *",
"const char *",
"int",
"gboolean")
1497 xmlNode *xml_op = va_arg(args, xmlNode *);
1498 const char *task = va_arg(args,
const char *);
1499 const char *interval_ms_s = va_arg(args,
const char *);
1500 int rc = va_arg(args,
int);
1501 gboolean print_timing = va_arg(args, gboolean);
1511 if (interval_ms_s &&
safe_str_neq(interval_ms_s,
"0")) {
1518 const char *value = NULL;
1523 if (int_value > 0) {
1532 if (int_value > 0) {
1552 rc_s = crm_itoa(
rc);
1559 PCMK__OUTPUT_ARGS(
"resource-history",
"struct pe_resource_t *",
"const char *",
"gboolean",
"int",
"time_t",
"gboolean")
1563 const char *rsc_id = va_arg(args,
const char *);
1564 gboolean all = va_arg(args, gboolean);
1565 int failcount = va_arg(args,
int);
1566 time_t last_failure = va_arg(args,
int);
1567 gboolean as_header = va_arg(args, gboolean);
1569 char *buf = resource_history_string(rsc, rsc_id, all, failcount, last_failure);
1572 out->begin_list(out, NULL, NULL,
"%s", buf);
1574 out->list_item(out, NULL,
"%s", buf);
1581 PCMK__OUTPUT_ARGS(
"resource-history",
"struct pe_resource_t *",
"const char *",
"gboolean",
"int",
"time_t",
"gboolean")
1585 const char *rsc_id = va_arg(args,
const char *);
1586 gboolean all = va_arg(args, gboolean);
1587 int failcount = va_arg(args,
int);
1588 time_t last_failure = va_arg(args,
int);
1589 gboolean as_header = va_arg(args, gboolean);
1596 }
else if (all || failcount || last_failure > 0) {
1600 xmlSetProp(node, (
pcmkXmlStr)
"migration-threshold",
1604 if (failcount > 0) {
1605 char *s = crm_itoa(failcount);
1612 if (last_failure > 0) {
1618 if (as_header == FALSE) {
1632 out->list_item(out, NULL,
"%s:\t%s%s %s", ticket->
id,
1633 ticket->
granted ?
"granted" :
"revoked",
1634 ticket->
standby ?
" [standby]" :
"",
1638 out->list_item(out, NULL,
"%s:\t%s%s", ticket->
id,
1639 ticket->
granted ?
"granted" :
"revoked",
1640 ticket->
standby ?
" [standby]" :
"");
1653 out->list_item(out, ticket->
id,
"\t%s%s %s",
1654 ticket->
granted ?
"granted" :
"revoked",
1655 ticket->
standby ?
" [standby]" :
"",
1659 out->list_item(out, ticket->
id,
"\t%s%s",
1660 ticket->
granted ?
"granted" :
"revoked",
1661 ticket->
standby ?
" [standby]" :
"");
1670 xmlNodePtr node = NULL;
1680 xmlSetProp(node, (
pcmkXmlStr)
"last-granted",
1766 { NULL, NULL, NULL }
1783 crm_trace(
"%sNode %s: (weight=%d, fixed=%s)",
1788 char *pe_mutable = strdup(
"\t\t");
1792 unames = g_list_prepend(unames, strdup(
"*"));
1800 for (; gIter != NULL; gIter = gIter->next) {
1803 out->
message(out, crm_map_element_name(rsc->
xml),
1807 g_list_free_full(unames, free);