]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix for unsafe change of rgw_zonegroup 12075/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 17 Nov 2016 17:58:24 +0000 (12:58 -0500)
committerCasey Bodley <cbodley@redhat.com>
Thu, 1 Dec 2016 15:46:28 +0000 (10:46 -0500)
Fixes: http://tracker.ceph.com/issues/17962
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_main.cc
src/rgw/rgw_rados.cc

index 86c0767d8189308f3cf956948d30218d5c7b5a18..5db4d55a8d8d82352a8a47a89fe84618a331b15c 100644 (file)
@@ -2245,6 +2245,12 @@ int main(int argc, char **argv)
 
   auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
                          CODE_ENVIRONMENT_UTILITY, 0);
+
+  // for region -> zonegroup conversion (must happen before common_init_finish())
+  if (!g_conf->rgw_region.empty() && g_conf->rgw_zonegroup.empty()) {
+    g_conf->set_val_or_die("rgw_zonegroup", g_conf->rgw_region.c_str());
+  }
+
   common_init_finish(g_ceph_context);
 
   rgw_user user_id;
index 09e650e1dbd65420bb687ead4631d9e1c99e1b44..c2678e8cc91d16ab1ea2205f6dcec447a1e080bd 100644 (file)
@@ -284,6 +284,11 @@ int main(int argc, const char **argv)
     }
   }
 
+  // for region -> zonegroup conversion (must happen before common_init_finish())
+  if (!g_conf->rgw_region.empty() && g_conf->rgw_zonegroup.empty()) {
+    g_conf->set_val_or_die("rgw_zonegroup", g_conf->rgw_region.c_str());
+  }
+
   check_curl();
 
   if (g_conf->daemonize) {
index 1677d4d8422f52222ce3cc38917fb898f2123373..8756480416fbea134e247ad2ef875498418bcee2 100644 (file)
@@ -3411,14 +3411,6 @@ int RGWRados::convert_regionmap()
  */
 int RGWRados::replace_region_with_zonegroup()
 {
-  if (!cct->_conf->rgw_region.empty() && cct->_conf->rgw_zonegroup.empty()) {
-    int ret = cct->_conf->set_val("rgw_zonegroup", cct->_conf->rgw_region, true, false);
-    if (ret < 0) {
-      ldout(cct, 0) << "failed to set rgw_zonegroup to " << cct->_conf->rgw_region << dendl;
-      return ret;
-    }
-  }
-
   /* copy default region */
   /* convert default region to default zonegroup */
   string default_oid = cct->_conf->rgw_default_region_info_oid;