diff options
author | Dan Lambright <dlambrig@redhat.com> | 2015-04-13 02:42:12 +0100 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2015-05-09 08:35:14 -0700 |
commit | 99b778cbe179104af602b6eedebd31695bec16ae (patch) | |
tree | 5352721732f773b117b4a1c771577cedfaf329f4 /cli/src/cli-cmd-parser.c | |
parent | 5fd6b3b7e2881d21a1b19fb22366e905314d71bc (diff) |
glusterd: support for tier volumes 'detach start' and 'detach commit'
Back port of http://review.gluster.org/10108
These commands work in a manner analagous to rebalancing when removing a
brick. The existing migration daemon detects "detach start" and switches
to moving data off the hot tier. While in this state all lookups are
directed to the cold tier.
gluster v detach-tier <vol> start
gluster v detach-tier <vol> commit
The status and stop cli commands shall be submitted separately.
>Change-Id: I24fda5cc3ba74f5fb8aa9a3234ad51f18b80a8a0
>BUG: 1205540
>Signed-off-by: Dan Lambright <dlambrig@redhat.com>
>Signed-off-by: root <root@localhost.localdomain>
>Signed-off-by: Dan Lambright <dlambrig@redhat.com>
>Reviewed-on: http://review.gluster.org/10108
>Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Change-Id: I212d748d077fb5870ee84b316c653acbafbea3f7
BUG: 1220047
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Reviewed-on: http://review.gluster.org/10708
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-parser.c')
-rw-r--r-- | cli/src/cli-cmd-parser.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index 38b3bbde13d..e5fb4089dab 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -1647,6 +1647,66 @@ out: return ret; } +int32_t +cli_cmd_volume_detach_tier_parse (const char **words, int wordcount, + dict_t **options) +{ + int ret = -1; + char *word = NULL; + dict_t *dict = NULL; + int32_t command = GF_OP_CMD_NONE; + int force = 0; + + if (!((wordcount == 4) || (wordcount == 5))) + goto out; + + dict = dict_new (); + if (!dict) + goto out; + + ret = dict_set_str (dict, "volname", (char *)words[2]); + if (ret) + goto out; + + if (wordcount == 5) { + word = (char *)words[4]; + if (!strcmp(word, "force")) + force = 1; + } + + word = (char *)words[3]; + + ret = -1; + + if (!strcmp(word, "start")) { + command = GF_OP_CMD_DETACH_START; + } else if (!strcmp(word, "commit")) { + if (force) + command = GF_OP_CMD_DETACH_COMMIT_FORCE; + else + command = GF_OP_CMD_DETACH_COMMIT; + } else if (!strcmp(word, "stop")) + command = GF_DEFRAG_CMD_STOP_DETACH_TIER; + else if (!strcmp(word, "status")) + command = GF_DEFRAG_CMD_STATUS; + else + goto out; + + ret = dict_set_int32 (dict, "command", command); + if (ret) + goto out; + + *options = dict; + ret = 0; +out: + if (ret) { + gf_log ("cli", GF_LOG_ERROR, "Unable to parse detach-tier CLI"); + if (dict) + dict_unref (dict); + } + + return ret; +} int32_t cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, |