@@ -14,6 +14,8 @@ dbg.set_process_name('test_ceph_s3');
1414const os_utils = require ( '../../../util/os_utils' ) ;
1515const api = require ( '../../../api' ) ;
1616const { CEPH_TEST } = require ( './test_ceph_s3_constants.js' ) ;
17+ const AWS = require ( 'aws-sdk' ) ;
18+ const cloud_utils = require ( '../../../util/cloud_utils' ) ;
1719
1820// create a global RPC client
1921// the client is used to perform setup operations on noobaa system
@@ -61,26 +63,37 @@ async function ceph_test_setup() {
6163
6264 let system = await client . system . read_system ( ) ;
6365
64- let default_resource ;
65- if ( process . env . USE_NAMESPACE_RESOURCE === 'true' ) {
66- default_resource = await setup_namespace_resource ( ) ;
67- } else {
68- // We are taking the first host pool, in normal k8s setup is default backing store
69- const test_pool = system . pools . filter ( p => p . resource_type === 'HOSTS' ) [ 0 ] ;
70- console . log ( test_pool ) ;
71- default_resource = test_pool . name ;
72- }
73- console . log ( "default_resource: " , default_resource ) ;
74-
7566 try {
67+ const use_s3_namespace = process . env . USE_S3_NAMESPACE_RESOURCE === 'true' ;
68+
69+ const default_resource = use_s3_namespace ?
70+ await setup_s3_namespace_resource ( ) :
71+ ( ( ) => {
72+ // We are taking the first host pool, in normal k8s setup is default backing store
73+ const test_pool = system . pools . filter ( p => p . resource_type === 'HOSTS' ) [ 0 ] ;
74+ console . log ( test_pool ) ;
75+ return test_pool . name ;
76+ } ) ( ) ;
77+ console . log ( "default_resource: " , default_resource ) ;
78+
79+ const account_config = use_s3_namespace ? {
80+ cephalt : { nsfs_account_config : CEPH_TEST . ns_aws_cephalt_account_config } ,
81+ cephtenant : { nsfs_account_config : CEPH_TEST . ns_aws_cephtenant_account_config }
82+ } : {
83+ cephalt : { } ,
84+ cephtenant : { }
85+ } ;
86+
7687 await client . account . create_account ( {
7788 ...CEPH_TEST . new_account_params ,
78- default_resource : default_resource
89+ default_resource : default_resource ,
90+ ...account_config . cephalt
7991 } ) ;
8092
8193 await client . account . create_account ( {
8294 ...CEPH_TEST . new_account_params_tenant ,
83- default_resource : default_resource
95+ default_resource : default_resource ,
96+ ...account_config . cephtenant
8497 } ) ;
8598 } catch ( err ) {
8699 console . log ( "Failed to create account or tenant, assuming they were already created and continuing. " , err . message ) ;
@@ -112,40 +125,57 @@ async function ceph_test_setup() {
112125 }
113126}
114127
115- async function setup_namespace_resource ( ) {
116- const minioEndpoint = process . env . MINIO_ENDPOINT ;
117- const minioUser = process . env . MINIO_USER ;
118- const minioPassword = process . env . MINIO_PASSWORD ;
119- const minioTestBucket = process . env . MINIO_TEST_BUCKET ;
120- const namespaceResourceName = "ns-aws" ;
128+ async function setup_s3_namespace_resource ( ) {
129+ const minio_endpoint = process . env . MINIO_ENDPOINT ;
130+ const minio_user = process . env . MINIO_USER ;
131+ const minio_password = process . env . MINIO_PASSWORD ;
132+ const minio_test_bucket = process . env . MINIO_TEST_BUCKET ;
133+ const namespace_resource_name = "ns-aws" ;
134+
135+ // create the bucket in Minio using AWS SDK
136+ console . info ( `Creating bucket ${ minio_test_bucket } in Minio...` ) ;
137+ try {
138+ const s3 = new AWS . S3 ( {
139+ endpoint : minio_endpoint ,
140+ accessKeyId : minio_user ,
141+ secretAccessKey : minio_password ,
142+ s3ForcePathStyle : true ,
143+ signatureVersion : cloud_utils . get_s3_endpoint_signature_ver ( minio_endpoint )
144+ } ) ;
145+
146+ await s3 . createBucket ( { Bucket : minio_test_bucket } ) . promise ( ) ;
147+ console . log ( `Bucket ${ minio_test_bucket } created successfully in Minio` ) ;
148+ } catch ( err ) {
149+ throw new Error ( `Bucket creation failed: ${ err . message } ` ) ;
150+ }
121151
122152 console . info ( 'Creating external connection...' ) ;
123153 try {
124154 await client . account . add_external_connection ( {
125155 name : "minio-connection" ,
126- endpoint : minioEndpoint ,
156+ endpoint : minio_endpoint ,
127157 endpoint_type : "S3_COMPATIBLE" ,
128- identity : minioUser ,
129- secret : minioPassword
158+ identity : minio_user ,
159+ secret : minio_password
130160 } ) ;
131161 console . log ( 'External connection created successfully' ) ;
132162 } catch ( err ) {
133- console . log ( "Failed to create external connection: " , err . message ) ;
163+ throw new Error ( `External connection creation failed: ${ err . message } ` ) ;
134164 }
135165
136166 console . info ( 'Creating namespace resource...' ) ;
137167 try {
138168 await client . pool . create_namespace_resource ( {
139- name : namespaceResourceName ,
169+ name : namespace_resource_name ,
140170 connection : "minio-connection" ,
141- target_bucket : minioTestBucket
171+ target_bucket : minio_test_bucket
142172 } ) ;
143173 console . log ( 'Namespace resource created successfully' ) ;
144174 } catch ( err ) {
145- console . log ( "Failed to create namespace resource: " , err . message ) ;
175+ throw new Error ( `Namespace resource creation failed: ${ err . message } ` ) ;
146176 }
147177
148- return namespaceResourceName ;
178+ return namespace_resource_name ;
149179}
150180
151181if ( require . main === module ) {
0 commit comments