From 6011da17228cd3d49525b125994e87457f8b098c Mon Sep 17 00:00:00 2001 From: Francois Ferrand Date: Wed, 10 Jul 2024 17:15:41 +0200 Subject: [PATCH] Report owner-id when getting archive info Issue: CLDSRV-545 --- lib/api/apiUtils/object/coldStorage.js | 3 +++ tests/unit/api/objectHead.js | 8 +++++++- tests/unit/api/utils/metadataMockColdStorage.js | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/api/apiUtils/object/coldStorage.js b/lib/api/apiUtils/object/coldStorage.js index 1bb8dd671c..a65752b842 100644 --- a/lib/api/apiUtils/object/coldStorage.js +++ b/lib/api/apiUtils/object/coldStorage.js @@ -64,6 +64,9 @@ function setArchiveInfoHeaders(objMD) { // Always get the "real" storage class (even when STANDARD) in this case headers['x-amz-storage-class'] = objMD['x-amz-storage-class'] || objMD.dataStoreName; + // Get the owner-id + headers['x-amz-scal-owner-id'] = objMD['owner-id']; + return headers; } diff --git a/tests/unit/api/objectHead.js b/tests/unit/api/objectHead.js index b5353deb39..a7f0c240ac 100644 --- a/tests/unit/api/objectHead.js +++ b/tests/unit/api/objectHead.js @@ -386,6 +386,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-archive-info'], undefined); assert.strictEqual(res['x-amz-scal-restore-requested-at'], undefined); assert.strictEqual(res['x-amz-scal-restore-requested-days'], undefined); + assert.strictEqual(res['x-amz-scal-owner-id'], undefined); done(); }); }); @@ -416,13 +417,13 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-restore-requested-at'], undefined); assert.strictEqual(res['x-amz-scal-restore-completed-at'], undefined); assert.strictEqual(res['x-amz-scal-restore-will-expire-at'], undefined); + assert.strictEqual(res['x-amz-scal-owner-id'], undefined); done(); }); }); }); }); - // add GetRequest with flag for different kind of objects it('should report when transition in progress', done => { const testGetRequest = { bucketName, @@ -439,6 +440,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-transition-in-progress'], undefined); assert.strictEqual(res['x-amz-scal-transition-time'], undefined); assert.strictEqual(res['x-amz-scal-archive-info'], undefined); + assert.strictEqual(res['x-amz-scal-owner-id'], undefined); done(err); }); }); @@ -464,6 +466,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-transition-time'], new Date(objectCustomMDFields['x-amz-scal-transition-time']).toUTCString()); assert.strictEqual(res['x-amz-scal-archive-info'], undefined); + assert.strictEqual(res['x-amz-scal-owner-id'], mdColdHelper.defaultOwnerId); done(err); }); }); @@ -488,6 +491,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-transition-in-progress'], undefined); assert.strictEqual(res['x-amz-scal-archive-info'], '{"foo":0,"bar":"stuff"}'); assert.strictEqual(res['x-amz-storage-class'], mdColdHelper.defaultLocation); + assert.strictEqual(res['x-amz-scal-owner-id'], mdColdHelper.defaultOwnerId); done(err); }); }); @@ -516,6 +520,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-restore-requested-days'], objectCustomMDFields.archive.restoreRequestedDays); assert.strictEqual(res['x-amz-storage-class'], mdColdHelper.defaultLocation); + assert.strictEqual(res['x-amz-scal-owner-id'], mdColdHelper.defaultOwnerId); done(err); }); }); @@ -548,6 +553,7 @@ describe('objectHead API', () => { assert.strictEqual(res['x-amz-scal-restore-will-expire-at'], new Date(objectCustomMDFields.archive.restoreWillExpireAt).toUTCString()); assert.strictEqual(res['x-amz-storage-class'], mdColdHelper.defaultLocation); + assert.strictEqual(res['x-amz-scal-owner-id'], mdColdHelper.defaultOwnerId); done(err); }); }); diff --git a/tests/unit/api/utils/metadataMockColdStorage.js b/tests/unit/api/utils/metadataMockColdStorage.js index 057bce8083..c7037b4657 100644 --- a/tests/unit/api/utils/metadataMockColdStorage.js +++ b/tests/unit/api/utils/metadataMockColdStorage.js @@ -7,10 +7,11 @@ const ObjectMDArchive = require('arsenal').models.ObjectMDArchive; const BucketInfo = require('arsenal').models.BucketInfo; const defaultLocation = 'location-dmf-v1'; +const defaultOwnerId = '79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be'; const baseMd = { 'owner-display-name': 'accessKey1displayName', - 'owner-id': '79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be', + 'owner-id': defaultOwnerId, 'content-length': 11, 'content-md5': 'be747eb4b75517bf6b3cf7c5fbb62f3a', 'content-language': '', @@ -178,4 +179,5 @@ module.exports = { getTransitionInProgressMD, putBucketMock, defaultLocation, + defaultOwnerId, };