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:
parent
5ed6f96858
commit
0679458a59
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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']
|
||||
|
||||
|
|
Loading…
Reference in New Issue