MCPcopy
hub / github.com/scality/cloudserver / overwritingVersioning

Function overwritingVersioning

lib/api/apiUtils/object/versioning.js:525–567  ·  view source on GitHub ↗

overwritingVersioning - return versioning information for S3 to handle * storing version metadata with a specific version id. * @param {object} objMD - obj metadata * @param {object} metadataStoreParams - custom built object containing resource details. * @return {object} options * options.vers

(objMD, metadataStoreParams)

Source from the content-addressed store, hash-verified

523 * version id of the null version
524 */
525function overwritingVersioning(objMD, metadataStoreParams) {
526 metadataStoreParams.updateMicroVersionId = true;
527 metadataStoreParams.amzStorageClass = objMD['x-amz-storage-class'];
528
529 // set correct originOp
530 metadataStoreParams.originOp = 's3:ObjectRestore:Completed';
531
532 // When restoring an MPU with different number of parts the etag changes
533 // as it's calculated based on the etags of the parts. We keep the original
534 // etag to allow proper expiration of the restored object.
535 if (metadataStoreParams.contentMD5 !== objMD['content-md5']) {
536 metadataStoreParams.restoredEtag = metadataStoreParams.contentMD5;
537 metadataStoreParams.contentMD5 = objMD['content-md5'];
538 }
539
540 // update restore
541 const days = objMD.archive?.restoreRequestedDays;
542 const now = Date.now();
543 metadataStoreParams.archive = {
544 archiveInfo: objMD.archive?.archiveInfo,
545 restoreRequestedAt: objMD.archive?.restoreRequestedAt,
546 restoreRequestedDays: objMD.archive?.restoreRequestedDays,
547 restoreCompletedAt: new Date(now),
548 restoreWillExpireAt: new Date(now + (days * scaledMsPerDay)),
549 };
550
551 /* eslint-enable no-param-reassign */
552
553 const versionId = objMD.versionId || undefined;
554 const options = {
555 versionId,
556 isNull: objMD.isNull,
557 };
558 if (objMD.nullVersionId) {
559 options.extraMD = {
560 nullVersionId: objMD.nullVersionId,
561 };
562 }
563
564 restoreMetadata(objMD, metadataStoreParams);
565
566 return options;
567}
568
569module.exports = {
570 decodeVersionId,

Callers 3

completeMultipartUploadFunction · 0.85
createAndStoreObjectFunction · 0.85
versioning.jsFile · 0.85

Calls 1

restoreMetadataFunction · 0.85

Tested by

no test coverage detected