Use physical_resource_name() for Swift containers

This returns names which are of the same form, but which are based on the
resource id (and hence are stable).

Change-Id: Id091bdef74e07fc0df0e6e4914dae8af8b29384c
This commit is contained in:
Zane Bitter 2013-06-17 12:24:50 +02:00
parent 9e2ecf7568
commit 560804e428
4 changed files with 10 additions and 27 deletions

View File

@ -17,7 +17,6 @@ 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
@ -47,13 +46,9 @@ class S3Bucket(resource.Resource):
return {'Error':
'S3 services unavailable because of missing swiftclient.'}
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 = self._create_container_name()
container = self.physical_resource_name()
headers = {}
logger.debug('S3Bucket create container %s with headers %s' %
(container, headers))

View File

@ -17,7 +17,6 @@ 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
@ -40,10 +39,12 @@ class SwiftContainer(resource.Resource):
return {'Error':
'SwiftContainer unavailable due to missing swiftclient.'}
def _create_container_name(self, name=None):
return name or '%s-%s-%s' % (self.stack.name,
self.name,
short_id.generate_id())
def physical_resource_name(self):
name = self.properties.get('name')
if name:
return name
return super(SwiftContainer, self).physical_resource_name()
@staticmethod
def _build_meta_headers(meta_props):
@ -58,7 +59,7 @@ class SwiftContainer(resource.Resource):
def handle_create(self):
"""Create a container."""
container = self._create_container_name(self.properties.get('name'))
container = self.physical_resource_name()
headers = SwiftContainer._build_meta_headers(
self.properties['X-Container-Meta'])
if 'X-Container-Read' in self.properties.keys():

View File

@ -77,16 +77,6 @@ class s3Test(HeatTestCase):
self.assertEqual(s3.S3Bucket.CREATE_COMPLETE, rsrc.state)
return rsrc
def test_create_container_name(self):
self.m.ReplayAll()
t = template_format.parse(swift_template)
stack = parse_stack(t)
rsrc = s3.S3Bucket('test_resource',
t['Resources']['S3Bucket'],
stack)
self.assertTrue(re.match(self.container_pattern,
rsrc._create_container_name()))
def test_attributes(self):
swiftclient.Connection.put_container(
mox.Regex(self.container_pattern),

View File

@ -81,17 +81,14 @@ class swiftTest(HeatTestCase):
def test_create_container_name(self):
self.m.ReplayAll()
t = template_format.parse(swift_template)
t['Resources']['SwiftContainer']['Properties']['name'] = 'the_name'
stack = parse_stack(t)
rsrc = swift.SwiftContainer(
'test_resource',
t['Resources']['SwiftContainer'],
stack)
self.assertTrue(re.match(self.container_pattern,
rsrc._create_container_name()))
self.assertEqual(
'the_name',
rsrc._create_container_name('the_name'))
self.assertEqual('the_name', rsrc.physical_resource_name())
def test_build_meta_headers(self):
self.m.UnsetStubs()