]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: add set_bucket_tags api
authorChang Liu <liuchang0812@gmail.com>
Mon, 6 May 2019 13:14:18 +0000 (21:14 +0800)
committerChang Liu <liuchang0812@gmail.com>
Tue, 4 Jun 2019 02:36:31 +0000 (10:36 +0800)
Signed-off-by: Chang Liu <liuchang0812@gmail.com>
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h

index 807ffb227aa63464a78d7f878136ad18fef9d0cf..e2aac3455fa0aa46649040e562e3dc190504cdac 100644 (file)
@@ -5122,6 +5122,28 @@ int RGWRados::bucket_suspended(rgw_bucket& bucket, bool *suspended)
   return 0;
 }
 
+int RGWRados::set_bucket_tags(rgw_bucket& bucket, bufferlist tags_bl)
+{
+  RGWBucketInfo info;
+  map<string, bufferlist> attrs;
+  auto obj_ctx = svc.sysobj->init_obj_ctx();
+  int r;
+  if (bucket.bucket_id.empty()) {
+    r = get_bucket_info(obj_ctx, bucket.tenant, bucket.name, info, NULL, &attrs);
+  } else {
+    r = get_bucket_instance_info(obj_ctx, bucket, info, nullptr, &attrs);
+  }
+
+  attrs[RGW_ATTR_TAGS] = tags_bl;
+
+  r = put_bucket_instance_info(info, false, real_time(), &attrs);
+  if (r < 0) {
+    ldout(cct, 0) << "NOTICE: put_bucket_tags on bucket=" << bucket.name << " returned err=" << r << dendl;
+    return r;
+  }
+  return 0;
+}
+
 int RGWRados::Object::complete_atomic_modification()
 {
   if (!state->has_manifest || state->keep_tail)
index 4ef1791a6cb13a323c059adbc2026f800fa53e46..aee8c3c8aba411200b04978a1c31f60a9f84e592 100644 (file)
@@ -2003,6 +2003,8 @@ public:
   int set_buckets_enabled(std::vector<rgw_bucket>& buckets, bool enabled);
   int bucket_suspended(rgw_bucket& bucket, bool *suspended);
 
+  int set_bucket_tags(rgw_bucket& bucket, bufferlist tags_bl);
+
   /** Delete an object.*/
   int delete_obj(RGWObjectCtx& obj_ctx,
                          const RGWBucketInfo& bucket_owner,