Small fixes in openstack-actions

* OpenStackAction.client_method -> OpenStackAction.client_method_name
 * Added test where we can see how parameters are passed from the DSL to
   Action instance

Change-Id: Iaa5712f913a3c1688cf7f60f3ac4faab49642fe0
This commit is contained in:
Nikolay Mahotkin 2014-08-12 12:15:20 +04:00
parent 4e71b1a69f
commit 5f7a32ef47
9 changed files with 40 additions and 14 deletions

View File

@ -45,8 +45,8 @@ class OpenStackActionGenerator(action_generator.ActionGenerator):
if not method_name:
return None
action_class = type(str(method_name), (cls.base_action_class,), {})
setattr(action_class, 'client_method', method_name)
action_class = type(str(method_name), (cls.base_action_class,),
{'client_method_name': method_name})
return action_class

View File

@ -26,7 +26,7 @@ class OpenStackAction(base.Action):
"""
_kwargs_for_run = {}
_client_class = None
client_method = None
client_method_name = None
def __init__(self, **kwargs):
self._kwargs_for_run = kwargs
@ -42,7 +42,7 @@ class OpenStackAction(base.Action):
pass
def _get_client_method(self):
hierarchy_list = self.client_method.split('.')
hierarchy_list = self.client_method_name.split('.')
attribute = self._get_client()
for attr in hierarchy_list:
attribute = getattr(attribute, attr)

View File

@ -1,4 +1,7 @@
Workflow:
tasks:
nova_server_list:
action: nova.servers_list
nova_server_findall:
action: nova.servers_findall
parameters:
status: ACTIVE
tenant_id: 8e44eb2ce32

View File

@ -29,4 +29,4 @@ class GlanceGeneratorTest(base.BaseTestCase):
self.assertIsNotNone(generator)
self.assertIn(short_action_name, action_classes)
self.assertTrue(issubclass(action_class, actions.GlanceAction))
self.assertEqual("images.list", action_class.client_method)
self.assertEqual("images.list", action_class.client_method_name)

View File

@ -29,3 +29,4 @@ class HeatGeneratorTest(base.BaseTestCase):
self.assertIsNotNone(generator)
self.assertIn(short_action_name, action_classes)
self.assertTrue(issubclass(action_class, actions.HeatAction))
self.assertEqual("stacks.list", action_class.client_method_name)

View File

@ -29,4 +29,4 @@ class KeystoneGeneratorTest(base.BaseTestCase):
self.assertIsNotNone(generator)
self.assertIn(short_action_name, action_classes)
self.assertTrue(issubclass(action_class, actions.KeystoneAction))
self.assertEqual("users.create", action_class.client_method)
self.assertEqual("users.create", action_class.client_method_name)

View File

@ -29,4 +29,4 @@ class NovaGeneratorTest(base.BaseTestCase):
self.assertIsNotNone(generator)
self.assertIn(short_action_name, action_classes)
self.assertTrue(issubclass(action_class, actions.NovaAction))
self.assertEqual("servers.get", action_class.client_method)
self.assertEqual("servers.get", action_class.client_method_name)

View File

@ -23,7 +23,7 @@ class OpenStackActionTest(base.BaseTestCase):
def test_nova_action(self, mocked):
method_name = "servers.get"
action_class = actions.NovaAction
action_class.client_method = method_name
action_class.client_method_name = method_name
params = {'server': '1234-abcd'}
action = action_class(**params)
action.run()
@ -35,7 +35,7 @@ class OpenStackActionTest(base.BaseTestCase):
def test_glance_action(self, mocked):
method_name = "images.delete"
action_class = actions.GlanceAction
action_class.client_method = method_name
action_class.client_method_name = method_name
params = {'image': '1234-abcd'}
action = action_class(**params)
action.run()
@ -47,7 +47,7 @@ class OpenStackActionTest(base.BaseTestCase):
def test_keystone_action(self, mocked):
method_name = "users.get"
action_class = actions.KeystoneAction
action_class.client_method = method_name
action_class.client_method_name = method_name
params = {'user': '1234-abcd'}
action = action_class(**params)
action.run()
@ -59,7 +59,7 @@ class OpenStackActionTest(base.BaseTestCase):
def test_heat_action(self, mocked):
method_name = "stacks.get"
action_class = actions.HeatAction
action_class.client_method = method_name
action_class.client_method_name = method_name
params = {'id': '1234-abcd'}
action = action_class(**params)
action.run()

View File

@ -16,9 +16,11 @@ import mock
from oslo.config import cfg
from mistral.actions.openstack import actions
from mistral import context as auth_context
from mistral.db import api as db_api
from mistral import engine
from mistral.engine.drivers.default import engine as concrete_engine
from mistral.engine.drivers.default import executor
from mistral.engine import states
from mistral.openstack.common import log as logging
from mistral.tests import base
@ -100,14 +102,34 @@ class OpenStackActionsEngineTest(base.EngineTestCase):
@mock.patch.object(actions.NovaAction, 'run',
mock.Mock(return_value="servers"))
@mock.patch.object(executor.DefaultExecutor, "handle_task",
mock.MagicMock())
def test_nova_action(self):
context = {}
wb = create_workbook('openstack_tasks/nova.yaml')
task_name = 'nova_server_list'
task_name = 'nova_server_findall'
task_params = {'status': 'ACTIVE', 'tenant_id': '8e44eb2ce32'}
execution = self.engine.start_workflow_execution(wb['name'],
task_name,
context)
tasks = db_api.tasks_get(workbook_name=wb['name'],
execution_id=execution['id'])
self.assertEqual(1, len(tasks))
task = self._assert_single_item(tasks, name=task_name)
executor.DefaultExecutor.handle_task.assert_called_once_with(
auth_context.ctx(),
params=task_params,
task_id=task['id'],
action_name="nova.servers_findall"
)
self.engine.convey_task_result(task['id'],
states.SUCCESS,
"servers")
# We have to reread execution to get its latest version.
execution = db_api.execution_get(execution['id'])