From ca8effbbae50392672d4474622ab3af770358828 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Thu, 2 Jul 2015 18:11:50 -0700 Subject: Move signals to SignalResponder class This change relocates the code that creates and deletes heat, swift and zaqar signals out of SoftwareDeployment and into SignalResponder, as a first step in making these signals available to all resources. As part of this change the structure of the Swift URLs was changed to match that of the SwiftSignal resource. Change-Id: Id5701b3696b0ab41433a3f158fabce1f36aabe16 Implements: blueprint uniform-resource-signals --- heat/tests/generic_resource.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'heat/tests/generic_resource.py') diff --git a/heat/tests/generic_resource.py b/heat/tests/generic_resource.py index 5466b109c..5ec9437d2 100644 --- a/heat/tests/generic_resource.py +++ b/heat/tests/generic_resource.py @@ -132,8 +132,11 @@ class ResourceWithRequiredProps(GenericResource): class SignalResource(signal_responder.SignalResponder): - properties_schema = {} - attributes_schema = {'AlarmUrl': attributes.Schema('Get a signed webhook')} + properties_schema = { + 'signal_transport': properties.Schema(properties.Schema.STRING, + default='CFN_SIGNAL')} + attributes_schema = {'AlarmUrl': attributes.Schema('Get a signed webhook'), + 'signal': attributes.Schema('Get a signal')} def handle_create(self): super(SignalResource, self).handle_create() @@ -144,8 +147,22 @@ class SignalResource(signal_responder.SignalResponder): {'type': self.type(), 'details': details}) def _resolve_attribute(self, name): - if name == 'AlarmUrl' and self.resource_id is not None: - return six.text_type(self._get_ec2_signed_url()) + if self.resource_id is not None: + if self.properties['signal_transport'] == 'CFN_SIGNAL': + d = {'alarm_url': six.text_type(self._get_ec2_signed_url())} + elif self.properties['signal_transport'] == 'HEAT_SIGNAL': + d = self._get_heat_signal_credentials() + d['alarm_url'] = six.text_type(self._get_heat_signal_url()) + elif self.properties['signal_transport'] == 'TEMP_URL_SIGNAL': + d = {'alarm_url': six.text_type(self._get_swift_signal_url())} + elif self.properties['signal_transport'] == 'ZAQAR_SIGNAL': + d = self._get_heat_signal_credentials() + d['queue_id'] = six.text_type( + self._get_zaqar_signal_queue_id()) + if name == 'AlarmUrl': + return d['alarm_url'] + elif name == 'signal': + return d class StackUserResource(stack_user.StackUser): -- cgit v1.2.1