return -ret;
}
+ if (params.user_data) {
+ obj->set_user_data(*params.user_data);
+ }
+
ret = obj->put(params.data, params.attrs);
if (ret < 0) {
cerr << "ERROR: put object returned error: " << cpp_strerror(-ret) << std::endl;
rgw_obj_key key;
bufferlist data;
map<string, bufferlist> attrs;
+ std::optional<string> user_data;
};
using RGWObjectSimplePutCR = RGWSimpleWriteOnlyAsyncCR<rgw_object_simple_put_params>;
put_obj.key = rgw_obj_key(oid_prefix + pse.generate_message_id());
pse.format(&put_obj.data);
+
+ {
+ bufferlist bl64;
+ put_obj.data.encode_base64(bl64);
+ put_obj.user_data = bl64.to_str();
+ }
yield call(new RGWObjectSimplePutCR(sync_env->async_rados,
sync_env->store,
}
attrs[RGW_ATTR_ACL] = *aclbl;
+ string *puser_data = nullptr;
+ if (user_data) {
+ puser_data = &(*user_data);
+ }
+
return processor.complete(obj_size, etag,
&mtime, mtime,
- attrs, delete_at);
+ attrs, delete_at,
+ nullptr, nullptr,
+ puser_data);
}
void RGWDataAccess::Object::set_policy(const RGWAccessControlPolicy& policy)
string etag;
std::optional<uint64_t> olh_epoch;
ceph::real_time delete_at;
+ std::optional<string> user_data;
std::optional<bufferlist> aclbl;
delete_at = _delete_at;
}
+ void set_user_data(const string& _user_data) {
+ user_data = _user_data;
+ }
+
void set_policy(const RGWAccessControlPolicy& policy);
friend class Bucket;