@@ -14,6 +14,8 @@ dbg.set_process_name('test_ceph_s3');
14
14
const os_utils = require ( '../../../util/os_utils' ) ;
15
15
const api = require ( '../../../api' ) ;
16
16
const { CEPH_TEST } = require ( './test_ceph_s3_constants.js' ) ;
17
+ const AWS = require ( 'aws-sdk' ) ;
18
+ const cloud_utils = require ( '../../../util/cloud_utils' ) ;
17
19
18
20
// create a global RPC client
19
21
// the client is used to perform setup operations on noobaa system
@@ -61,26 +63,37 @@ async function ceph_test_setup() {
61
63
62
64
let system = await client . system . read_system ( ) ;
63
65
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
-
75
66
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
+
76
87
await client . account . create_account ( {
77
88
...CEPH_TEST . new_account_params ,
78
- default_resource : default_resource
89
+ default_resource : default_resource ,
90
+ ...account_config . cephalt
79
91
} ) ;
80
92
81
93
await client . account . create_account ( {
82
94
...CEPH_TEST . new_account_params_tenant ,
83
- default_resource : default_resource
95
+ default_resource : default_resource ,
96
+ ...account_config . cephtenant
84
97
} ) ;
85
98
} catch ( err ) {
86
99
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() {
112
125
}
113
126
}
114
127
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
+ }
121
151
122
152
console . info ( 'Creating external connection...' ) ;
123
153
try {
124
154
await client . account . add_external_connection ( {
125
155
name : "minio-connection" ,
126
- endpoint : minioEndpoint ,
156
+ endpoint : minio_endpoint ,
127
157
endpoint_type : "S3_COMPATIBLE" ,
128
- identity : minioUser ,
129
- secret : minioPassword
158
+ identity : minio_user ,
159
+ secret : minio_password
130
160
} ) ;
131
161
console . log ( 'External connection created successfully' ) ;
132
162
} catch ( err ) {
133
- console . log ( "Failed to create external connection: " , err . message ) ;
163
+ throw new Error ( `External connection creation failed: ${ err . message } ` ) ;
134
164
}
135
165
136
166
console . info ( 'Creating namespace resource...' ) ;
137
167
try {
138
168
await client . pool . create_namespace_resource ( {
139
- name : namespaceResourceName ,
169
+ name : namespace_resource_name ,
140
170
connection : "minio-connection" ,
141
- target_bucket : minioTestBucket
171
+ target_bucket : minio_test_bucket
142
172
} ) ;
143
173
console . log ( 'Namespace resource created successfully' ) ;
144
174
} catch ( err ) {
145
- console . log ( "Failed to create namespace resource: " , err . message ) ;
175
+ throw new Error ( `Namespace resource creation failed: ${ err . message } ` ) ;
146
176
}
147
177
148
- return namespaceResourceName ;
178
+ return namespace_resource_name ;
149
179
}
150
180
151
181
if ( require . main === module ) {
0 commit comments