File pacemaker-fencing-dont-print-event-twice-stonith_admin-verbose.patch of Package pacemaker.14737
commit 39e7b7e9989990215f58d701f11d86bdbf840b23
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Thu Oct 26 19:08:38 2017 -0500
Low: fencing: don't print event twice with stonith_admin --verbose
diff --git a/fencing/admin.c b/fencing/admin.c
index 86d02737f..216ebd61d 100644
--- a/fencing/admin.c
+++ b/fencing/admin.c
@@ -317,6 +317,33 @@ handle_level(stonith_t *st, char *target, int fence_level,
name, value, fence_level);
}
+static char *
+fence_action_str(const char *action)
+{
+ char *str = NULL;
+
+ if (action == NULL) {
+ str = strdup("unknown");
+ } else if (action[0] == 'o') { // on, off
+ str = crm_concat("turn", action, ' ');
+ } else {
+ str = strdup(action);
+ }
+ return str;
+}
+
+static void
+print_fence_event(stonith_history_t *event)
+{
+ char *action_s = fence_action_str(event->action);
+ time_t complete = event->completed;
+
+ printf("%s was able to %s node %s on behalf of %s from %s at %s\n",
+ (event->delegate? event->delegate : "This node"), action_s,
+ event->target, event->client, event->origin, ctime(&complete));
+ free(action_s);
+}
+
static int
show_history(stonith_t *st, const char *target, int timeout, int quiet,
int verbose)
@@ -337,32 +364,23 @@ show_history(stonith_t *st, const char *target, int timeout, int quiet,
if (quiet || !verbose) {
continue;
- } else if (hp->action == NULL) {
- action_s = strdup("unknown");
- } else if (hp->action[0] != 'r') {
- action_s = crm_concat("turn", hp->action, ' ');
- } else {
- action_s = strdup(hp->action);
}
if (hp->state == st_failed) {
+ action_s = fence_action_str(hp->action);
printf("%s failed to %s node %s on behalf of %s from %s at %s\n",
hp->delegate ? hp->delegate : "We", action_s, hp->target,
hp->client, hp->origin, ctime(&complete));
- } else if (hp->state == st_done && hp->delegate) {
- printf("%s was able to %s node %s on behalf of %s from %s at %s\n",
- hp->delegate, action_s, hp->target,
- hp->client, hp->origin, ctime(&complete));
-
} else if (hp->state == st_done) {
- printf("We were able to %s node %s on behalf of %s from %s at %s\n",
- action_s, hp->target, hp->client, hp->origin, ctime(&complete));
+ print_fence_event(latest);
+
} else {
/* ocf:pacemaker:controld depends on "wishes to" being
* in this output, when used with older versions of DLM
* that don't report stateful_merge_wait
*/
+ action_s = fence_action_str(hp->action);
printf("%s at %s wishes to %s node %s - %d %d\n",
hp->client, hp->origin, action_s, hp->target, hp->state, hp->completed);
}
@@ -373,23 +391,8 @@ show_history(stonith_t *st, const char *target, int timeout, int quiet,
if (latest) {
if (quiet) {
printf("%d\n", latest->completed);
- } else {
- char *action_s = NULL;
- time_t complete = latest->completed;
-
- if (latest->action == NULL) {
- action_s = strdup("unknown");
- } else if (latest->action[0] != 'r') {
- action_s = crm_concat("turn", latest->action, ' ');
- } else {
- action_s = strdup(latest->action);
- }
-
- printf("%s was able to %s node %s on behalf of %s from %s at %s\n",
- latest->delegate ? latest->delegate : "We", action_s, latest->target,
- latest->client, latest->origin, ctime(&complete));
-
- free(action_s);
+ } else if (!verbose) { // already printed if verbose
+ print_fence_event(latest);
}
}
return rc;