From: Casey Bodley Date: Thu, 14 Dec 2023 18:38:22 +0000 (-0500) Subject: radosgw-admin: 'zone set' won't overwrite existing default-placement X-Git-Tag: v18.2.4~210^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9fbc8e48f23663fe1e8f5bda7f9a2f8e086243f8;p=ceph.git radosgw-admin: 'zone set' won't overwrite existing default-placement Fixes: https://tracker.ceph.com/issues/63829 Signed-off-by: Casey Bodley (cherry picked from commit d785add11c38411a0b2f5933cc9581c00cc51ac0) --- diff --git a/src/rgw/driver/rados/rgw_zone.cc b/src/rgw/driver/rados/rgw_zone.cc index ed09f24f6c24..5c3f55b3dd88 100644 --- a/src/rgw/driver/rados/rgw_zone.cc +++ b/src/rgw/driver/rados/rgw_zone.cc @@ -1005,10 +1005,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 pools;