diff options
| author | Ravishankar N <ravishankar@redhat.com> | 2016-01-18 12:19:35 +0530 | 
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-01-19 22:31:36 -0800 | 
| commit | 67b7752eccd8eae6a91f3bc3ff55d65dcf858dc7 (patch) | |
| tree | 0c28eb2bc9e2407a7ce72a225690d13ef2882916 /xlators | |
| parent | c535059299785f7d050482c257f10389c218048b (diff) | |
cli: Add arbiter details to volinfo xml output
The following are added:
1. "<arbiterCount>1</arbiterCount>" and
"<coldarbiterCount>1</coldarbiterCount>"
2. "<isArbiter>0</isArbiter>" on the brick info, like so:
<brick
uuid="cafa8612-d7d4-4007-beea-72ae7477f3bb">127.0.0.2:/home/ravi/bricks/brick1
<name>127.0.0.2:/home/ravi/bricks/brick1</name>
<hostUuid>cafa8612-d7d4-4007-beea-72ae7477f3bb</hostUuid>
<isArbiter>0</isArbiter>
</brick>
Also fix a bug in gluster vol info where the abiter brick was shown the
wrong brick of the cold tier after performing a tier-attach.
Change-Id: Id978325d02b04f1a08856427827320e169169810
BUG: 1297750
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/13229
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 3c4516b76e0..608b6dd5d35 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -405,6 +405,53 @@ out:  }  int +glusterd_add_arbiter_info_to_bricks (glusterd_volinfo_t *volinfo, +                                     dict_t *volumes, int count) +{ +        char                    key[256]    = {0, }; +        int                     i           = 0; +        int                     start_index = 0; +        int                     ret         = 0; + +        if (volinfo->type == GF_CLUSTER_TYPE_TIER) { +                /*TODO: Add info for hot tier once attach tier of arbiter +                 * volumes is supported. */ + +                /* cold tier */ +                if (volinfo->tier_info.cold_replica_count == 1 || +                    volinfo->arbiter_count != 1) +                        return 0; + +                i = start_index = volinfo->tier_info.hot_brick_count + 1; +                for (; i <= volinfo->brick_count; i++) { +                        if ((i - start_index + 1) % +                            volinfo->tier_info.cold_replica_count != 0) +                                continue; +                        memset (key, 0, sizeof (key)); +                        snprintf (key, 256, "volume%d.brick%d.isArbiter", +                                  count, i); +                        ret = dict_set_int32 (volumes, key, 1); +                        if (ret) +                                return ret; +                } +        } else { +                if (volinfo->replica_count == 1 || volinfo->arbiter_count != 1) +                        return 0; +                for (i = 1; i <= volinfo->brick_count; i++) { +                        if (i % volinfo->replica_count != 0) +                                continue; +                        memset (key, 0, sizeof (key)); +                        snprintf (key, 256, "volume%d.brick%d.isArbiter", +                                  count, i); +                        ret = dict_set_int32 (volumes, key, 1); +                        if (ret) +                                return ret; +                } +        } +        return 0; +} + +int  glusterd_add_volume_detail_to_dict (glusterd_volinfo_t *volinfo,                                      dict_t  *volumes, int count)  { @@ -625,6 +672,9 @@ glusterd_add_volume_detail_to_dict (glusterd_volinfo_t *volinfo,  #endif                  i++;          } +        ret = glusterd_add_arbiter_info_to_bricks (volinfo, volumes, count); +        if (ret) +                goto out;          dict = volinfo->dict;          if (!dict) {  | 
