Fixes: https://tracker.ceph.com/issues/53016
Signed-off-by: Raja Sharma <raja@ibm.com>
return;
}
+ encode_obj_tags_attr(obj_tags, attrs);
+ rgw_cond_decode_objtags(s, attrs);
+
std::unique_ptr<rgw::sal::MultipartUpload> upload;
upload = s->bucket->get_multipart_upload(s->object->get_name(),
upload_id);
class RGWInitMultipart : public RGWOp {
protected:
+ RGWObjTags obj_tags;
std::string upload_id;
RGWAccessControlPolicy policy;
ceph::real_time mtime;
if (ret < 0)
return ret;
+ auto tag_str = s->info.env->get("HTTP_X_AMZ_TAGGING");
+ if(tag_str) {
+ ret = obj_tags.set_from_string(tag_str);
+ if (ret < 0) {
+ ldpp_dout(this, 0) << "setting obj tags failed with " << ret << dendl;
+ if (ret == -ERR_INVALID_TAG) {
+ ret = -EINVAL; // s3 returns only -EINVAL for PUT requests
+ }
+ return ret;
+ }
+ }
+
//handle object lock
auto obj_lock_mode_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_MODE");
auto obj_lock_date_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE");