summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-11-13 20:48:44 +0000
committerGerrit Code Review <review@openstack.org>2015-11-13 20:48:44 +0000
commit79147fc305f7955f330ad5494eb3e98b9b6ecc9e (patch)
treeee57bda40b6af8c014fc7c631c01fe29c8a398e7
parent89609fe8825bb446f76493bf6638b55c26c308c0 (diff)
parentb2c2677359f71c3feddd8bcfeafabe009338ca0e (diff)
downloadheat-stable/juno.tar.gz
Merge "Always fetch temp URL key before generation" into stable/junojuno-eol2014.2.4stable/juno
-rw-r--r--heat/engine/clients/os/swift.py11
-rw-r--r--heat/tests/test_swift_client.py16
2 files changed, 17 insertions, 10 deletions
diff --git a/heat/engine/clients/os/swift.py b/heat/engine/clients/os/swift.py
index 79a308602..0eed2dd84 100644
--- a/heat/engine/clients/os/swift.py
+++ b/heat/engine/clients/os/swift.py
@@ -88,11 +88,12 @@ class SwiftClientPlugin(client_plugin.ClientPlugin):
Return a Swift TempURL.
'''
key_header = 'x-account-meta-temp-url-key'
- if key_header in self.client().head_account():
- key = self.client().head_account()[key_header]
- else:
- key = hashlib.sha224(str(random.getrandbits(256))).hexdigest()[:32]
- self.client().post_account({key_header: key})
+ if key_header not in self.client().head_account():
+ self.client().post_account({
+ key_header: hashlib.sha224(
+ str(random.getrandbits(256))).hexdigest()[:32]})
+
+ key = self.client().head_account()[key_header]
path = '/v1/AUTH_%s/%s/%s' % (self.context.tenant_id, container_name,
obj_name)
diff --git a/heat/tests/test_swift_client.py b/heat/tests/test_swift_client.py
index fe72d1ec9..5930079f6 100644
--- a/heat/tests/test_swift_client.py
+++ b/heat/tests/test_swift_client.py
@@ -82,17 +82,23 @@ class SwiftUtilsTests(SwiftClientPluginTestCase):
def test_get_temp_url_no_account_key(self):
self.swift_client.url = ("http://fake-host.com:8080/v1/"
- "AUTH_test_tenant_id")
- self.swift_client.head_account = mock.Mock(return_value={})
- self.swift_client.post_account = mock.Mock()
- self.assertFalse(self.swift_client.post_account.called)
+ "AUTH_demo")
+ head_account = {}
+
+ def post_account(data):
+ head_account.update(data)
+
+ self.swift_client.head_account = mock.Mock(return_value=head_account)
+ self.swift_client.post_account = post_account
container_name = '1234' # from stack.id
stack_name = 'test'
handle_name = 'foo'
obj_name = '%s-%s' % (stack_name, handle_name)
+
+ self.assertNotIn('x-account-meta-temp-url-key', head_account)
self.swift_plugin.get_temp_url(container_name, obj_name)
- self.assertTrue(self.swift_client.post_account.called)
+ self.assertIn('x-account-meta-temp-url-key', head_account)
def test_get_signal_url(self):
self.swift_client.url = ("http://fake-host.com:8080/v1/"