From c8e6576da31f943cbd1de284d66bc80e56a3603f Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 18 Aug 2022 18:03:37 -0400 Subject: [PATCH] rgw: remove replace_region_with_zonegroup() Signed-off-by: Casey Bodley --- src/rgw/services/svc_zone.cc | 264 ----------------------------------- src/rgw/services/svc_zone.h | 1 - 2 files changed, 265 deletions(-) diff --git a/src/rgw/services/svc_zone.cc b/src/rgw/services/svc_zone.cc index f3df23012bf..e11b3b6eff1 100644 --- a/src/rgw/services/svc_zone.cc +++ b/src/rgw/services/svc_zone.cc @@ -241,12 +241,6 @@ int RGWSI_Zone::do_start(optional_yield y, const DoutPrefixProvider *dpp) /* we have zone now */ - ret = replace_region_with_zonegroup(dpp, y); - if (ret < 0) { - ldpp_dout(dpp, -1) << "failed converting region to zonegroup : ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } - auto zone_iter = zonegroup->zones.find(zone_params->get_id()); if (zone_iter == zonegroup->zones.end()) { /* shouldn't happen if relying on period config */ @@ -463,264 +457,6 @@ int RGWSI_Zone::list_periods(const DoutPrefixProvider *dpp, const string& curren return ret; } -/** - * Replace all region configuration with zonegroup for - * backward compatability - * Returns 0 on success, -ERR# on failure. - */ -int RGWSI_Zone::replace_region_with_zonegroup(const DoutPrefixProvider *dpp, optional_yield y) -{ - /* copy default region */ - /* convert default region to default zonegroup */ - string default_oid = cct->_conf->rgw_default_region_info_oid; - if (default_oid.empty()) { - default_oid = default_region_info_oid; - } - - RGWZoneGroup default_zonegroup; - rgw_pool pool{default_zonegroup.get_pool(cct)}; - string oid = "converted"; - bufferlist bl; - - RGWSysObj sysobj = sysobj_svc->get_obj(rgw_raw_obj(pool, oid)); - - int ret = sysobj.rop().read(dpp, &bl, y); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " failed to read converted: ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } else if (ret != -ENOENT) { - ldpp_dout(dpp, 20) << "System already converted " << dendl; - return 0; - } - - string default_region; - ret = default_zonegroup.init(dpp, cct, sysobj_svc, y, false, true); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed init default region: ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = default_zonegroup.read_default_id(dpp, default_region, y, true); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " failed reading old default region: ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } - - /* convert regions to zonegroups */ - list regions; - ret = list_regions(dpp, regions); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " failed to list regions: ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } else if (ret == -ENOENT || regions.empty()) { - RGWZoneParams zoneparams(default_zone_name); - int ret = zoneparams.init(dpp, cct, sysobj_svc, y); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << ": error initializing default zone params: " << cpp_strerror(-ret) << dendl; - return ret; - } - /* update master zone */ - RGWZoneGroup default_zg(default_zonegroup_name); - ret = default_zg.init(dpp, cct, sysobj_svc, y); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << ": error in initializing default zonegroup: " << cpp_strerror(-ret) << dendl; - return ret; - } - if (ret != -ENOENT && default_zg.master_zone.empty()) { - default_zg.master_zone = zoneparams.get_id(); - return default_zg.update(dpp, y); - } - return 0; - } - - string master_region; - rgw_zone_id master_zone; - for (list::iterator iter = regions.begin(); iter != regions.end(); ++iter) { - if (*iter != default_zonegroup_name){ - RGWZoneGroup region(*iter); - int ret = region.init(dpp, cct, sysobj_svc, y, true, true); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed init region "<< *iter << ": " << cpp_strerror(-ret) << dendl; - return ret; - } - if (region.is_master_zonegroup()) { - master_region = region.get_id(); - master_zone = region.master_zone; - } - } - } - - /* create realm if there is none. - The realm name will be the region and zone concatenated - realm id will be mds of its name */ - if (realm->get_id().empty() && !master_region.empty() && !master_zone.empty()) { - string new_realm_name = master_region + "." + master_zone.id; - unsigned char md5[CEPH_CRYPTO_MD5_DIGESTSIZE]; - char md5_str[CEPH_CRYPTO_MD5_DIGESTSIZE * 2 + 1]; - MD5 hash; - // Allow use of MD5 digest in FIPS mode for non-cryptographic purposes - hash.SetFlags(EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); - hash.Update((const unsigned char *)new_realm_name.c_str(), new_realm_name.length()); - hash.Final(md5); - buf_to_hex(md5, CEPH_CRYPTO_MD5_DIGESTSIZE, md5_str); - string new_realm_id(md5_str); - RGWRealm new_realm(new_realm_id,new_realm_name); - ret = new_realm.init(dpp, cct, sysobj_svc, y, false); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " Error initing new realm: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = new_realm.create(dpp, y); - if (ret < 0 && ret != -EEXIST) { - ldpp_dout(dpp, 0) << __func__ << " Error creating new realm: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = new_realm.set_as_default(dpp, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " Error setting realm as default: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = realm->init(dpp, cct, sysobj_svc, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " Error initing realm: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = current_period->init(dpp, cct, sysobj_svc, realm->get_id(), y, - realm->get_name()); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " Error initing current period: " << cpp_strerror(-ret) << dendl; - return ret; - } - } - - list::iterator iter; - /* create zonegroups */ - for (iter = regions.begin(); iter != regions.end(); ++iter) - { - ldpp_dout(dpp, 0) << __func__ << " Converting " << *iter << dendl; - /* check to see if we don't have already a zonegroup with this name */ - RGWZoneGroup new_zonegroup(*iter); - ret = new_zonegroup.init(dpp, cct , sysobj_svc, y); - if (ret == 0 && new_zonegroup.get_id() != *iter) { - ldpp_dout(dpp, 0) << __func__ << " zonegroup "<< *iter << " already exists id " << new_zonegroup.get_id () << - " skipping conversion " << dendl; - continue; - } - RGWZoneGroup zonegroup(*iter); - zonegroup.set_id(*iter); - int ret = zonegroup.init(dpp, cct, sysobj_svc, y, true, true); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed init zonegroup: ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } - zonegroup.realm_id = realm->get_id(); - /* fix default region master zone */ - if (*iter == default_zonegroup_name && zonegroup.master_zone.empty()) { - ldpp_dout(dpp, 0) << __func__ << " Setting default zone as master for default region" << dendl; - zonegroup.master_zone = default_zone_name; - } - ret = zonegroup.update(dpp, y); - if (ret < 0 && ret != -EEXIST) { - ldpp_dout(dpp, 0) << __func__ << " failed to update zonegroup " << *iter << ": ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } - ret = zonegroup.update_name(dpp, y); - if (ret < 0 && ret != -EEXIST) { - ldpp_dout(dpp, 0) << __func__ << " failed to update_name for zonegroup " << *iter << ": ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } - if (zonegroup.get_name() == default_region) { - ret = zonegroup.set_as_default(dpp, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed to set_as_default " << *iter << ": ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } - } - for (auto iter = zonegroup.zones.begin(); iter != zonegroup.zones.end(); - ++iter) { - ldpp_dout(dpp, 0) << __func__ << " Converting zone" << iter->first << dendl; - RGWZoneParams zoneparams(iter->first, iter->second.name); - zoneparams.set_id(iter->first.id); - zoneparams.realm_id = realm->get_id(); - ret = zoneparams.init(dpp, cct, sysobj_svc, y); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " failed to init zoneparams " << iter->first << ": " << cpp_strerror(-ret) << dendl; - return ret; - } else if (ret == -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " zone is part of another cluster " << iter->first << " skipping " << dendl; - continue; - } - zonegroup.realm_id = realm->get_id(); - ret = zoneparams.update(dpp, y); - if (ret < 0 && ret != -EEXIST) { - ldpp_dout(dpp, 0) << __func__ << " failed to update zoneparams " << iter->first << ": " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = zoneparams.update_name(dpp, y); - if (ret < 0 && ret != -EEXIST) { - ldpp_dout(dpp, 0) << __func__ << " failed to init zoneparams " << iter->first << ": " << cpp_strerror(-ret) << dendl; - return ret; - } - } - - if (!current_period->get_id().empty()) { - ret = current_period->add_zonegroup(dpp, zonegroup, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed to add zonegroup to current_period: " << cpp_strerror(-ret) << dendl; - return ret; - } - } - } - - if (!current_period->get_id().empty()) { - ret = current_period->update(dpp, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed to update new period: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = current_period->store_info(dpp, false, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed to store new period: " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = current_period->reflect(dpp, y); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed to update local objects: " << cpp_strerror(-ret) << dendl; - return ret; - } - } - - for (auto const& iter : regions) { - RGWZoneGroup zonegroup(iter); - int ret = zonegroup.init(dpp, cct, sysobj_svc, y, true, true); - if (ret < 0) { - ldpp_dout(dpp, 0) << __func__ << " failed init zonegroup" << iter << ": ret "<< ret << " " << cpp_strerror(-ret) << dendl; - return ret; - } - ret = zonegroup.delete_obj(dpp, y, true); - if (ret < 0 && ret != -ENOENT) { - ldpp_dout(dpp, 0) << __func__ << " failed to delete region " << iter << ": ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } - } - - /* mark as converted */ - ret = sysobj.wop() - .set_exclusive(true) - .write(dpp, bl, y); - if (ret < 0 ) { - ldpp_dout(dpp, 0) << __func__ << " failed to mark cluster as converted: ret "<< ret << " " << cpp_strerror(-ret) - << dendl; - return ret; - } - - return 0; -} - /** * Add new connection to connections map * @param zonegroup_conn_map map which new connection will be added to diff --git a/src/rgw/services/svc_zone.h b/src/rgw/services/svc_zone.h index 1863fe2e078..a03cdc48b0f 100644 --- a/src/rgw/services/svc_zone.h +++ b/src/rgw/services/svc_zone.h @@ -64,7 +64,6 @@ class RGWSI_Zone : public RGWServiceInstance int do_start(optional_yield y, const DoutPrefixProvider *dpp) override; void shutdown() override; - int replace_region_with_zonegroup(const DoutPrefixProvider *dpp, optional_yield y); int init_zg_from_period(const DoutPrefixProvider *dpp, optional_yield y); int init_zg_from_local(const DoutPrefixProvider *dpp, optional_yield y); -- 2.39.5