From e897e1334022697a90b179d62dce1e874424b71a Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Fri, 22 Feb 2013 16:05:12 +0100 Subject: [PATCH] Use a short_id for naming S3 containers Change-Id: Iba8ea4eb536d58e1332897cec2059aebbb41b28a Signed-off-by: Zane Bitter --- heat/engine/resources/s3.py | 13 +++++-------- heat/tests/test_s3.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/heat/engine/resources/s3.py b/heat/engine/resources/s3.py index 119e43e8..57668bff 100644 --- a/heat/engine/resources/s3.py +++ b/heat/engine/resources/s3.py @@ -13,12 +13,11 @@ # License for the specific language governing permissions and limitations # under the License. -import binascii -import os from urlparse import urlparse from heat.common import exception from heat.engine import resource +from heat.common import short_id from heat.openstack.common import log as logging from heat.engine import clients @@ -54,15 +53,13 @@ class S3Bucket(resource.Resource): return {'Error': 'S3 services unavailable because of missing swiftclient.'} - @staticmethod - def _create_container_name(resource_name): - return 'heat-%s-%s' % (resource_name, - binascii.hexlify(os.urandom(10))) + def _create_container_name(self): + return '%s-%s-%s' % (self.stack.name, self.name, + short_id.generate_id()) def handle_create(self): """Create a bucket.""" - container = S3Bucket._create_container_name( - self.physical_resource_name()) + container = self._create_container_name() headers = {} logger.debug('S3Bucket create container %s with headers %s' % (container, headers)) diff --git a/heat/tests/test_s3.py b/heat/tests/test_s3.py index 709b5a51..e4f80e13 100644 --- a/heat/tests/test_s3.py +++ b/heat/tests/test_s3.py @@ -42,7 +42,7 @@ class s3Test(unittest.TestCase): self.m.StubOutWithMock(swiftclient.Connection, 'delete_container') self.m.StubOutWithMock(swiftclient.Connection, 'get_auth') - self.container_pattern = 'heat-test_stack.test_resource-[0-9a-f]+' + self.container_pattern = 'test_stack-test_resource-[0-9a-z]+' def tearDown(self): self.m.UnsetStubs() @@ -76,10 +76,14 @@ class s3Test(unittest.TestCase): @skip_if(swiftclient is None, 'unable to import swiftclient') def test_create_container_name(self): - self.m.UnsetStubs() + self.m.ReplayAll() + t = self.load_template() + stack = self.parse_stack(t) + resource = s3.S3Bucket('test_resource', + t['Resources']['S3Bucket'], + stack) self.assertTrue(re.match(self.container_pattern, - s3.S3Bucket._create_container_name( - 'test_stack.test_resource'))) + resource._create_container_name())) @skip_if(swiftclient is None, 'unable to import swiftclient') def test_attributes(self): -- 2.45.2