From 1cf4e1527699777aea5a8a76d8685ab975fd450b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Fran=C3=A7oise?= Date: Wed, 2 Dec 2015 11:04:07 +0100 Subject: [PATCH] Added priority level to Nop action Change-Id: I166e9cc80b1d9e326c9d65b47e38da26dffb5004 Closes-Bug: #1521898 --- watcher/decision_engine/planner/default.py | 9 +++--- .../decision_engine/test_default_planner.py | 28 ++++++++++++++++++- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/watcher/decision_engine/planner/default.py b/watcher/decision_engine/planner/default.py index b1ebb7eaa..0c6300599 100644 --- a/watcher/decision_engine/planner/default.py +++ b/watcher/decision_engine/planner/default.py @@ -49,10 +49,11 @@ class Primitives(Enum): priority_primitives = { - Primitives.HYPERVISOR_STATE.value: 0, - Primitives.LIVE_MIGRATE.value: 1, - Primitives.COLD_MIGRATE.value: 2, - Primitives.POWER_STATE.value: 3 + Primitives.NOP.value: 0, + Primitives.HYPERVISOR_STATE.value: 1, + Primitives.LIVE_MIGRATE.value: 2, + Primitives.COLD_MIGRATE.value: 3, + Primitives.POWER_STATE.value: 4, } diff --git a/watcher/tests/decision_engine/test_default_planner.py b/watcher/tests/decision_engine/test_default_planner.py index 8bc6fef3e..41ab7a2b9 100644 --- a/watcher/tests/decision_engine/test_default_planner.py +++ b/watcher/tests/decision_engine/test_default_planner.py @@ -19,7 +19,9 @@ from mock import MagicMock from watcher.common.exception import MetaActionNotFound from watcher.common import utils from watcher.db import api as db_api +from watcher.decision_engine.meta_action.base import MetaAction from watcher.decision_engine.planner.default import DefaultPlanner +from watcher.decision_engine.solution.default import DefaultSolution from watcher.decision_engine.strategy.basic_consolidation import \ BasicConsolidation @@ -56,11 +58,35 @@ class SolutionFakerSingleHyp(object): current_state_cluster.generate_scenario_4_with_2_hypervisors()) +class TestActionScheduling(base.DbTestCase): + + scenarios = [ + (str(action_cls), {"fake_action": mock.Mock(spec=action_cls)}) + for action_cls in MetaAction.__subclasses__() + ] + + def test_schedule_actions(self): + default_planner = DefaultPlanner() + audit = db_utils.create_test_audit(uuid=utils.generate_uuid()) + dummy_solution = DefaultSolution() + dummy_solution.add_change_request(self.fake_action) + + with mock.patch.object( + DefaultPlanner, "create_action", + wraps=default_planner.create_action) as m_create_action: + action_plan = default_planner.schedule( + self.context, audit.id, dummy_solution + ) + + self.assertIsNotNone(action_plan.uuid) + self.assertEqual(m_create_action.call_count, 1) + + class TestDefaultPlanner(base.DbTestCase): - default_planner = DefaultPlanner() def setUp(self): super(TestDefaultPlanner, self).setUp() + self.default_planner = DefaultPlanner() obj_utils.create_test_audit_template(self.context) p = mock.patch.object(db_api.Connection, 'create_action_plan')