Prepare SignalResponder class for more signal types

This change makes some minor refactorings in the SignalResponder class
to disambiguate the existing signal support and allow for the addition
of other signal types currently supported elsewhere in the codebase.

Implements: partial blueprint uniform-resource-signals
Change-Id: I353558431a8851e4e43c8a787f03190ed508bb5d
This commit is contained in:
Miguel Grinberg 2015-06-30 11:17:33 -07:00
parent 5ed6f96858
commit 0679458a59
9 changed files with 23 additions and 19 deletions

View File

@ -97,7 +97,7 @@ class AWSScalingPolicy(heat_sp.AutoScalingPolicy):
def FnGetRefId(self):
if self.resource_id is not None:
return six.text_type(self._get_signed_url())
return six.text_type(self._get_ec2_signed_url())
else:
return six.text_type(self.name)

View File

@ -45,7 +45,7 @@ class WaitConditionHandle(wc_base.BaseWaitConditionHandle):
'''
if self.resource_id:
wc = signal_responder.WAITCONDITION
return six.text_type(self._get_signed_url(signal_type=wc))
return six.text_type(self._get_ec2_signed_url(signal_type=wc))
else:
return six.text_type(self.name)

View File

@ -103,7 +103,7 @@ class Restarter(signal_responder.SignalResponder):
when there is an alarm.
'''
if name == self.ALARM_URL and self.resource_id is not None:
return six.text_type(self._get_signed_url())
return six.text_type(self._get_ec2_signed_url())
def resource_mapping():

View File

@ -190,9 +190,9 @@ class AutoScalingPolicy(signal_responder.SignalResponder,
def _resolve_attribute(self, name):
if name == self.ALARM_URL:
return six.text_type(self._get_signed_url())
return six.text_type(self._get_ec2_signed_url())
elif name == self.SIGNAL_URL:
return six.text_type(self._get_signal_url())
return six.text_type(self._get_heat_signal_url())
def FnGetRefId(self):
return resource.Resource.FnGetRefId(self)

View File

@ -425,7 +425,7 @@ class SoftwareDeployment(signal_responder.SignalResponder):
scl.DESCRIPTION: _('ID of signal to use for signaling '
'output values'),
scl.TYPE: 'String',
'value': self._get_signed_url()
'value': self._get_ec2_signed_url()
})
inputs.append({
scl.NAME: self.DEPLOY_SIGNAL_VERB,
@ -537,7 +537,7 @@ class SoftwareDeployment(signal_responder.SignalResponder):
def _delete_resource(self):
if self._signal_transport_cfn():
self._delete_signed_url()
self._delete_ec2_signed_url()
self._delete_user()
elif self._signal_transport_heat():
self._delete_user()

View File

@ -408,7 +408,7 @@ class Workflow(signal_responder.SignalResponder,
self.INPUT: self.properties.get(self.INPUT)}
elif name == self.ALARM_URL:
return six.text_type(self._get_signed_url())
return six.text_type(self._get_ec2_signed_url())
def resource_mapping():

View File

@ -42,12 +42,13 @@ class SignalResponder(stack_user.StackUser):
def handle_delete(self):
super(SignalResponder, self).handle_delete()
self._delete_signed_url()
self._delete_ec2_signed_url()
self._delete_heat_signal_url()
def _delete_signed_url(self):
def _delete_ec2_signed_url(self):
self.data_delete('ec2_signed_url')
def _get_signed_url(self, signal_type=SIGNAL):
def _get_ec2_signed_url(self, signal_type=SIGNAL):
"""Create properly formatted and pre-signed URL.
This uses the created user for the credentials.
@ -105,8 +106,11 @@ class SignalResponder(stack_user.StackUser):
self.data_set('ec2_signed_url', url)
return url
def _get_signal_url(self):
stored = self.data().get('signal_url')
def _delete_heat_signal_url(self):
self.data_delete('heat_signal_url')
def _get_heat_signal_url(self):
stored = self.data().get('heat_signal_url')
if stored is not None:
return stored
@ -117,5 +121,5 @@ class SignalResponder(stack_user.StackUser):
url = urlparse.urlunsplit(
(host_url.scheme, host_url.netloc, 'v1/%s/signal' % path, '', ''))
self.data_set('signal_url', url)
self.data_set('heat_signal_url', url)
return url

View File

@ -145,7 +145,7 @@ class SignalResource(signal_responder.SignalResponder):
def _resolve_attribute(self, name):
if name == 'AlarmUrl' and self.resource_id is not None:
return six.text_type(self._get_signed_url())
return six.text_type(self._get_ec2_signed_url())
class StackUserResource(stack_user.StackUser):

View File

@ -163,10 +163,10 @@ class SoftwareDeploymentTest(common.HeatTestCase):
self.patchobject(sd.SoftwareDeployment, '_create_user')
self.patchobject(sd.SoftwareDeployment, '_create_keypair')
self.patchobject(sd.SoftwareDeployment, '_delete_user')
self.patchobject(sd.SoftwareDeployment, '_delete_signed_url')
get_signed_url = self.patchobject(
sd.SoftwareDeployment, '_get_signed_url')
get_signed_url.return_value = 'http://192.0.2.2/signed_url'
self.patchobject(sd.SoftwareDeployment, '_delete_ec2_signed_url')
get_ec2_signed_url = self.patchobject(
sd.SoftwareDeployment, '_get_ec2_signed_url')
get_ec2_signed_url.return_value = 'http://192.0.2.2/signed_url'
self.deployment = self.stack['deployment_mysql']