From 54d9e12e5b3880f23bf51c77f968d9352b45f89a Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Thu, 6 Apr 2017 15:16:31 -0400 Subject: [PATCH] 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 (cherry picked from commit f682e7afed80ea0bcd19f42644a64a0b750f3eac) --- .../resources/openstack/mistral/cron_trigger.py | 10 ++++++---- heat/tests/openstack/mistral/test_cron_trigger.py | 12 ++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/heat/engine/resources/openstack/mistral/cron_trigger.py b/heat/engine/resources/openstack/mistral/cron_trigger.py index 67bcb387c..2f541a210 100644 --- a/heat/engine/resources/openstack/mistral/cron_trigger.py +++ b/heat/engine/resources/openstack/mistral/cron_trigger.py @@ -73,7 +73,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') @@ -122,16 +122,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): diff --git a/heat/tests/openstack/mistral/test_cron_trigger.py b/heat/tests/openstack/mistral/test_cron_trigger.py index 6519e47fd..5d78ff74c 100644 --- a/heat/tests/openstack/mistral/test_cron_trigger.py +++ b/heat/tests/openstack/mistral/test_cron_trigger.py @@ -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):