@@ -19,19 +19,25 @@ const { ConfigFS, JSON_SUFFIX, CONFIG_TYPES } = require('./config_fs');
19
19
const mongo_utils = require ( '../util/mongo_utils' ) ;
20
20
21
21
const KeysSemaphore = require ( '../util/keys_semaphore' ) ;
22
- const { get_umasked_mode, validate_bucket_creation, get_bucket_tmpdir_full_path, folder_delete,
23
- entity_enum, translate_error_codes, get_process_fs_context} = require ( '../util/native_fs_utils' ) ;
22
+ const {
23
+ get_umasked_mode,
24
+ validate_bucket_creation,
25
+ get_bucket_tmpdir_full_path,
26
+ folder_delete,
27
+ entity_enum,
28
+ translate_error_codes,
29
+ get_process_fs_context
30
+ } = require ( '../util/native_fs_utils' ) ;
24
31
const NoobaaEvent = require ( '../manage_nsfs/manage_nsfs_events_utils' ) . NoobaaEvent ;
25
32
const { anonymous_access_key } = require ( './object_sdk' ) ;
26
33
27
34
const dbg = require ( '../util/debug_module' ) ( __filename ) ;
28
35
const bucket_semaphore = new KeysSemaphore ( 1 ) ;
29
36
30
37
31
-
32
38
class BucketSpaceFS extends BucketSpaceSimpleFS {
33
- constructor ( { config_root} , stats ) {
34
- super ( { fs_root : '' } ) ;
39
+ constructor ( { config_root } , stats ) {
40
+ super ( { fs_root : '' } ) ;
35
41
this . config_root = config_root ;
36
42
this . stats = stats ;
37
43
this . fs_context = get_process_fs_context (
@@ -85,7 +91,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
85
91
throw new RpcError ( 'NO_SUCH_ACCOUNT' , `Account with access_key not found.` , err ) ;
86
92
}
87
93
//account access failed
88
- new NoobaaEvent ( NoobaaEvent . ACCOUNT_NOT_FOUND ) . create_event ( access_key , { access_key : access_key } , err ) ;
94
+ new NoobaaEvent ( NoobaaEvent . ACCOUNT_NOT_FOUND ) . create_event ( access_key , { access_key : access_key } , err ) ;
89
95
throw new RpcError ( 'NO_SUCH_ACCOUNT' , err . message ) ;
90
96
}
91
97
}
@@ -154,7 +160,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
154
160
} catch ( err ) {
155
161
const rpc_error = translate_error_codes ( err , entity_enum . BUCKET ) ;
156
162
if ( err . rpc_code === 'INVALID_SCHEMA' ) err . rpc_code = 'INVALID_BUCKET_STATE' ;
157
- new NoobaaEvent ( NoobaaEvent [ rpc_error . rpc_code ] ) . create_event ( name , { bucket_name : name } , err ) ;
163
+ new NoobaaEvent ( NoobaaEvent [ rpc_error . rpc_code ] ) . create_event ( name , { bucket_name : name } , err ) ;
158
164
throw rpc_error ;
159
165
}
160
166
}
@@ -237,7 +243,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
237
243
}
238
244
// currently we do not allow IAM account to create a bucket (temporary)
239
245
if ( sdk . requesting_account . owner !== undefined ) {
240
- dbg . warn ( 'create_bucket: account is IAM account (currently not allowed to create buckets)' ) ;
246
+ dbg . warn ( 'create_bucket: account is IAM account (currently not allowed to create buckets)' ) ;
241
247
throw new RpcError ( 'UNAUTHORIZED' , 'Not allowed to create new buckets' ) ;
242
248
}
243
249
if ( ! sdk . requesting_account . nsfs_account_config || ! sdk . requesting_account . nsfs_account_config . new_buckets_path ) {
@@ -271,17 +277,18 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
271
277
nsfs_schema_utils . validate_bucket_schema ( bucket_to_validate ) ;
272
278
await this . config_fs . create_bucket_config_file ( name , bucket_config ) ;
273
279
} catch ( err ) {
274
- new NoobaaEvent ( NoobaaEvent . BUCKET_CREATION_FAILED ) . create_event ( name , { bucket_name : name } , err ) ;
280
+ new NoobaaEvent ( NoobaaEvent . BUCKET_CREATION_FAILED ) . create_event ( name , { bucket_name : name } , err ) ;
275
281
throw translate_error_codes ( err , entity_enum . BUCKET ) ;
276
282
}
277
283
278
284
// create bucket's underlying storage directory
279
285
try {
280
286
await nb_native ( ) . fs . mkdir ( fs_context , bucket_storage_path , get_umasked_mode ( config . BASE_MODE_DIR ) ) ;
281
- new NoobaaEvent ( NoobaaEvent . BUCKET_CREATED ) . create_event ( name , { bucket_name : name } ) ;
287
+ new NoobaaEvent ( NoobaaEvent . BUCKET_CREATED ) . create_event ( name , { bucket_name : name } ) ;
282
288
} catch ( err ) {
283
289
dbg . error ( 'BucketSpaceFS: create_bucket could not create underlying directory - nsfs, deleting bucket' , err ) ;
284
- new NoobaaEvent ( NoobaaEvent . BUCKET_DIR_CREATION_FAILED ) . create_event ( name , { bucket : name , path : bucket_storage_path } , err ) ;
290
+ new NoobaaEvent ( NoobaaEvent . BUCKET_DIR_CREATION_FAILED )
291
+ . create_event ( name , { bucket : name , path : bucket_storage_path } , err ) ;
285
292
await nb_native ( ) . fs . unlink ( this . fs_context , bucket_config_path ) ;
286
293
throw translate_error_codes ( err , entity_enum . BUCKET ) ;
287
294
}
@@ -358,8 +365,8 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
358
365
new NoobaaEvent ( NoobaaEvent . BUCKET_DELETE ) . create_event ( name , { bucket_name : name } ) ;
359
366
} catch ( err ) {
360
367
dbg . error ( 'BucketSpaceFS: delete_bucket: bucket name' , name , 'error' , err ) ;
361
- new NoobaaEvent ( NoobaaEvent . BUCKET_DELETE_FAILED ) . create_event ( name ,
362
- { bucket_name : name , bucket_path : bucket_config_path } , err ) ;
368
+ new NoobaaEvent ( NoobaaEvent . BUCKET_DELETE_FAILED )
369
+ . create_event ( name , { bucket_name : name , bucket_path : bucket_config_path } , err ) ;
363
370
throw translate_error_codes ( err , entity_enum . BUCKET ) ;
364
371
}
365
372
} ) ;
@@ -517,7 +524,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
517
524
// in case it is algorithm: 'AES256', the property would be undefined
518
525
const bucket_to_validate = _ . omitBy ( bucket , _ . isUndefined ) ;
519
526
dbg . log2 ( "put_bucket_encryption: bucket properties before validate_bucket_schema" ,
520
- bucket_to_validate ) ;
527
+ bucket_to_validate ) ;
521
528
nsfs_schema_utils . validate_bucket_schema ( bucket_to_validate ) ;
522
529
const update_bucket = JSON . stringify ( bucket ) ;
523
530
await this . config_fs . update_bucket_config_file ( name , update_bucket ) ;
@@ -565,7 +572,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
565
572
bucket . website = website ;
566
573
const bucket_to_validate = _ . omitBy ( bucket , _ . isUndefined ) ;
567
574
dbg . log2 ( "put_bucket_website: bucket properties before validate_bucket_schema" ,
568
- bucket_to_validate ) ;
575
+ bucket_to_validate ) ;
569
576
nsfs_schema_utils . validate_bucket_schema ( bucket_to_validate ) ;
570
577
const update_bucket = JSON . stringify ( bucket ) ;
571
578
await this . config_fs . update_bucket_config_file ( name , update_bucket ) ;
@@ -591,9 +598,9 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
591
598
}
592
599
593
600
/**
594
- * @param {object } params
595
- * @returns {Promise<object> }
596
- */
601
+ * @param {object } params
602
+ * @returns {Promise<object> }
603
+ */
597
604
async get_bucket_website ( params ) {
598
605
try {
599
606
const { name } = params ;
@@ -620,7 +627,7 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
620
627
dbg . log2 ( 'put_bucket_policy: bucket properties before validate_bucket_schema' , bucket_to_validate ) ;
621
628
nsfs_schema_utils . validate_bucket_schema ( bucket_to_validate ) ;
622
629
await bucket_policy_utils . validate_s3_policy ( bucket . s3_policy , bucket . name , async principal =>
623
- this . config_fs . get_account_by_name ( principal , { silent_if_missing : true } ) ) ;
630
+ this . config_fs . get_account_by_name ( principal , { silent_if_missing : true } ) ) ;
624
631
const update_bucket = JSON . stringify ( bucket ) ;
625
632
await this . config_fs . update_bucket_config_file ( name , update_bucket ) ;
626
633
} catch ( err ) {
@@ -686,10 +693,10 @@ class BucketSpaceFS extends BucketSpaceSimpleFS {
686
693
const bucket_policy = bucket . s3_policy ;
687
694
688
695
if ( ! bucket_policy ) {
689
- // in case we do not have bucket policy
690
- // we allow IAM account to access a bucket that that is owned by their root account
691
- const is_iam_and_same_root_account_owner = account . owner !== undefined &&
692
- account . owner === bucket . owner_account . id ;
696
+ // in case we do not have bucket policy
697
+ // we allow IAM account to access a bucket that that is owned by their root account
698
+ const is_iam_and_same_root_account_owner = account . owner !== undefined &&
699
+ account . owner === bucket . owner_account . id ;
693
700
return is_owner || is_iam_and_same_root_account_owner ;
694
701
}
695
702
if ( ! action ) {
0 commit comments