@@ -20,6 +20,8 @@ const STORAGE_CLASS_STANDARD = 'STANDARD';
20
20
const STORAGE_CLASS_GLACIER = 'GLACIER' ; // "S3 Glacier Flexible Retrieval"
21
21
/** @type {nb.StorageClass } */
22
22
const STORAGE_CLASS_GLACIER_IR = 'GLACIER_IR' ; // "S3 Glacier Instant Retrieval"
23
+ /** @type {nb.StorageClass } */
24
+ const STORAGE_CLASS_GLACIER_DA = 'GLACIER_DA' ; // "DBS3 specific Storage Class"
23
25
24
26
const DEFAULT_S3_USER = Object . freeze ( {
25
27
ID : '123' ,
@@ -382,6 +384,7 @@ function parse_storage_class(storage_class) {
382
384
if ( ! storage_class ) return STORAGE_CLASS_STANDARD ;
383
385
if ( storage_class === STORAGE_CLASS_STANDARD ) return STORAGE_CLASS_STANDARD ;
384
386
if ( storage_class === STORAGE_CLASS_GLACIER ) return STORAGE_CLASS_GLACIER ;
387
+ if ( storage_class === STORAGE_CLASS_GLACIER_DA ) return STORAGE_CLASS_GLACIER_DA ;
385
388
if ( storage_class === STORAGE_CLASS_GLACIER_IR ) return STORAGE_CLASS_GLACIER_IR ;
386
389
throw new Error ( `No such s3 storage class ${ storage_class } ` ) ;
387
390
}
@@ -819,9 +822,19 @@ function parse_body_public_access_block(req) {
819
822
return parsed ;
820
823
}
821
824
825
+ function override_storage_class ( req ) {
826
+ if (
827
+ config . NSFS_GLACIER_FORCE_STORAGE_CLASS &&
828
+ parse_storage_class_header ( req ) === STORAGE_CLASS_STANDARD
829
+ ) {
830
+ req . headers [ 'x-amz-storage-class' ] = STORAGE_CLASS_GLACIER ;
831
+ }
832
+ }
833
+
822
834
exports . STORAGE_CLASS_STANDARD = STORAGE_CLASS_STANDARD ;
823
835
exports . STORAGE_CLASS_GLACIER = STORAGE_CLASS_GLACIER ;
824
836
exports . STORAGE_CLASS_GLACIER_IR = STORAGE_CLASS_GLACIER_IR ;
837
+ exports . STORAGE_CLASS_GLACIER_DA = STORAGE_CLASS_GLACIER_DA ;
825
838
exports . DEFAULT_S3_USER = DEFAULT_S3_USER ;
826
839
exports . DEFAULT_OBJECT_ACL = DEFAULT_OBJECT_ACL ;
827
840
exports . decode_chunked_upload = decode_chunked_upload ;
@@ -863,5 +876,6 @@ exports.key_marker_to_cont_tok = key_marker_to_cont_tok;
863
876
exports . parse_sse_c = parse_sse_c ;
864
877
exports . verify_string_byte_length = verify_string_byte_length ;
865
878
exports . parse_body_public_access_block = parse_body_public_access_block ;
879
+ exports . override_storage_class = override_storage_class ;
866
880
exports . OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES ;
867
881
exports . OBJECT_ATTRIBUTES_UNSUPPORTED = OBJECT_ATTRIBUTES_UNSUPPORTED ;
0 commit comments