radosgw-admin: add missing 'zonegroup remove'

Fixes: http://tracker.ceph.com/issues/15684

Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
Casey Bodley 2016-05-02 11:38:24 -04:00
parent 3a451511fb
commit db0fa48ed5
2 changed files with 45 additions and 1 deletions

View File

@ -103,6 +103,7 @@ void _usage()
cout << " zonegroup get show zone group info\n";
cout << " zonegroup modify modify an existing zonegroup\n";
cout << " zonegroup set set zone group info (requires infile)\n";
cout << " zonegroup remove remove a zone from a zonegroup\n";
cout << " zonegroup rename rename a zone group\n";
cout << " zonegroup list list all zone groups set on this cluster\n";
cout << " zonegroup-map get show zonegroup-map\n";
@ -313,7 +314,8 @@ enum {
OPT_ZONEGROUP_MODIFY,
OPT_ZONEGROUP_SET,
OPT_ZONEGROUP_LIST,
OPT_ZONEGROUP_RENAME ,
OPT_ZONEGROUP_REMOVE,
OPT_ZONEGROUP_RENAME,
OPT_ZONEGROUPMAP_GET,
OPT_ZONEGROUPMAP_SET,
OPT_ZONEGROUPMAP_UPDATE,
@ -600,6 +602,8 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_
return OPT_ZONEGROUP_LIST;
if (strcmp(cmd, "set") == 0)
return OPT_ZONEGROUP_SET;
if (strcmp(cmd, "remove") == 0)
return OPT_ZONEGROUP_REMOVE;
if (strcmp(cmd, "rename") == 0)
return OPT_ZONEGROUP_RENAME;
} else if (strcmp(prev_cmd, "quota") == 0) {
@ -2401,6 +2405,7 @@ int main(int argc, char **argv)
opt_cmd == OPT_ZONEGROUP_GET || opt_cmd == OPT_ZONEGROUP_LIST ||
opt_cmd == OPT_ZONEGROUP_SET || opt_cmd == OPT_ZONEGROUP_DEFAULT ||
opt_cmd == OPT_ZONEGROUP_RENAME || opt_cmd == OPT_ZONEGROUP_MODIFY ||
opt_cmd == OPT_ZONEGROUP_REMOVE ||
opt_cmd == OPT_ZONEGROUPMAP_GET || opt_cmd == OPT_ZONEGROUPMAP_SET ||
opt_cmd == OPT_ZONEGROUPMAP_UPDATE ||
opt_cmd == OPT_ZONE_CREATE || opt_cmd == OPT_ZONE_DELETE ||
@ -3087,6 +3092,44 @@ int main(int argc, char **argv)
formatter->flush(cout);
}
break;
case OPT_ZONEGROUP_REMOVE:
{
RGWZoneGroup zonegroup(zonegroup_id, zonegroup_name);
int ret = zonegroup.init(g_ceph_context, store);
if (ret < 0) {
cerr << "failed to init zonegroup: " << cpp_strerror(-ret) << std::endl;
return -ret;
}
if (zone_id.empty()) {
if (zone_name.empty()) {
cerr << "no --zone-id or --rgw-zone name provided" << std::endl;
return EINVAL;
}
// look up zone id by name
for (auto& z : zonegroup.zones) {
if (zone_name == z.second.name) {
zone_id = z.second.id;
break;
}
}
if (zone_id.empty()) {
cerr << "zone name " << zone_name << " not found in zonegroup "
<< zonegroup.get_name() << std::endl;
return ENOENT;
}
}
ret = zonegroup.remove_zone(zone_id);
if (ret < 0) {
cerr << "failed to remove zone: " << cpp_strerror(-ret) << std::endl;
return -ret;
}
encode_json("zonegroup", zonegroup, formatter);
formatter->flush(cout);
}
break;
case OPT_ZONEGROUP_RENAME:
{
if (zonegroup_new_name.empty()) {

View File

@ -55,6 +55,7 @@
zonegroup get show zone group info
zonegroup modify modify an existing zonegroup
zonegroup set set zone group info (requires infile)
zonegroup remove remove a zone from a zonegroup
zonegroup rename rename a zone group
zonegroup list list all zone groups set on this cluster
zonegroup-map get show zonegroup-map