]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
radosgw-admin: stop trying to 'resolve' zone arguments 49176/head
authorCasey Bodley <cbodley@redhat.com>
Wed, 14 Dec 2022 20:41:35 +0000 (15:41 -0500)
committerCasey Bodley <cbodley@redhat.com>
Tue, 3 Jan 2023 16:01:18 +0000 (11:01 -0500)
this was causing a 'zonegroup delete' command to delete the wrong
zonegroup:

$ radosgw-admin zonegroup delete --rgw-zonegroup rm_zonegroup

WARNING: zonegroup name (--rgw-zonegroup) resolve mismatch. (param=remove_zg, resolved=a)

Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_admin.cc

index 7506808d88207d7986992e1cbafd609beeb2b345..7b35b58955f41feb25b8c016925d31b828f2cd8d 100644 (file)
@@ -3280,141 +3280,6 @@ public:
   }
 };
 
-static int search_entities_by_zone(rgw::sal::ConfigStore* cfgstore,
-                                   rgw_zone_id zone_id,
-                                   RGWRealm *prealm,
-                                   RGWZoneGroup *pzonegroup)
-{
-  std::array<std::string, 128> realm_names;
-  rgw::sal::ListResult<std::string> listing;
-
-  do {
-    int r = cfgstore->list_realm_names(dpp(), null_yield, listing.next,
-                                       realm_names, listing);
-    if (r < 0) {
-      cerr << "failed to list realms: " << cpp_strerror(-r) << std::endl;
-      return r;
-    }
-
-    for (const auto& realm_name : listing.entries) {
-      RGWRealm realm;
-      r = cfgstore->read_realm_by_name(dpp(), null_yield, realm_name,
-                                       realm, nullptr);
-      if (r < 0) {
-        cerr << "WARNING: failed to load realm " << realm_name
-            << ": " << cpp_strerror(r) << " ... skipping" << std::endl;
-        continue;
-      }
-
-      RGWPeriod period;
-      r = cfgstore->read_period(dpp(), null_yield, realm.current_period,
-                                std::nullopt, period);
-      if (r < 0) {
-        cerr << "WARNING: failed to load current period for realm "
-            << realm_name << ": " << cpp_strerror(r) << " ... skipping" << std::endl;
-        continue;
-      }
-
-      for (auto& [zid, zonegroup] : period.period_map.zonegroups) {
-        if (zonegroup.zones.count(zone_id)) {
-          *prealm = std::move(realm);
-          *pzonegroup = std::move(zonegroup);
-          return 0;
-        }
-      } // foreach zonegroup in period
-    } // foreach realm_name in listing.entries
-  } while (!listing.next.empty());
-
-  return -ENOENT;
-}
-
-static int try_to_resolve_local_zone(rgw::sal::ConfigStore* cfgstore,
-                                     string& zone_id, string& zone_name)
-{
-  /* try to read zone info */
-  RGWZoneParams zone;
-  int r = rgw::read_zone(dpp(), null_yield, cfgstore,
-                         zone_id, zone_name, zone);
-  if (r == -ENOENT) {
-    ldpp_dout(dpp(), 20) << __func__ << "(): local zone not found (id=" << zone_id << ", name= " << zone_name << ")" << dendl;
-    return r;
-  }
-
-  if (r < 0) {
-    ldpp_dout(dpp(), 0) << __func__ << "(): unable to read zone (id=" << zone_id << ", name= " << zone_name << "): " << cpp_strerror(-r) << dendl;
-
-    return r;
-  }
-
-  zone_id = zone.get_id();
-  zone_name = zone.get_name();
-
-  return 0;
-}
-
-static void check_set_consistent(const string& resolved_param,
-                                 string& param,
-                                 const string& param_name)
-{
-  if (!param.empty() && param != resolved_param) {
-    ldpp_dout(dpp(), 5) << "WARNING: " << param_name << " resolve mismatch. (param=" << param << ", resolved=" << resolved_param << ")" << dendl;
-    return;
-  }
-
-  param = resolved_param;
-  ldpp_dout(dpp(), 20) << __func__ << "(): resolved param: " << param_name << ": " << param << dendl;
-}
-
-
-static int try_to_resolve_local_entities(rgw::sal::ConfigStore* cfgstore,
-                                         string& realm_id, string& realm_name,
-                                         string& zonegroup_id, string& zonegroup_name,
-                                         string& zone_id, string& zone_name)
-{
-  /*
-   * Try to figure out realm, zonegroup, and zone entities, based on provided params and local zone.
-   *
-   * First read the local zone info (for zone id/name). Then search existing realm and period
-   *  configuration and if found, update (but don't override) passed params.
-   *
-   */
-
-  ldpp_dout(dpp(), 20) << __func__ << "(): before: realm_id=" << realm_id << " realm_name=" << realm_name << " zonegroup_id=" << zonegroup_id << " zonegroup_name=" << zonegroup_name << " zone_id=" << zone_id << " zone_name=" << zone_name << dendl;
-  int r = try_to_resolve_local_zone(cfgstore, zone_id, zone_name);
-  if (r == -ENOENT) {
-    /* this local zone doesn't exist, abort */
-    return 0;
-  }
-  if (r < 0) {
-    return r;
-  }
-
-  if (zone_id.empty()) {
-    /* not sure it's possible, but let's abort */
-    return 0;
-  }
-
-  RGWRealm realm;
-  RGWZoneGroup zonegroup;
-  r = search_entities_by_zone(cfgstore, zone_id, &realm, &zonegroup);
-  if (r == -ENOENT) {
-    return 0; // not found
-  }
-  if (r < 0) {
-    ldpp_dout(dpp(), 0) << "ERROR: error when searching for realm id (r=" << r << "), ignoring" << dendl;
-    return r;
-  }
-
-  check_set_consistent(realm.get_id(), realm_id, "realm id (--realm-id)");
-  check_set_consistent(realm.get_name(), realm_name, "realm name (--rgw-realm)");
-  check_set_consistent(zonegroup.get_id(), zonegroup_id, "zonegroup id (--zonegroup-id)");
-  check_set_consistent(zonegroup.get_name(), zonegroup_name, "zonegroup name (--rgw-zonegroup)");
-
-  ldpp_dout(dpp(), 20) << __func__ << "(): after: realm_id=" << realm_id << " realm_name=" << realm_name << " zonegroup_id=" << zonegroup_id << " zonegroup_name=" << zonegroup_name << " zone_id=" << zone_id << " zone_name=" << zone_name << dendl;
-
-  return 0;
-}
-
 void init_realm_param(CephContext *cct, string& var, std::optional<string>& opt_var, const string& conf_name)
 {
   var = cct->_conf.get_val<string>(conf_name);
@@ -4501,11 +4366,6 @@ int main(int argc, const char **argv)
   StoreDestructor store_destructor(driver);
 
   if (raw_storage_op) {
-    try_to_resolve_local_entities(cfgstore.get(), realm_id, realm_name,
-                                  zonegroup_id, zonegroup_name,
-                                  zone_id, zone_name);
-
-
     switch (opt_cmd) {
     case OPT::PERIOD_DELETE:
       {