diff options
| author | shishir gowda <shishirng@gluster.com> | 2012-03-15 10:51:12 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-03-17 23:40:50 -0700 | 
| commit | a3c8c7be83a4be1cb3d89a187da05d9247cc4f07 (patch) | |
| tree | 28a8c3d9b8f737a09cec09555d591faf48a9aef9 | |
| parent | 3823d7ee14fca54e513d45374e882c6de64fd2a7 (diff) | |
cli/remove-brick: Enhance remove-brick status to display
Rebalance status now contains info from all nodes.
Signed-off-by: shishir gowda <shishirng@gluster.com>
Change-Id: I6208c9879927fb6ddc0713c1480feadcf4f3fd75
BUG: 797887
Reviewed-on: http://review.gluster.com/2949
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 122 | 
1 files changed, 76 insertions, 46 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 1477ef18809..a259addb160 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -1121,24 +1121,28 @@ gf_cli3_1_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov,                          gf_log (THIS->name, GF_LOG_TRACE,                                  "failed to get node-uuid"); +                memset (key, 0, 256);                  snprintf (key, 256, "files-%d", i);                  ret = dict_get_uint64 (dict, key, &files);                  if (ret)                          gf_log (THIS->name, GF_LOG_TRACE,                                  "failed to get file count"); +                memset (key, 0, 256);                  snprintf (key, 256, "size-%d", i);                  ret = dict_get_uint64 (dict, key, &size);                  if (ret)                          gf_log (THIS->name, GF_LOG_TRACE,                                  "failed to get size of xfer"); +                memset (key, 0, 256);                  snprintf (key, 256, "lookups-%d", i);                  ret = dict_get_uint64 (dict, key, &lookup);                  if (ret)                          gf_log (THIS->name, GF_LOG_TRACE,                                  "failed to get lookedup file count"); +                memset (key, 0, 256);                  snprintf (key, 256, "status-%d", i);                  ret = dict_get_int32 (dict, key, (int32_t *)&status_rcd);                  if (ret) @@ -1404,8 +1408,15 @@ gf_cli3_remove_brick_status_cbk (struct rpc_req *req, struct iovec *iov,          int                      ret     = -1;          uint64_t                 files   = 0;          uint64_t                 size    = 0; +        uint64_t                 lookup  = 0;          dict_t                  *dict    = NULL;          char                     msg[1024] = {0,}; +        char                     key[256] = {0,}; +        int32_t                  i       = 1; +        int32_t                  counter = 0; +        char                    *node_uuid = 0; +        gf_defrag_status_t       status_rcd = GF_DEFRAG_STATUS_NOT_STARTED; +          if (-1 == req->rpc_status) {                  goto out; @@ -1428,24 +1439,6 @@ gf_cli3_remove_brick_status_cbk (struct rpc_req *req, struct iovec *iov,                  goto out;          } -        switch (rsp.op_errno) { -        case GF_DEFRAG_STATUS_NOT_STARTED: -                status = "not started"; -                break; -        case GF_DEFRAG_STATUS_STARTED: -                status = "in progress"; -                break; -        case GF_DEFRAG_STATUS_STOPPED: -                status = "stopped"; -                break; -        case GF_DEFRAG_STATUS_COMPLETE: -                status = "completed"; -                break; -        case GF_DEFRAG_STATUS_FAILED: -                status = "failed"; -                break; -        } -          if (rsp.dict.dict_len) {                  /* Unserialize the dictionary */                  dict  = dict_new (); @@ -1461,37 +1454,74 @@ gf_cli3_remove_brick_status_cbk (struct rpc_req *req, struct iovec *iov,                  }          } -        ret = dict_get_uint64 (dict, "files", &files); -        if (ret) -                gf_log (THIS->name, GF_LOG_TRACE, -                        "failed to get file count"); - -        ret = dict_get_uint64 (dict, "size", &size); -        if (ret) -                gf_log (THIS->name, GF_LOG_TRACE, -                        "failed to get size of xfer"); - -        if (files && (rsp.op_errno == 1)) { -                snprintf (msg, sizeof (msg), -                          "remove-brick %s: fixed layout %"PRId64, -                          status,files); -                goto out; -        } -        if (files && (rsp.op_errno == 6)) { -                snprintf (msg, sizeof (msg), -                          "remove-brick %s: fixed layout %"PRId64, -                          status, files); -                goto out; -        } -        if (files) { -                snprintf (msg, sizeof (msg), -                          "remove-brick %s: decommissioned %"PRId64 -                          " files of size %"PRId64, status, -                          files, size); +        ret = dict_get_int32 (dict, "count", &counter); +        if (ret) { +                gf_log (THIS->name, GF_LOG_ERROR, "count not set");                  goto out;          } -        snprintf (msg, sizeof (msg), "remove-brick %s", status); + +        cli_out ("%40s %16s %13s %13s %14s", "Node", "Rebalanced-files", +                 "size", "scanned", "status"); +        cli_out ("%40s %16s %13s %13s %14s", "---------", "-----------", +                 "-----------", "-----------", "------------"); + +        do { +                snprintf (key, 256, "node-uuid-%d", i); +                ret = dict_get_str (dict, key, &node_uuid); +                if (ret) +                        gf_log (THIS->name, GF_LOG_TRACE, +                                "failed to get node-uuid"); + +                memset (key, 0, 256); +                snprintf (key, 256, "files-%d", i); +                ret = dict_get_uint64 (dict, key, &files); +                if (ret) +                        gf_log (THIS->name, GF_LOG_TRACE, +                                "failed to get file count"); + +                memset (key, 0, 256); +                snprintf (key, 256, "size-%d", i); +                ret = dict_get_uint64 (dict, key, &size); +                if (ret) +                        gf_log (THIS->name, GF_LOG_TRACE, +                                "failed to get size of xfer"); + +                memset (key, 0, 256); +                snprintf (key, 256, "lookups-%d", i); +                ret = dict_get_uint64 (dict, key, &lookup); +                if (ret) +                        gf_log (THIS->name, GF_LOG_TRACE, +                                "failed to get lookedup file count"); + +                memset (key, 0, 256); +                snprintf (key, 256, "status-%d", i); +                ret = dict_get_int32 (dict, key, (int32_t *)&status_rcd); +                if (ret) +                        gf_log (THIS->name, GF_LOG_TRACE, +                                "failed to get status"); + +                switch (status_rcd) { +                case GF_DEFRAG_STATUS_NOT_STARTED: +                        status = "not started"; +                        break; +                case GF_DEFRAG_STATUS_STARTED: +                        status = "in progress"; +                        break; +                case GF_DEFRAG_STATUS_STOPPED: +                        status = "stopped"; +                        break; +                case GF_DEFRAG_STATUS_COMPLETE: +                        status = "completed"; +                        break; +                case GF_DEFRAG_STATUS_FAILED: +                        status = "failed"; +                        break; +                } +                cli_out ("%40s %16"PRId64 "%13"PRId64 "%13"PRId64 "%14s", node_uuid, files, +                        size, lookup, status); +                i++; +        } while (i <= counter);  #if (HAVE_LIB_XML)          if (global_state->mode & GLUSTER_MODE_XML) {  | 
