]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
radosgw-admin: 'zone set' won't overwrite existing default-placement 54903/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 14 Dec 2023 18:38:22 +0000 (13:38 -0500)
committerCasey Bodley <cbodley@redhat.com>
Thu, 14 Dec 2023 18:48:01 +0000 (13:48 -0500)
Fixes: https://tracker.ceph.com/issues/63829
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/driver/rados/rgw_zone.cc

index 11b57e427207cc064b195351480d94737ae28f54..e6cc54d69d89d3bfdc6938b8dd1eb7324618f675 100644 (file)
@@ -1035,10 +1035,12 @@ int create_zone(const DoutPrefixProvider* dpp, optional_yield y,
   }
 
   // add default placement with empty pool name
+  RGWZonePlacementInfo placement;
   rgw_pool pool;
-  auto& placement = info.placement_pools["default-placement"];
   placement.storage_classes.set_storage_class(
       RGW_STORAGE_CLASS_STANDARD, &pool, nullptr);
+  // don't overwrite if it already exists
+  info.placement_pools.emplace("default-placement", std::move(placement));
 
   // build a set of all pool names used by other zones
   std::set<rgw_pool> pools;