]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: radosgw-admin zone placement rm and radosgw-admin zonegroup 31239/head
authoryuliyang <yuliyang@cmss.chinamobile.com>
Tue, 29 Oct 2019 01:32:59 +0000 (09:32 +0800)
committeryuliyang <yuliyang@cmss.chinamobile.com>
Wed, 30 Oct 2019 06:56:05 +0000 (14:56 +0800)
placement rm support --storage-class to remove specify
storage class config

Signed-off-by: yuliyang <yuliyang@cmss.chinamobile.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_zone.h

index 4a9dadae7d5780452bd4263327af8e8d1a650095..604041ed7a4bb5fa402c05c737ed4f4467ac2530 100644 (file)
@@ -4338,7 +4338,15 @@ int main(int argc, const char **argv)
           }
           target.storage_classes.insert(rule.get_storage_class());
         } else if (opt_cmd == OPT_ZONEGROUP_PLACEMENT_RM) {
-          zonegroup.placement_targets.erase(placement_id);
+          if (storage_class.empty()) {
+            zonegroup.placement_targets.erase(placement_id);
+          } else {
+            auto iter = zonegroup.placement_targets.find(placement_id);
+            if (iter != zonegroup.placement_targets.end()) {
+              RGWZoneGroupPlacementTarget& info = zonegroup.placement_targets[placement_id];
+              info.storage_classes.erase(storage_class);
+            }
+          }
         } else if (opt_cmd == OPT_ZONEGROUP_PLACEMENT_DEFAULT) {
           if (!zonegroup.placement_targets.count(placement_id)) {
             cerr << "failed to find a zonegroup placement target named '"
@@ -4843,7 +4851,15 @@ int main(int argc, const char **argv)
              return ret;
           }
         } else if (opt_cmd == OPT_ZONE_PLACEMENT_RM) {
-          zone.placement_pools.erase(placement_id);
+          if (storage_class.empty()) {
+            zone.placement_pools.erase(placement_id);
+          } else {
+            auto iter = zone.placement_pools.find(placement_id);
+            if (iter != zone.placement_pools.end()) {
+              RGWZonePlacementInfo& info = zone.placement_pools[placement_id];
+              info.storage_classes.remove_storage_class(storage_class);
+            }
+          }
         }
 
         ret = zone.update();
index 9ce902040b3bde645800d439561328f3930f6740..eeab570961274f92d364b155e767473aaecd1c64 100644 (file)
@@ -238,6 +238,12 @@ public:
     }
   }
 
+  void remove_storage_class(const string& sc) {
+    if (!sc.empty()) {
+      m.erase(sc);
+    }
+  }
+
   void encode(bufferlist& bl) const {
     ENCODE_START(1, 1, bl);
     encode(m, bl);