d1681e
From 0141f90b41ecd102e52a7e605858e25bd084a044 Mon Sep 17 00:00:00 2001
d1681e
From: Sunny Kumar <sunkumar@redhat.com>
d1681e
Date: Thu, 1 Feb 2018 12:08:06 +0530
d1681e
Subject: [PATCH 137/139] bitrot : improved cli report after bitrot operatoin
d1681e
d1681e
Improved cli report post bitrot opertaion as previously it was
d1681e
showing output "volume bitrot: success" for all the sucessfull
d1681e
bitrot operations (enable, disable or scrub options).
d1681e
d1681e
Upstream Patch : https://review.gluster.org/c/19344/
d1681e
d1681e
>BUG: 1539166
d1681e
>Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
d1681e
d1681e
BUG: 1517463
d1681e
d1681e
Change-Id: I0857e99f3956221a51cfd1b29a90e1038b90570f
d1681e
Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
d1681e
Reviewed-on: https://code.engineering.redhat.com/gerrit/129218
d1681e
Tested-by: RHGS Build Bot <nigelb@redhat.com>
d1681e
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
d1681e
---
d1681e
 cli/src/cli-rpc-ops.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++
d1681e
 1 file changed, 57 insertions(+)
d1681e
d1681e
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
d1681e
index b91400b..1bb01e8 100644
d1681e
--- a/cli/src/cli-rpc-ops.c
d1681e
+++ b/cli/src/cli-rpc-ops.c
d1681e
@@ -11922,6 +11922,10 @@ gf_cli_bitrot_cbk (struct rpc_req *req, struct iovec *iov,
d1681e
         int                  type                      = 0;
d1681e
         gf_cli_rsp           rsp                       = {0, };
d1681e
         dict_t               *dict                     = NULL;
d1681e
+        char                 *scrub_cmd                = NULL;
d1681e
+        char                 *volname                  = NULL;
d1681e
+        char                 *cmd_str                  = NULL;
d1681e
+        char                 *cmd_op                   = NULL;
d1681e
 
d1681e
         GF_ASSERT (myframe);
d1681e
 
d1681e
@@ -11977,6 +11981,22 @@ gf_cli_bitrot_cbk (struct rpc_req *req, struct iovec *iov,
d1681e
                 goto out;
d1681e
         }
d1681e
 
d1681e
+        /* Ignoring the error, as using dict val for cli output only */
d1681e
+        ret = dict_get_str (dict, "scrub-value", &scrub_cmd);
d1681e
+        if (ret)
d1681e
+                gf_log ("cli", GF_LOG_TRACE, "Failed to get scrub command");
d1681e
+
d1681e
+        ret = dict_get_str (dict, "volname", &volname);
d1681e
+        if (ret)
d1681e
+                gf_log ("cli", GF_LOG_TRACE, "failed to get volume name");
d1681e
+
d1681e
+        ret = dict_get_str (dict, "cmd-str", &cmd_str);
d1681e
+        if (ret)
d1681e
+                gf_log ("cli", GF_LOG_TRACE, "failed to get command string");
d1681e
+
d1681e
+        if (cmd_str)
d1681e
+                cmd_op = strrchr(cmd_str, ' ') + 1;
d1681e
+
d1681e
         if ((type == GF_BITROT_CMD_SCRUB_STATUS) &&
d1681e
              !(global_state->mode & GLUSTER_MODE_XML)) {
d1681e
                 ret = gf_cli_print_bitrot_scrub_status (dict);
d1681e
@@ -11987,6 +12007,43 @@ gf_cli_bitrot_cbk (struct rpc_req *req, struct iovec *iov,
d1681e
                 goto out;
d1681e
         }
d1681e
 
d1681e
+        switch (type) {
d1681e
+        case  GF_BITROT_OPTION_TYPE_ENABLE:
d1681e
+                cli_out("volume bitrot: success bitrot enabled "
d1681e
+                        "for volume %s", volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        case GF_BITROT_OPTION_TYPE_DISABLE:
d1681e
+                cli_out("volume bitrot: success bitrot disabled "
d1681e
+                        "for volume %s", volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        case GF_BITROT_CMD_SCRUB_ONDEMAND:
d1681e
+                cli_out("volume bitrot: scrubber started ondemand "
d1681e
+                        "for volume %s", volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        case GF_BITROT_OPTION_TYPE_SCRUB:
d1681e
+                if (!strncmp ("pause", scrub_cmd, strlen("pause")))
d1681e
+                        cli_out("volume bitrot: scrubber paused "
d1681e
+                                "for volume %s", volname);
d1681e
+                if (!strncmp ("resume", scrub_cmd, strlen("resume")))
d1681e
+                        cli_out("volume bitrot: scrubber resumed "
d1681e
+                                "for volume %s", volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        case GF_BITROT_OPTION_TYPE_SCRUB_FREQ:
d1681e
+                cli_out("volume bitrot: scrub-frequency is set to %s "
d1681e
+                        "successfully for volume %s", cmd_op, volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        case GF_BITROT_OPTION_TYPE_SCRUB_THROTTLE:
d1681e
+                cli_out("volume bitrot: scrub-throttle is set to %s "
d1681e
+                        "successfully for volume %s", cmd_op, volname);
d1681e
+                ret = 0;
d1681e
+                goto out;
d1681e
+        }
d1681e
+
d1681e
 xml_output:
d1681e
         if (global_state->mode & GLUSTER_MODE_XML) {
d1681e
                 ret = cli_xml_output_vol_profile (dict, rsp.op_ret,
d1681e
-- 
d1681e
1.8.3.1
d1681e