Fix bug with action class attributes

* Need to write an integration test for it.

Closes-Bug: #1448403

Change-Id: I7f477f6c87b21ff0f8c9a31ae72086830c7fa9b4
(cherry picked from commit f8d2d5c164)
This commit is contained in:
Nikolay Mahotkin 2015-04-27 15:18:06 +03:00 committed by Renat Akhmerov
parent fd052ec04b
commit 16eeb9f099
2 changed files with 25 additions and 15 deletions

View File

@ -19,7 +19,10 @@ def construct_action_class(action_class_str, attributes):
# Rebuild action class and restore attributes.
action_class = importutils.import_class(action_class_str)
for name, value in attributes.items():
setattr(action_class, name, value)
unique_action_class = type(
action_class.__name__,
(action_class,),
attributes
)
return action_class
return unique_action_class

View File

@ -23,7 +23,7 @@ from mistral.tests import base
LOG = logging.getLogger(__name__)
class ActionFactoryTest(base.DbTestCase):
class ActionManagerTest(base.DbTestCase):
def test_register_standard_actions(self):
action_list = a_m.get_registered_actions()
@ -44,17 +44,24 @@ class ActionFactoryTest(base.DbTestCase):
self._assert_single_item(action_list, name="glance.images_delete")
def test_get_action_class(self):
self.assertEqual(std.EchoAction, a_m.get_action_class("std.echo"))
self.assertEqual(std.HTTPAction, a_m.get_action_class("std.http"))
self.assertEqual(
std.MistralHTTPAction,
a_m.get_action_class("std.mistral_http")
self.assertTrue(
issubclass(a_m.get_action_class("std.echo"), std.EchoAction)
)
self.assertEqual(
std.SendEmailAction,
a_m.get_action_class("std.email")
self.assertTrue(
issubclass(a_m.get_action_class("std.http"), std.HTTPAction)
)
self.assertEqual(
std.JavaScriptAction,
a_m.get_action_class("std.javascript")
self.assertTrue(
issubclass(
a_m.get_action_class("std.mistral_http"),
std.MistralHTTPAction
)
)
self.assertTrue(
issubclass(a_m.get_action_class("std.email"), std.SendEmailAction)
)
self.assertTrue(
issubclass(
a_m.get_action_class("std.javascript"),
std.JavaScriptAction
)
)