]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_admin: zone delete doesn't require zonegroup
authorYehuda Sadeh <yehuda@redhat.com>
Wed, 14 Oct 2015 18:26:16 +0000 (11:26 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:13:12 +0000 (16:13 -0800)
iterates through all the zonegroups and remove it

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h

index 28a0738adacac2ed8cdb31499573dad9a0f3a401..5395a6acf103d7b7b4969d763ff1b516b6f8a5cd 100644 (file)
@@ -2621,7 +2621,7 @@ int main(int argc, char **argv)
          return ret;
        }
        RGWZoneParams zone(zone_id, zone_name);
-       ret = zone.init(g_ceph_context, store, zonegroup);
+       ret = zone.init(g_ceph_context, store);
        if (ret < 0) {
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
@@ -2747,7 +2747,7 @@ int main(int argc, char **argv)
          return -EINVAL;
        }
        RGWZoneParams zone(zone_id, zone_name);
-       ret = zone.init(g_ceph_context, store, zonegroup);
+       ret = zone.init(g_ceph_context, store);
        if (ret < 0) {
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
@@ -2761,32 +2761,38 @@ int main(int argc, char **argv)
       break;
     case OPT_ZONE_DELETE:
       {
-       if (zonegroup_id.empty() && zonegroup_name.empty()) {
-         cerr << "no zonegroup name or id provided" << std::endl;
-         return -EINVAL;
-       }
-
-       RGWZoneGroup zonegroup(zonegroup_id,zonegroup_name);
-       int ret = zonegroup.init(g_ceph_context, store);
-       if (ret < 0) {
-         cerr << "WARNING: failed to initialize zonegroup " << zonegroup_name << std::endl;
-       }
        if (zone_id.empty() && zone_name.empty()) {
          cerr << "no zone name or id provided" << std::endl;
          return -EINVAL;
        }
        RGWZoneParams zone(zone_id, zone_name);
-       ret = zone.init(g_ceph_context, store, zonegroup);
+       int ret = zone.init(g_ceph_context, store);
        if (ret < 0) {
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
        }
-       ret = zonegroup.remove_zone(zone);
-       if (ret < 0 && ret != -ENOENT) {
-         cerr << "failed to remove zone " << zone_name << " from zonegroup " << zonegroup.get_name() << ": "
-              << cpp_strerror(-ret) << std::endl;
-         return ret;
+
+        list<string> zonegroups;
+       ret = store->list_zonegroups(zonegroups);
+       if (ret < 0) {
+         cerr << "failed to list zonegroups: " << cpp_strerror(-ret) << std::endl;
+         return -ret;
        }
+
+        for (list<string>::iterator iter = zonegroups.begin(); iter != zonegroups.end(); ++iter) {
+          RGWZoneGroup zonegroup(string(), *iter);
+          int ret = zonegroup.init(g_ceph_context, store);
+          if (ret < 0) {
+            cerr << "WARNING: failed to initialize zonegroup " << zonegroup_name << std::endl;
+            continue;
+          }
+          ret = zonegroup.remove_zone(zone);
+          if (ret < 0 && ret != -ENOENT) {
+            cerr << "failed to remove zone " << zone_name << " from zonegroup " << zonegroup.get_name() << ": "
+              << cpp_strerror(-ret) << std::endl;
+          }
+        }
+
        ret = zone.delete_obj();
        if (ret < 0) {
          cerr << "failed to create zone " << zone_name << ": " << cpp_strerror(-ret) << std::endl;
@@ -2805,7 +2811,7 @@ int main(int argc, char **argv)
          }
        }
        RGWZoneParams zone;
-       ret = zone.init(g_ceph_context, store, zonegroup);
+       ret = zone.init(g_ceph_context, store);
        if (ret < 0) {
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
@@ -2951,7 +2957,7 @@ int main(int argc, char **argv)
          return -EINVAL;
        }
        RGWZoneParams zone(zone_id,zone_name);
-       ret = zone.init(g_ceph_context, store, zonegroup);
+       ret = zone.init(g_ceph_context, store);
        if (ret < 0) {
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
index 8b0e6e05d87a32b9c3a872312edcf8bd001c97c3..0df99ffb37f7a930a56657ad8a02228abf1cd680 100644 (file)
@@ -145,7 +145,7 @@ int RGWZoneGroup::create_default(bool old_format)
 
   RGWZoneParams zone_params(default_zone_name);
 
-  int r = zone_params.init(cct, store, *this, false);
+  int r = zone_params.init(cct, store, false);
   if (r < 0) {
     derr << "create_default: error initializing zone params: " << cpp_strerror(-r) << dendl;
     return r;
@@ -992,7 +992,7 @@ const string& RGWZoneParams::get_predefined_id() {
   return cct->_conf->rgw_zone;
 }
 
-int RGWZoneParams::init(CephContext *cct, RGWRados *store, RGWZoneGroup& zonegroup, bool setup_obj, bool old_format)
+int RGWZoneParams::init(CephContext *cct, RGWRados *store, bool setup_obj, bool old_format)
 {
   name = cct->_conf->rgw_zone;
 
@@ -2934,7 +2934,7 @@ int RGWRados::init_complete()
     return ret;
   }
 
-  ret = zone.init(cct, this, zonegroup);
+  ret = zone.init(cct, this);
   if (ret < 0 && ret != -ENOENT) {
     lderr(cct) << "failed reading zone info: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
     return ret;
index b724175bbf73c5bbf013cf082eec3070d6b18dfc..61830801eef6c3f9d549b2fba687658b99336ae8 100644 (file)
@@ -869,7 +869,7 @@ struct RGWZoneParams : RGWSystemMetaObj {
   const string& get_info_oid_prefix(bool old_format = false);
   const string& get_predefined_id();
 
-  int init(CephContext *_cct, RGWRados *_store, RGWZoneGroup& zonegroup, bool setup_obj = true,
+  int init(CephContext *_cct, RGWRados *_store, bool setup_obj = true,
           bool old_format = false);
   using RGWSystemMetaObj::init;
   int create_default(bool old_format = false);