Fix arguments for OS::Mistral::CronTrigger create

In python-mistralclient, the `workflow_name` argument was renamed to
`workflow_identifier` in version 2.0.0, breaking this resource type. Ensure
that this works with all client versions by passing the first two arguments
as positional rather than keyword args.

Change-Id: Ibbed3af468bbc0d68995495095b6cd340c1ea427
Closes-Bug: #1557575
This commit is contained in:
Zane Bitter 2017-04-06 15:16:31 -04:00 committed by Peter Razumovsky
parent e9679344c9
commit f682e7afed
2 changed files with 12 additions and 10 deletions

View File

@ -72,7 +72,7 @@ class CronTrigger(resource.Resource):
schema={
WORKFLOW_NAME: properties.Schema(
properties.Schema.STRING,
_('Name of the workflow.'),
_('Name or ID of the workflow.'),
required=True,
constraints=[
constraints.CustomConstraint('mistral.workflow')
@ -121,16 +121,18 @@ class CronTrigger(resource.Resource):
def handle_create(self):
workflow = self.properties.get(self.WORKFLOW)
name = self._cron_trigger_name()
identifier = workflow[self.WORKFLOW_NAME]
args = {
'name': self._cron_trigger_name(),
'pattern': self.properties.get(self.PATTERN),
'workflow_name': workflow.get(self.WORKFLOW_NAME),
'workflow_input': workflow.get(self.WORKFLOW_INPUT),
'first_time': self.properties.get(self.FIRST_TIME),
'count': self.properties.get(self.COUNT)
}
cron_trigger = self.client().cron_triggers.create(**args)
cron_trigger = self.client().cron_triggers.create(name, identifier,
**args)
self.resource_id_set(cron_trigger.name)
def _resolve_attribute(self, name):

View File

@ -76,12 +76,12 @@ class MistralCronTriggerTest(common.HeatTestCase):
ct = self._create_resource('trigger', self.rsrc_defn, self.stack)
expected_state = (ct.CREATE, ct.COMPLETE)
self.assertEqual(expected_state, ct.state)
args = self.client.cron_triggers.create.call_args[1]
self.assertEqual('* * 0 * *', args['pattern'])
self.assertEqual('get_first_glance_image', args['workflow_name'])
self.assertEqual({}, args['workflow_input'])
self.assertEqual('2015-04-08 06:20', args['first_time'])
self.assertEqual(3, args['count'])
args, kwargs = self.client.cron_triggers.create.call_args
self.assertEqual('* * 0 * *', kwargs['pattern'])
self.assertEqual('get_first_glance_image', args[1])
self.assertEqual({}, kwargs['workflow_input'])
self.assertEqual('2015-04-08 06:20', kwargs['first_time'])
self.assertEqual(3, kwargs['count'])
self.assertEqual('my_cron_trigger', ct.resource_id)
def test_attributes(self):