From: Casey Bodley Date: Wed, 30 Nov 2016 18:43:28 +0000 (-0500) Subject: radosgw-admin: add 'zonegroup placement default' command X-Git-Tag: v11.1.0~108^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=711cc132528f2dfeb6c1f8defb19493ffe7cb9be;p=ceph-ci.git radosgw-admin: add 'zonegroup placement default' command Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 074c138fc4b..26b8d2e32a3 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -116,6 +116,7 @@ void _usage() cout << " zonegroup placement add add a placement target id to a zonegroup\n"; cout << " zonegroup placement modify modify a placement target of a specific zonegroup\n"; cout << " zonegroup placement rm remove a placement target from a zonegroup\n"; + cout << " zonegroup placement default set a zonegroup's default placement target\n"; cout << " zonegroup-map get show zonegroup-map\n"; cout << " zonegroup-map set set zonegroup-map (requires infile)\n"; cout << " zone create create a new zone\n"; @@ -367,6 +368,7 @@ enum { OPT_ZONEGROUP_PLACEMENT_MODIFY, OPT_ZONEGROUP_PLACEMENT_RM, OPT_ZONEGROUP_PLACEMENT_LIST, + OPT_ZONEGROUP_PLACEMENT_DEFAULT, OPT_ZONEGROUPMAP_GET, OPT_ZONEGROUPMAP_SET, OPT_ZONEGROUPMAP_UPDATE, @@ -653,6 +655,8 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_ return OPT_ZONEGROUP_PLACEMENT_RM; if (strcmp(cmd, "list") == 0) return OPT_ZONEGROUP_PLACEMENT_LIST; + if (strcmp(cmd, "default") == 0) + return OPT_ZONEGROUP_PLACEMENT_DEFAULT; } else if (strcmp(prev_cmd, "zonegroup") == 0 || strcmp(prev_cmd, "region") == 0) { if (strcmp(cmd, "add") == 0) @@ -2784,6 +2788,7 @@ int main(int argc, char **argv) OPT_ZONEGROUP_REMOVE, OPT_ZONEGROUP_PLACEMENT_ADD, OPT_ZONEGROUP_PLACEMENT_RM, OPT_ZONEGROUP_PLACEMENT_MODIFY, OPT_ZONEGROUP_PLACEMENT_LIST, + OPT_ZONEGROUP_PLACEMENT_DEFAULT, OPT_ZONEGROUPMAP_GET, OPT_ZONEGROUPMAP_SET, OPT_ZONEGROUPMAP_UPDATE, OPT_ZONE_CREATE, OPT_ZONE_DELETE, @@ -3556,6 +3561,7 @@ int main(int argc, char **argv) case OPT_ZONEGROUP_PLACEMENT_ADD: case OPT_ZONEGROUP_PLACEMENT_MODIFY: case OPT_ZONEGROUP_PLACEMENT_RM: + case OPT_ZONEGROUP_PLACEMENT_DEFAULT: { if (placement_id.empty()) { cerr << "ERROR: --placement-id not specified" << std::endl; @@ -3593,6 +3599,13 @@ int main(int argc, char **argv) } } else if (opt_cmd == OPT_ZONEGROUP_PLACEMENT_RM) { zonegroup.placement_targets.erase(placement_id); + } else if (opt_cmd == OPT_ZONEGROUP_PLACEMENT_DEFAULT) { + if (!zonegroup.placement_targets.count(placement_id)) { + cerr << "failed to find a zonegroup placement target named '" + << placement_id << "'" << std::endl; + return -ENOENT; + } + zonegroup.default_placement = placement_id; } zonegroup.post_process_params(); diff --git a/src/test/cli/radosgw-admin/help.t b/src/test/cli/radosgw-admin/help.t index efc4f13603e..795396f1586 100644 --- a/src/test/cli/radosgw-admin/help.t +++ b/src/test/cli/radosgw-admin/help.t @@ -66,6 +66,7 @@ zonegroup placement add add a placement target id to a zonegroup zonegroup placement modify modify a placement target of a specific zonegroup zonegroup placement rm remove a placement target from a zonegroup + zonegroup placement default set a zonegroup's default placement target zonegroup-map get show zonegroup-map zonegroup-map set set zonegroup-map (requires infile) zone create create a new zone