]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: adjust versioning enable/suspend api
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 28 Oct 2014 23:14:10 +0000 (16:14 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Mon, 19 Jan 2015 23:57:48 +0000 (15:57 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_op.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rest_s3.cc

index ec8b6201620201272047dd353ddf9d784053cfc4..5ef4df1e35b4dd650c9f14f5f0dec50150e07af9 100644 (file)
@@ -1100,11 +1100,8 @@ void RGWSetBucketVersioning::execute()
   if (enable_versioning) {
     s->bucket_info.flags |= BUCKET_VERSIONED;
     s->bucket_info.flags &= ~BUCKET_VERSIONS_SUSPENDED;
-  } else if (s->bucket_info.versioned()) {
-    s->bucket_info.flags |= BUCKET_VERSIONS_SUSPENDED;
   } else {
-    ret = -EINVAL;
-    goto done;
+    s->bucket_info.flags |= (BUCKET_VERSIONED | BUCKET_VERSIONS_SUSPENDED);
   }
 
   ret = store->put_bucket_instance_info(s->bucket_info, false, 0, &s->bucket_attrs);
index 2eca817389ded8ef0465a71670aed1a344913cc6..b5947382fb5700e2f64b390ae9db38934ba0fa5b 100644 (file)
@@ -3949,6 +3949,10 @@ int RGWRados::Object::Delete::delete_obj()
     return 0;
   }
 
+  if (obj.get_instance() == "null") {
+    obj.clear_instance();
+  }
+
   rgw_rados_ref ref;
   rgw_bucket bucket;
   int r = store->get_obj_ref(obj, &ref, &bucket);
index 05575c20a17f10e6b257b5edaac0a29d9c331c65..bb3835baa4b86c713b15d6f23717178d6e612ccf 100644 (file)
@@ -387,13 +387,10 @@ void RGWGetBucketVersioning_ObjStore_S3::send_response()
 
   s->formatter->open_object_section_in_ns("VersioningConfiguration",
                                          "http://doc.s3.amazonaws.com/doc/2006-03-01/");
-  const char *status;
-  if (!versioned) {
-    status = "Disabled";
-  } else {
-    status = (versioning_enabled ? "Enabled" : "Suspended");
+  if (versioned) {
+    const char *status = (versioning_enabled ? "Enabled" : "Suspended");
+    s->formatter->dump_string("Status", status);
   }
-  s->formatter->dump_string("Status", status);
   s->formatter->close_section();
   rgw_flush_formatter_and_reset(s, s->formatter);
 }