Skip to content

Commit 95a5292

Browse files
committed
Moved bucket creation to config, proper casing and some efficient changes
Signed-off-by: Aayush Chouhan <[email protected]>
1 parent 278b226 commit 95a5292

File tree

5 files changed

+75
-37
lines changed

5 files changed

+75
-37
lines changed

Makefile

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ MINT_NOOBAA_HTTP_ENDPOINT_PORT=6001
116116
###################
117117

118118
MINIO_IMAGE?="quay.io/minio/minio"
119-
AWS_CLI_IMAGE?="amazon/aws-cli"
119+
120120
MINIO_PORT?=9000
121121
MINIO_USER?="miniotest"
122122
MINIO_PASSWORD?="miniotest123"
@@ -369,7 +369,7 @@ test-cephs3-ns-aws: tester
369369
@$(call run_minio)
370370
@$(call run_postgres)
371371
@echo "\033[1;34mRunning tests\033[0m"
372-
$(CONTAINER_ENGINE) run $(CPUSET) --privileged --user root --network noobaa-net --name noobaa_$(GIT_COMMIT)_$(NAME_POSTFIX) --env "SUPPRESS_LOGS=$(SUPPRESS_LOGS)" --env "POSTGRES_HOST=coretest-postgres-$(GIT_COMMIT)-$(NAME_POSTFIX)" --env "POSTGRES_USER=noobaa" --env "DB_TYPE=postgres" --env "POSTGRES_DBNAME=coretest" --env "USE_NAMESPACE_RESOURCE=true" --env "MINIO_ENDPOINT=http://coretest-minio-$(GIT_COMMIT)-$(NAME_POSTFIX):$(MINIO_PORT)" --env "MINIO_USER=$(MINIO_USER)" --env "MINIO_PASSWORD=$(MINIO_PASSWORD)" --env "MINIO_TEST_BUCKET=$(MINIO_TEST_BUCKET)" -v $(PWD)/logs:/logs $(TESTER_TAG) "./src/test/external_tests/ceph_s3_tests/run_ceph_test_on_test_container.sh"
372+
$(CONTAINER_ENGINE) run $(CPUSET) --privileged --user root --network noobaa-net --name noobaa_$(GIT_COMMIT)_$(NAME_POSTFIX) --env "SUPPRESS_LOGS=$(SUPPRESS_LOGS)" --env "POSTGRES_HOST=coretest-postgres-$(GIT_COMMIT)-$(NAME_POSTFIX)" --env "POSTGRES_USER=noobaa" --env "DB_TYPE=postgres" --env "POSTGRES_DBNAME=coretest" --env "USE_S3_NAMESPACE_RESOURCE=true" --env "MINIO_ENDPOINT=http://coretest-minio-$(GIT_COMMIT)-$(NAME_POSTFIX):$(MINIO_PORT)" --env "MINIO_USER=$(MINIO_USER)" --env "MINIO_PASSWORD=$(MINIO_PASSWORD)" --env "MINIO_TEST_BUCKET=$(MINIO_TEST_BUCKET)" -v $(PWD)/logs:/logs $(TESTER_TAG) "./src/test/external_tests/ceph_s3_tests/run_ceph_test_on_test_container.sh"
373373
@$(call stop_noobaa)
374374
@$(call stop_postgres)
375375
@$(call stop_minio)
@@ -615,10 +615,6 @@ define run_minio
615615
$(CONTAINER_ENGINE) run -d $(CPUSET) --network noobaa-net --name coretest-minio-$(GIT_COMMIT)-$(NAME_POSTFIX) -p $(MINIO_PORT):$(MINIO_PORT) --env "MINIO_ROOT_USER=$(MINIO_USER)" --env "MINIO_ROOT_PASSWORD=$(MINIO_PASSWORD)" $(MINIO_IMAGE) server /data --address ":$(MINIO_PORT)"
616616
@echo "\033[1;34mWaiting for Minio to start..\033[0m"
617617
sleep 20
618-
@echo "\033[1;34mCreating test bucket in Minio..\033[0m"
619-
$(CONTAINER_ENGINE) run --rm --network noobaa-net --env "AWS_ACCESS_KEY_ID=$(MINIO_USER)" --env "AWS_SECRET_ACCESS_KEY=$(MINIO_PASSWORD)" --env "AWS_DEFAULT_REGION=us-east-1" $(AWS_CLI_IMAGE) s3 mb s3://$(MINIO_TEST_BUCKET) --endpoint-url http://coretest-minio-$(GIT_COMMIT)-$(NAME_POSTFIX):$(MINIO_PORT)
620-
@echo "\033[1;34mVerifying bucket creation..\033[0m"
621-
$(CONTAINER_ENGINE) run --rm --network noobaa-net --env "AWS_ACCESS_KEY_ID=$(MINIO_USER)" --env "AWS_SECRET_ACCESS_KEY=$(MINIO_PASSWORD)" --env "AWS_DEFAULT_REGION=us-east-1" $(AWS_CLI_IMAGE) s3 ls --endpoint-url http://coretest-minio-$(GIT_COMMIT)-$(NAME_POSTFIX):$(MINIO_PORT)
622618
@echo "\033[1;32mRun Minio done.\033[0m"
623619
endef
624620

src/test/external_tests/ceph_s3_tests/run_ceph_test_on_test_container.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ export BG_ADDR=wss://localhost:5445
3535
export HOSTED_AGENTS_ADDR=wss://localhost:5446
3636

3737
# set logs directory based on test type
38-
# later we will add more test types and logs directories on the basis of namespace resource type
39-
if [ "${USE_NAMESPACE_RESOURCE}" = "true" ]; then
38+
# later we will add more test types and logs directories on the basis of s3 namespace resource type
39+
if [ "${USE_S3_NAMESPACE_RESOURCE}" = "true" ]; then
4040
export CEPH_TEST_LOGS_DIR=/logs/ceph-ns-aws-test-logs
4141
else
4242
export CEPH_TEST_LOGS_DIR=/logs/ceph-test-logs

src/test/external_tests/ceph_s3_tests/test_ceph_s3_config_and_run_s3_tests.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ CEPH_S3_DIRECTORY="src/test/external_tests/ceph_s3_tests"
99
CEPH_S3_TESTS_CONFIG="${CEPH_S3_DIRECTORY}/test_ceph_s3_config_setup.js"
1010
CEPH_S3_RUN_TESTS="${CEPH_S3_DIRECTORY}/test_ceph_s3.js"
1111

12-
# choose test lists based on USE_NAMESPACE_RESOURCE flag
12+
# choose test lists based on USE_S3_NAMESPACE_RESOURCE flag
1313
# later we will add more test lists for other types of namespace resources
14-
if [ "${USE_NAMESPACE_RESOURCE}" = "true" ]; then
14+
if [ "${USE_S3_NAMESPACE_RESOURCE}" = "true" ]; then
1515
S3_CEPH_TEST_BLACKLIST="${CEPH_S3_DIRECTORY}/s3-tests-lists/ns_aws_s3_tests_black_list.txt"
1616
S3_CEPH_TEST_PENDING_LIST="${CEPH_S3_DIRECTORY}/s3-tests-lists/ns_aws_s3_tests_pending_list.txt"
1717
else

src/test/external_tests/ceph_s3_tests/test_ceph_s3_config_setup.js

Lines changed: 57 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ dbg.set_process_name('test_ceph_s3');
1414
const os_utils = require('../../../util/os_utils');
1515
const api = require('../../../api');
1616
const { 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

151181
if (require.main === module) {

src/test/external_tests/ceph_s3_tests/test_ceph_s3_constants.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,18 @@ const CEPH_TEST = {
4141
anonymous: true,
4242
uid: process.getuid(),
4343
gid: process.getgid()
44+
},
45+
ns_aws_cephalt_account_config: {
46+
uid: 1000,
47+
gid: 1000,
48+
new_buckets_path: '/tmp/ns_aws_ceph_alt',
49+
nsfs_only: false
50+
},
51+
ns_aws_cephtenant_account_config: {
52+
uid: 2000,
53+
gid: 2000,
54+
new_buckets_path: '/tmp/ns_aws_ceph_tenant',
55+
nsfs_only: false
4456
}
4557
};
4658
const DEFAULT_NUMBER_OF_WORKERS = 5; //5 was the number of workers in the previous CI/CD process

0 commit comments

Comments
 (0)