Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change ADO settings in bucket creation and udpate tests #81

Merged
merged 1 commit into from
Mar 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions ecsclient/common/provisioning/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def __init__(self, connection):
self.conn = connection

def create(self, bucket_name, replication_group='', filesystem_enabled=False,
head_type=None, namespace=None, stale_allowed=False,
head_type=None, namespace=None, stale_allowed=None,
metadata=None, encryption_enabled=False):
"""
Creates a bucket which could be used by users to create objects.
Expand Down Expand Up @@ -69,14 +69,15 @@ def create(self, bucket_name, replication_group='', filesystem_enabled=False,
"name": bucket_name,
"vpool": replication_group,
"filesystem_enabled": filesystem_enabled,
"is_stale_allowed": stale_allowed,
"is_encryption_enabled": encryption_enabled,
}

log.info("Creating bucket '{}'".format(bucket_name))

if namespace:
payload['namespace'] = namespace
if stale_allowed:
payload['is_stale_allowed'] = stale_allowed
if head_type:
payload['head_type'] = head_type
if metadata:
Expand Down
76 changes: 69 additions & 7 deletions tests/functional/test_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,26 @@ class TestBucket(functional.BaseTestCase):
def __init__(self, *args, **kwargs):
super(TestBucket, self).__init__(*args, **kwargs)
self.bucket_1 = "functional-tests-bucket-%s" % int(time.time())
# test bucket creation based on different namespace ADO settings
self.bucket_2 = self.bucket_1 + '_second'
self.bucket_3 = self.bucket_1 + '_third'
self.bucket_4 = self.bucket_1 + '_fourth'
self.bucket_5 = self.bucket_1 + '_fifth'
# namespaces with different ADO settings, namespace_1 is ADO default, namespace_2 is ADO enabled
self.namespace_1 = "functional-tests-namespace-%s" % int(time.time())
self.namespace_2 = self.namespace_1 + '_second'
self.replication_group_1 = "functional-tests-replicationgroup-%s" % int(time.time())
self.replication_group_1_id = "placeholder"
self.storage_pool_1 = "functional-tests-storagepool-%s" % int(time.time())
self.object_user = None
self.object_user_created = False
self.object_user_second = None
self.object_user_created_second = False
self.replication_group_created = False

def setUp(self):
super(TestBucket, self).setUp()
# Create a namespace
# Create a namespace with default ADO setting
self.client.namespace.create(self.namespace_1)
# Create an object user with the current logged in user name
r = self.client.user_info.whoami()
Expand Down Expand Up @@ -54,8 +62,8 @@ def setUp(self):

def tearDown(self):
super(TestBucket, self).tearDown()
for bucket in [self.bucket_1,
self.bucket_2]:

for bucket in [self.bucket_1, self.bucket_2, self.bucket_3]:
try:
self.client.bucket.delete(bucket, namespace=self.namespace_1)
except ECSClientException:
Expand All @@ -71,18 +79,72 @@ def tearDown(self):
def test_bucket_list(self):
response = self.client.bucket.list(self.namespace_1)
self.assertValidSchema(response, schemas.BUCKET_LIST)

def test_bucket_create(self):
response = self.client.bucket.create(self.bucket_2,
# Create a namespace with ADO setting True
self.client.namespace.create(name=self.namespace_2, is_stale_allowed=True)
# create bucket with stale_allowed=True on namespace(default ADO setting)
response_create_2 = self.client.bucket.create(self.bucket_2,
namespace=self.namespace_1,
replication_group=self.replication_group_1_id,
filesystem_enabled=False,
head_type='s3',
stale_allowed=True,
encryption_enabled=False
)
self.assertValidSchema(response, schemas.BUCKET_SHORT)
self.assertEqual(response['name'], self.bucket_2)
self.assertValidSchema(response_create_2, schemas.BUCKET_SHORT)
self.assertEqual(response_create_2['name'], self.bucket_2)
response_get_2 = self.client.bucket.get(self.bucket_2, namespace=self.namespace_1)
self.assertEqual(True, response_get_2['is_stale_allowed'])

# create bucket with default stale_allowed on namespace(default ADO setting)
response_create_3 = self.client.bucket.create(self.bucket_3,
namespace=self.namespace_1,
replication_group=self.replication_group_1_id,
filesystem_enabled=False,
head_type='s3',
encryption_enabled=False
)
self.assertValidSchema(response_create_3, schemas.BUCKET_SHORT)
self.assertEqual(response_create_3['name'], self.bucket_3)
response_get_3 = self.client.bucket.get(self.bucket_3, namespace=self.namespace_1)
self.assertEqual(False, response_get_3['is_stale_allowed'])

# create bucket with stale_allowed=True on namespace(ADO turned on)
response_create_4 = self.client.bucket.create(self.bucket_4,
namespace=self.namespace_2,
replication_group=self.replication_group_1_id,
filesystem_enabled=False,
head_type='s3',
stale_allowed=True,
encryption_enabled=False
)
self.assertValidSchema(response_create_4, schemas.BUCKET_SHORT)
self.assertEqual(response_create_4['name'], self.bucket_4)
response_get_4 = self.client.bucket.get(self.bucket_4, namespace=self.namespace_2)
self.assertEqual(True, response_get_4['is_stale_allowed'])

# # create bucket with default stale_allowed on namespace(ADO turned on)
response_create_5 = self.client.bucket.create(self.bucket_5,
namespace=self.namespace_2,
replication_group=self.replication_group_1_id,
filesystem_enabled=False,
head_type='s3',
encryption_enabled=False
)
self.assertValidSchema(response_create_5, schemas.BUCKET_SHORT)
self.assertEqual(response_create_5['name'], self.bucket_5)
response_get_5 = self.client.bucket.get(self.bucket_5, namespace=self.namespace_2)
self.assertEqual(True, response_get_5['is_stale_allowed'])

# clean ado-enabled namespace
for bucket in [self.bucket_4, self.bucket_5]:
try:
self.client.bucket.delete(bucket, namespace=self.namespace_2)
except ECSClientException:
pass
self.client.namespace.delete(self.namespace_2)


def test_bucket_get(self):
response = self.client.bucket.get(self.bucket_1, namespace=self.namespace_1)
Expand Down