diff options
| author | Aravinda VK <avishwan@redhat.com> | 2015-03-12 16:07:13 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2015-05-06 09:12:35 -0700 | 
| commit | 6ebaa045ae8b2523e91c087cffae35cc4ec682c2 (patch) | |
| tree | 17754ef211780e4a1af52c3dbe9adf84fb643f4e /cli/src/cli-rpc-ops.c | |
| parent | cfe717c3326ddb51b754bbc6370bac99dd02ec8c (diff) | |
geo-rep: Status Enhancements
Discussion in gluster-devel
http://www.gluster.org/pipermail/gluster-devel/2015-April/044301.html
MASTER NODE - Master Volume Node
MASTER VOL - Master Volume name
MASTER BRICK - Master Volume Brick
SLAVE USER - Slave User to which Geo-rep session is established
SLAVE - <SLAVE_NODE>::<SLAVE_VOL> used in Geo-rep Create command
SLAVE NODE - Slave Node to which Master worker is connected
STATUS - Worker Status(Created, Initializing, Active, Passive, Faulty,
         Paused, Stopped)
CRAWL STATUS - Crawl type(Hybrid Crawl, History Crawl, Changelog Crawl)
LAST_SYNCED - Last Synced Time(Local Time in CLI output and UTC in XML output)
ENTRY - Number of entry Operations pending.(Resets on worker restart)
DATA - Number of Data operations pending(Resets on worker restart)
META - Number of Meta operations pending(Resets on worker restart)
FAILURES - Number of Failures
CHECKPOINT TIME - Checkpoint set Time(Local Time in CLI output and UTC
                  in XML output)
CHECKPOINT COMPLETED - Yes/No or N/A
CHECKPOINT COMPLETION TIME - Checkpoint Completed Time(Local Time in CLI
                             output and UTC in XML output)
XML output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
cliOutput>
  geoRep>
      volume>
        name>
        sessions>
          session>
             session_slave>
             pair>
                master_node>
                master_brick>
                slave_user>
                slave/>
                slave_node>
                status>
                crawl_status>
                entry>
                data>
                meta>
                failures>
                checkpoint_completed>
                master_node_uuid>
                last_synced>
                checkpoint_time>
                checkpoint_completion_time>
BUG: 1218586
Change-Id: I944a6c3c67f1e6d6baf9670b474233bec8f61ea3
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: http://review.gluster.org/10121
Reviewed-by: Kotresh HR <khiremat@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-on: http://review.gluster.org/10574
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 80 | 
1 files changed, 57 insertions, 23 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 0e82afbf921..400c4842225 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -4419,18 +4419,24 @@ get_struct_variable (int mem_num, gf_gsync_status_t *sts_val)          case 1:  return (sts_val->master);          case 2:  return (sts_val->brick);          case 3:  return (sts_val->slave_user); -        case 4:  return (sts_val->slave_node); -        case 5:  return (sts_val->worker_status); -        case 6:  return (sts_val->checkpoint_status); +        case 4:  return (sts_val->slave); +        case 5:  return (sts_val->slave_node); +        case 6:  return (sts_val->worker_status);          case 7:  return (sts_val->crawl_status); -        case 8:  return (sts_val->files_syncd); -        case 9:  return (sts_val->files_remaining); -        case 10:  return (sts_val->bytes_remaining); -        case 11: return (sts_val->purges_remaining); -        case 12: return (sts_val->total_files_skipped); -        case 13: return (sts_val->brick_host_uuid); -        case 14: return (sts_val->slavekey); -        case 15: return (sts_val->session_slave); +        case 8:  return (sts_val->last_synced); +        case 9:  return (sts_val->entry); +        case 10:  return (sts_val->data); +        case 11:  return (sts_val->meta); +        case 12: return (sts_val->failures); +        case 13:  return (sts_val->checkpoint_time); +        case 14:  return (sts_val->checkpoint_completed); +        case 15:  return (sts_val->checkpoint_completion_time); +        case 16: return (sts_val->brick_host_uuid); +        case 17: return (sts_val->last_synced_utc); +        case 18: return (sts_val->checkpoint_time_utc); +        case 19: return (sts_val->checkpoint_completion_time_utc); +        case 20: return (sts_val->slavekey); +        case 21: return (sts_val->session_slave);          default:                   goto out;          } @@ -4448,7 +4454,7 @@ gf_cli_print_status (char **title_values,          int     i                        = 0;          int     j                        = 0;          int     ret                      = 0; -        int     status_fields            = 7; /* Indexed at 0 */ +        int     status_fields            = 8; /* Indexed at 0 */          int     total_spacing            = 0;          char  **output_values            = NULL;          char   *tmp                      = NULL; @@ -4507,13 +4513,15 @@ gf_cli_print_status (char **title_values,                          strlen(title_values[j]));                  output_values[j][spacing[j]] = '\0';          } -        cli_out ("%s %s %s %s %s %s %s %s %s %s %s %s", +        cli_out ("%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",                   output_values[0], output_values[1],                   output_values[2], output_values[3],                   output_values[4], output_values[5],                   output_values[6], output_values[7],                   output_values[8], output_values[9], -                 output_values[10], output_values[11]); +                 output_values[10], output_values[11], +                 output_values[12], output_values[13], +                 output_values[14], output_values[15]);          /* setting and printing the hyphens */          memset (hyphens, '-', total_spacing); @@ -4540,13 +4548,15 @@ gf_cli_print_status (char **title_values,                          output_values[j][spacing[j]] = '\0';                  } -                cli_out ("%s %s %s %s %s %s %s %s %s %s %s %s", +                cli_out ("%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",                           output_values[0], output_values[1],                           output_values[2], output_values[3],                           output_values[4], output_values[5],                           output_values[6], output_values[7],                           output_values[8], output_values[9], -                         output_values[10], output_values[11]); +                         output_values[10], output_values[11], +                         output_values[12], output_values[13], +                         output_values[14], output_values[15]);          }  out: @@ -4565,6 +4575,23 @@ out:  }  int +gf_gsync_status_t_comparator (const void *p, const void *q) +{ +        char *slavekey1 = NULL; +        char *slavekey2 = NULL; + +        slavekey1 = get_struct_variable (20, (*(gf_gsync_status_t **)p)); +        slavekey2 = get_struct_variable (20, (*(gf_gsync_status_t **)q)); +        if (!slavekey1 || !slavekey2) { +                gf_log ("cli", GF_LOG_ERROR, +                        "struct member empty."); +                return 0; +        } + +        return strcmp (slavekey1, slavekey2); +} + +int  gf_cli_read_status_data (dict_t *dict,                           gf_gsync_status_t **sts_vals,                           int *spacing, int gsync_count, @@ -4599,6 +4626,11 @@ gf_cli_read_status_data (dict_t *dict,                  }          } +        /* Sort based on Session Slave */ +        qsort(sts_vals, gsync_count, +              sizeof(gf_gsync_status_t *), +              gf_gsync_status_t_comparator); +  out:          return ret;  } @@ -4609,18 +4641,20 @@ gf_cli_gsync_status_output (dict_t *dict, gf_boolean_t is_detail)          int                     gsync_count    = 0;          int                     i              = 0;          int                     ret            = 0; -        int                     spacing[13]    = {0}; -        int                     num_of_fields  = 13; +        int                     spacing[16]    = {0}; +        int                     num_of_fields  = 16;          char                    errmsg[1024]   = "";          char                   *master         = NULL;          char                   *slave          = NULL;          char                   *title_values[] = {"MASTER NODE", "MASTER VOL",                                                    "MASTER BRICK", "SLAVE USER", -                                                  "SLAVE", -                                                  "STATUS", "CHECKPOINT STATUS", -                                                  "CRAWL STATUS", "FILES SYNCD", -                                                  "FILES PENDING", "BYTES PENDING", -                                                  "DELETES PENDING", "FILES SKIPPED"}; +                                                  "SLAVE", "SLAVE NODE", +                                                  "STATUS", "CRAWL STATUS", +                                                  "LAST_SYNCED", "ENTRY", +                                                  "DATA", "META", "FAILURES", +                                                  "CHECKPOINT TIME", +                                                  "CHECKPOINT COMPLETED", +                                                  "CHECKPOINT COMPLETION TIME"};          gf_gsync_status_t     **sts_vals       = NULL;          /* Checks if any session is active or not */  | 
