diff options
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/cli-rpc-ops.c | 61 | 
1 files changed, 35 insertions, 26 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 794eab0178c..1a2c4ee94ed 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -2586,33 +2586,38 @@ out:  int -gf_cli3_1_gsync_config_command (gf1_cli_gsync_set_rsp rsp) +gf_cli3_1_gsync_config_command (dict_t *dict)  {          char  cmd[PATH_MAX] = {0,}; -        int ret = -1; +        char *subop         = NULL; +        char *gwd           = NULL; +        char *slave         = NULL; +        char *master        = NULL; +        char *op_name       = NULL; -        if (rsp.op_ret < 0) -                return 0; - -        if (!rsp.gsync_prefix || !rsp.master || !rsp.slave || !rsp.glusterd_workdir) +        if (dict_get_str (dict, "subop", &subop) != 0)                  return -1; -        if (strcmp (rsp.subop, "get") != 0 && strcmp (rsp.subop, "get-all") != 0) { +        if (strcmp (subop, "get") != 0 && strcmp (subop, "get-all") != 0) {                  cli_out (GEOREP" config updated successfully");                  return 0;          } +        if (dict_get_str (dict, "glusterd_workdir", &gwd) != 0 || +            dict_get_str (dict, "slave", &slave) != 0) +                return -1; + +        if (dict_get_str (dict, "master", &master) != 0) +                master = ""; +        if (dict_get_str (dict, "op_name", &op_name) != 0) +                op_name = ""; +          snprintf (cmd, PATH_MAX,                    GSYNCD_PREFIX"/gsyncd -c %s/"GSYNC_CONF" %s%s %s --config-%s%s%s", -                  rsp.glusterd_workdir, -                  *rsp.master ? ":" : "", rsp.master, rsp.slave, rsp.subop, -                  *rsp.op_name ? " " : "", rsp.op_name); -        ret = system (cmd); -                /* -                 * gf_log() failure from system() ? -                 */ - -        return ret ? -1 : 0; +                  gwd, *master ? ":" : "", master, slave, +                  subop, *op_name ? " " : "", op_name); + +        return system (cmd) ? -1 : 0;  }  int @@ -2679,6 +2684,8 @@ gf_cli3_1_gsync_set_cbk (struct rpc_req *req, struct iovec *iov,          int                     ret     = 0;          gf1_cli_gsync_set_rsp   rsp     = {0, };          dict_t                  *dict   = NULL; +        char                    *master = NULL; +        char                    *slave  = NULL;          if (req->rpc_status == -1) {                  ret = -1; @@ -2699,9 +2706,7 @@ gf_cli3_1_gsync_set_cbk (struct rpc_req *req, struct iovec *iov,                  goto out;          } -        ret = dict_unserialize (rsp.status_dict.status_dict_val, -                                rsp.status_dict.status_dict_len, -                                &dict); +        ret = dict_unserialize (rsp.dict.dict_val, rsp.dict.dict_len, &dict);          if (ret)                  goto out; @@ -2715,17 +2720,21 @@ gf_cli3_1_gsync_set_cbk (struct rpc_req *req, struct iovec *iov,          switch (rsp.type) {                  case GF_GSYNC_OPTION_TYPE_START: -                        cli_out ("Starting " GEOREP " session between %s & %s" -                                 " has been successful", rsp.master, rsp.slave); -                break; -                  case GF_GSYNC_OPTION_TYPE_STOP: -                         cli_out ("Stopping " GEOREP " session between %s & %s" -                                 " has been successful", rsp.master, rsp.slave); +                        if (dict_get_str (dict, "master", &master) != 0) +                                master = "???"; +                        if (dict_get_str (dict, "slave", &slave) != 0) +                                slave = "???"; + +                        cli_out ("%s " GEOREP " session between %s & %s" +                                 " has been successful", +                                 rsp.type == GF_GSYNC_OPTION_TYPE_START ? +                                  "Starting" : "Stopping", +                                 master, slave);                  break;                  case GF_GSYNC_OPTION_TYPE_CONFIG: -                        ret = gf_cli3_1_gsync_config_command (rsp); +                        ret = gf_cli3_1_gsync_config_command (dict);                  break;                  case GF_GSYNC_OPTION_TYPE_STATUS:  | 
