diff options
| author | Venky Shankar <vshankar@redhat.com> | 2014-05-04 01:34:08 +0530 | 
|---|---|---|
| committer | Venky Shankar <vshankar@redhat.com> | 2014-05-14 10:24:01 -0700 | 
| commit | 48201f4faeef3602cb095bf47d14deebf91899ba (patch) | |
| tree | 0e09dc89f4a451e9f65d7e98d3fe64fc8ef8a45e /xlators/mgmt/glusterd/src/glusterd-utils.c | |
| parent | d2db585ce7e26851178104433fa9422482d8719e (diff) | |
gsyncd / geo-rep: Partial support for Non-root geo-replication.
This patch enables geo-replication to be run as an unprivileged
user. As of now, this is just the partial support, but is very
close to achieve full functionality.
Current limitation
* Geo-replication executed Gluster CLI commands on the slave
  via SSH. On a non-root setup, Gluster CLI would run as an
  unprivileged user, failing to execute the command. As a
  workaround (for testing), setuid(2) Gluster CLI executable
  or use the glusterd option to accept commands by unprivileged
  CLI process. The nature of cli commands are "system::"
  commands (for key management) and remote volume info fetching.
Remote volume info fetching has been modified to use --remote-host
gluster cli option rather than ssh and remote cli execution.
Change-Id: Ica89e2ba9b7f48fd6e1c876c477d7822dc693617
BUG: 1077452
Signed-off-by: Venky Shankar <vshankar@redhat.com>
Reviewed-on: http://review.gluster.org/7658
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 31 | 
1 files changed, 16 insertions, 15 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 9923ffd0617..ab65895ed8d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6541,21 +6541,22 @@ glusterd_restart_bricks (glusterd_conf_t *conf)  int  _local_gsyncd_start (dict_t *this, char *key, data_t *value, void *data)  { -        char                        *path_list = NULL; -        char                        *slave = NULL; -        char                        *slave_ip = NULL; -        char                        *slave_vol = NULL; -        char                        *statefile = NULL; -        char                         buf[1024] = "faulty"; -        int                          uuid_len = 0; -        int                          ret = 0; -        int                          ret_status = 0; -        char                         uuid_str[64] = {0}; -        glusterd_volinfo_t          *volinfo = NULL; +        char               *path_list                   = NULL; +        char               *slave                       = NULL; +        char               *slave_ip                    = NULL; +        char               *slave_vol                   = NULL; +        char               *slave_host                  = NULL; +        char               *statefile                   = NULL; +        char                         buf[1024]          = "faulty"; +        int                 uuid_len                    = 0; +        int                 ret                         = 0; +        int                 ret_status                  = 0; +        char                         uuid_str[64]       = {0}; +        glusterd_volinfo_t *volinfo                     = NULL;          char                         confpath[PATH_MAX] = ""; -        char                        *op_errstr = NULL; -        glusterd_conf_t             *priv = NULL; -        gf_boolean_t                 is_template_in_use = _gf_false; +        char               *op_errstr                   = NULL; +        glusterd_conf_t    *priv                        = NULL; +        gf_boolean_t        is_template_in_use          = _gf_false;          GF_ASSERT (THIS);          priv = THIS->private; @@ -6576,7 +6577,7 @@ _local_gsyncd_start (dict_t *this, char *key, data_t *value, void *data)          ret = glusterd_get_local_brickpaths (volinfo, &path_list);          /*Generating the conf file path needed by gsyncd */ -        ret = glusterd_get_slave_info (slave, &slave_ip, +        ret = glusterd_get_slave_info (slave, &slave_ip, &slave_host,                                         &slave_vol, &op_errstr);          if (ret) {                  gf_log ("", GF_LOG_ERROR,  | 
