Skip to content

Commit d0ae11e

Browse files
tmacroBourgoisMickael
authored andcommitted
impr(CLDSRV-621): Set bucketOwnerId on newly created objects
(cherry picked from commit 26009ea)
1 parent d736be2 commit d0ae11e

4 files changed

Lines changed: 17 additions & 1 deletion

File tree

lib/api/apiUtils/object/createAndStoreObject.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,10 @@ function createAndStoreObject(bucketName, bucketMD, objectKey, objMD, authInfo,
201201
metadataStoreParams.oldReplayId = objMD.uploadId;
202202
}
203203

204+
if (authInfo.getCanonicalID() !== bucketMD.getOwner()) {
205+
metadataStoreParams.bucketOwnerId = bucketMD.getOwner();
206+
}
207+
204208
/* eslint-disable camelcase */
205209
const dontSkipBackend = externalBackends;
206210
/* eslint-enable camelcase */

lib/api/completeMultipartUpload.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,9 @@ function completeMultipartUpload(authInfo, request, log, callback) {
328328
};
329329
setSSEHeaders(responseHeaders, serverSideEncryption, kmsKey);
330330
}
331+
if (authInfo.getCanonicalID() !== destBucket.getOwner()) {
332+
metaStoreParams.bucketOwnerId = destBucket.getOwner();
333+
}
331334
return versioningPreprocessing(bucketName,
332335
destBucket, objectKey, objMD, log, (err, options) => {
333336
if (err) {

lib/api/objectCopy.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ function _prepMetadata(request, sourceObjMD, headers, sourceIsDestination,
186186
if (!storeMetadataParams.contentType) {
187187
storeMetadataParams.contentType = sourceObjMD['content-type'];
188188
}
189+
190+
if (authInfo.getCanonicalID() !== destBucketMD.getOwner()) {
191+
storeMetadataParams.bucketOwnerId = destBucketMD.getOwner();
192+
}
193+
189194
return { storeMetadataParams, sourceLocationConstraintName,
190195
backendInfoDest: backendInfoObjDest.backendInfo };
191196
}

lib/services.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ const services = {
107107
lastModifiedDate, versioning, versionId, uploadId,
108108
tagging, taggingCopy, replicationInfo, defaultRetention,
109109
dataStoreName, retentionMode, retentionDate, legalHold,
110-
originOp, oldReplayId, deleteNullKey, overheadField } = params;
110+
originOp, oldReplayId, deleteNullKey, overheadField, bucketOwnerId } = params;
111111
log.trace('storing object in metadata');
112112
assert.strictEqual(typeof bucketName, 'string');
113113
const md = new ObjectMD();
@@ -241,6 +241,10 @@ const services = {
241241
md.setLegalHold(legalHold);
242242
}
243243

244+
if (bucketOwnerId) {
245+
md.setBucketOwnerId(bucketOwnerId);
246+
}
247+
244248
log.trace('object metadata', { omVal: md.getValue() });
245249
// If this is not the completion of a multipart upload or
246250
// the creation of a delete marker, parse the headers to

0 commit comments

Comments
 (0)