diff --git a/watcher/applier/actions/base.py b/watcher/applier/actions/base.py index 2f6adff5d..63e7031da 100644 --- a/watcher/applier/actions/base.py +++ b/watcher/applier/actions/base.py @@ -15,8 +15,6 @@ # implied. # See the License for the specific language governing permissions and # limitations under the License. -# - import abc @@ -28,7 +26,7 @@ from watcher.common.loader import loadable @six.add_metaclass(abc.ABCMeta) class BaseAction(loadable.Loadable): - # NOTE(jed) by convention we decided + # NOTE(jed): by convention we decided # that the attribute "resource_id" is the unique id of # the resource to which the Action applies to allow us to use it in the # watcher dashboard and will be nested in input_parameters @@ -99,7 +97,7 @@ class BaseAction(loadable.Loadable): raise NotImplementedError() @abc.abstractmethod - def precondition(self): + def pre_condition(self): """Hook: called before the execution of an action This method can be used to perform some initializations or to make @@ -110,7 +108,7 @@ class BaseAction(loadable.Loadable): raise NotImplementedError() @abc.abstractmethod - def postcondition(self): + def post_condition(self): """Hook: called after the execution of an action This function is called regardless of whether an action succeded or diff --git a/watcher/applier/actions/change_nova_service_state.py b/watcher/applier/actions/change_nova_service_state.py index 6691e7976..50017c156 100644 --- a/watcher/applier/actions/change_nova_service_state.py +++ b/watcher/applier/actions/change_nova_service_state.py @@ -16,6 +16,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # + import six import voluptuous @@ -95,8 +96,8 @@ class ChangeNovaServiceState(base.BaseAction): else: return nova.disable_service_nova_compute(self.host) - def precondition(self): + def pre_condition(self): pass - def postcondition(self): + def post_condition(self): pass diff --git a/watcher/applier/actions/migration.py b/watcher/applier/actions/migration.py index 5d268aacd..e3525d97b 100644 --- a/watcher/applier/actions/migration.py +++ b/watcher/applier/actions/migration.py @@ -66,8 +66,8 @@ class Migrate(base.BaseAction): if (value is not None and len(value) > 0 and not utils.is_uuid_like(value)): - raise voluptuous.Invalid(_("The parameter" - " resource_id is invalid.")) + raise voluptuous.Invalid(_("The parameter " + "resource_id is invalid.")) @property def schema(self): @@ -116,11 +116,11 @@ class Migrate(base.BaseAction): dest_hostname=destination, block_migration=True) else: - LOG.debug("Nova client exception occured while live migrating " - "instance %s.Exception: %s" % + LOG.debug("Nova client exception occurred while live " + "migrating instance %s.Exception: %s" % (self.instance_uuid, e)) except Exception: - LOG.critical(_LC("Unexpected error occured. Migration failed for" + LOG.critical(_LC("Unexpected error occurred. Migration failed for " "instance %s. Leaving instance on previous " "host."), self.instance_uuid) @@ -134,7 +134,7 @@ class Migrate(base.BaseAction): dest_hostname=destination) except Exception as exc: LOG.exception(exc) - LOG.critical(_LC("Unexpected error occured. Migration failed for" + LOG.critical(_LC("Unexpected error occurred. Migration failed for " "instance %s. Leaving instance on previous " "host."), self.instance_uuid) @@ -152,8 +152,8 @@ class Migrate(base.BaseAction): return self._cold_migrate_instance(nova, destination) else: raise exception.Invalid( - message=(_('Migration of type %(migration_type)s is not ' - 'supported.') % + message=(_("Migration of type '%(migration_type)s' is not " + "supported.") % {'migration_type': self.migration_type})) else: raise exception.InstanceNotFound(name=self.instance_uuid) @@ -164,11 +164,11 @@ class Migrate(base.BaseAction): def revert(self): return self.migrate(destination=self.source_node) - def precondition(self): - # todo(jed) check if the instance exist/ check if the instance is on + def pre_condition(self): + # TODO(jed): check if the instance exists / check if the instance is on # the source_node pass - def postcondition(self): - # todo(jed) we can image to check extra parameters (nework reponse,ect) + def post_condition(self): + # TODO(jed): check extra parameters (network response, etc.) pass diff --git a/watcher/applier/actions/nop.py b/watcher/applier/actions/nop.py index cab6b5289..59ad241f1 100644 --- a/watcher/applier/actions/nop.py +++ b/watcher/applier/actions/nop.py @@ -53,15 +53,15 @@ class Nop(base.BaseAction): return self.input_parameters.get(self.MESSAGE) def execute(self): - LOG.debug("executing action NOP message:%s ", self.message) + LOG.debug("Executing action NOP message: %s ", self.message) return True def revert(self): - LOG.debug("revert action NOP") + LOG.debug("Revert action NOP") return True - def precondition(self): + def pre_condition(self): pass - def postcondition(self): + def post_condition(self): pass diff --git a/watcher/applier/actions/sleep.py b/watcher/applier/actions/sleep.py index 99d90555a..abb83eab4 100644 --- a/watcher/applier/actions/sleep.py +++ b/watcher/applier/actions/sleep.py @@ -16,8 +16,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -import time +import time from oslo_log import log import voluptuous @@ -53,16 +53,16 @@ class Sleep(base.BaseAction): return int(self.input_parameters.get(self.DURATION)) def execute(self): - LOG.debug("Starting action Sleep duration:%s ", self.duration) + LOG.debug("Starting action sleep with duration: %s ", self.duration) time.sleep(self.duration) return True def revert(self): - LOG.debug("revert action Sleep") + LOG.debug("Revert action sleep") return True - def precondition(self): + def pre_condition(self): pass - def postcondition(self): + def post_condition(self): pass diff --git a/watcher/applier/workflow_engine/default.py b/watcher/applier/workflow_engine/default.py index a91e2723d..e89ce1e35 100644 --- a/watcher/applier/workflow_engine/default.py +++ b/watcher/applier/workflow_engine/default.py @@ -109,8 +109,8 @@ class TaskFlowActionContainer(task.Task): try: self.engine.notify(self._db_action, obj_action.State.ONGOING) - LOG.debug("Precondition action %s", self.name) - self.action.precondition() + LOG.debug("Pre-condition action: %s", self.name) + self.action.pre_condition() except Exception as e: LOG.exception(e) self.engine.notify(self._db_action, @@ -119,15 +119,15 @@ class TaskFlowActionContainer(task.Task): def execute(self, *args, **kwargs): try: - LOG.debug("Running action %s", self.name) + LOG.debug("Running action: %s", self.name) self.action.execute() self.engine.notify(self._db_action, obj_action.State.SUCCEEDED) except Exception as e: LOG.exception(e) - LOG.error(_LE('The WorkFlow Engine has failed ' - 'to execute the action %s'), self.name) + LOG.error(_LE('The workflow engine has failed ' + 'to execute the action: %s'), self.name) self.engine.notify(self._db_action, obj_action.State.FAILED) @@ -135,8 +135,8 @@ class TaskFlowActionContainer(task.Task): def post_execute(self): try: - LOG.debug("postcondition action %s", self.name) - self.action.postcondition() + LOG.debug("Post-condition action: %s", self.name) + self.action.post_condition() except Exception as e: LOG.exception(e) self.engine.notify(self._db_action, @@ -144,19 +144,19 @@ class TaskFlowActionContainer(task.Task): raise def revert(self, *args, **kwargs): - LOG.warning(_LW("Revert action %s"), self.name) + LOG.warning(_LW("Revert action: %s"), self.name) try: - # todo(jed) do we need to update the states in case of failure ? + # TODO(jed): do we need to update the states in case of failure? self.action.revert() except Exception as e: LOG.exception(e) - LOG.critical(_LC("Oops! We need disaster recover plan")) + LOG.critical(_LC("Oops! We need a disaster recover plan.")) class TaskFlowNop(task.Task): - """This class is use in case of the workflow have only one Action. + """This class is used in case of the workflow have only one Action. - We need at least two atoms to create a link + We need at least two atoms to create a link. """ def execute(self): pass diff --git a/watcher/decision_engine/goal/goals.py b/watcher/decision_engine/goal/goals.py index dc283b732..213fc1015 100644 --- a/watcher/decision_engine/goal/goals.py +++ b/watcher/decision_engine/goal/goals.py @@ -72,7 +72,7 @@ class Unclassified(base.Goal): class ServerConsolidation(base.Goal): - """Server Consolidation + """ServerConsolidation This goal is for efficient usage of compute server resources in order to reduce the total number of servers. @@ -84,11 +84,11 @@ class ServerConsolidation(base.Goal): @classmethod def get_display_name(cls): - return _("Server consolidation") + return _("Server Consolidation") @classmethod def get_translatable_display_name(cls): - return "Server consolidation" + return "Server Consolidation" @classmethod def get_efficacy_specification(cls): @@ -97,7 +97,7 @@ class ServerConsolidation(base.Goal): class ThermalOptimization(base.Goal): - """Thermal Optimization + """ThermalOptimization This goal is used to balance the temperature across different servers. """ @@ -108,11 +108,11 @@ class ThermalOptimization(base.Goal): @classmethod def get_display_name(cls): - return _("Thermal optimization") + return _("Thermal Optimization") @classmethod def get_translatable_display_name(cls): - return "Thermal optimization" + return "Thermal Optimization" @classmethod def get_efficacy_specification(cls): @@ -121,7 +121,7 @@ class ThermalOptimization(base.Goal): class WorkloadBalancing(base.Goal): - """Workload Balancing + """WorkloadBalancing This goal is used to evenly distribute workloads across different servers. """ @@ -132,11 +132,11 @@ class WorkloadBalancing(base.Goal): @classmethod def get_display_name(cls): - return _("Workload balancing") + return _("Workload Balancing") @classmethod def get_translatable_display_name(cls): - return "Workload balancing" + return "Workload Balancing" @classmethod def get_efficacy_specification(cls): @@ -145,9 +145,9 @@ class WorkloadBalancing(base.Goal): class AirflowOptimization(base.Goal): - """Workload Balancing + """AirflowOptimization - This goal is used to optimize the air flow within a cloud infrastructure. + This goal is used to optimize the airflow within a cloud infrastructure. """ @classmethod @@ -156,11 +156,11 @@ class AirflowOptimization(base.Goal): @classmethod def get_display_name(cls): - return _("Airflow optimization") + return _("Airflow Optimization") @classmethod def get_translatable_display_name(cls): - return "Airflow optimization" + return "Airflow Optimization" @classmethod def get_efficacy_specification(cls): diff --git a/watcher/decision_engine/planner/default.py b/watcher/decision_engine/planner/default.py index a4e6e677c..a645f710b 100644 --- a/watcher/decision_engine/planner/default.py +++ b/watcher/decision_engine/planner/default.py @@ -67,10 +67,11 @@ class DefaultPlanner(base.BasePlanner): 'state': objects.action.State.PENDING, 'next': None, } + return action def schedule(self, context, audit_id, solution): - LOG.debug('Create an action plan for the audit uuid: %s ', audit_id) + LOG.debug('Creating an action plan for the audit uuid: %s', audit_id) priorities = self.config.weights action_plan = self._create_action_plan(context, audit_id, solution) @@ -145,7 +146,7 @@ class DefaultPlanner(base.BasePlanner): def _create_action(self, context, _action, parent_action): try: - LOG.debug("Creating the %s in watcher db", + LOG.debug("Creating the %s in the Watcher database", _action.get("action_type")) new_action = objects.Action(context, **_action) diff --git a/watcher/tests/applier/actions/test_change_nova_service_state.py b/watcher/tests/applier/actions/test_change_nova_service_state.py index bda03401d..6066c6e4a 100644 --- a/watcher/tests/applier/actions/test_change_nova_service_state.py +++ b/watcher/tests/applier/actions/test_change_nova_service_state.py @@ -102,15 +102,15 @@ class TestChangeNovaServiceState(base.TestCase): sorted([([str(p) for p in e.path], type(e)) for e in exc.errors], key=lambda x: str(x[0]))) - def test_change_service_state_precondition(self): + def test_change_service_state_pre_condition(self): try: - self.action.precondition() + self.action.pre_condition() except Exception as exc: self.fail(exc) - def test_change_service_state_postcondition(self): + def test_change_service_state_post_condition(self): try: - self.action.postcondition() + self.action.post_condition() except Exception as exc: self.fail(exc) diff --git a/watcher/tests/applier/actions/test_migration.py b/watcher/tests/applier/actions/test_migration.py index 437dd187b..d064c190c 100644 --- a/watcher/tests/applier/actions/test_migration.py +++ b/watcher/tests/applier/actions/test_migration.py @@ -153,15 +153,15 @@ class TestMigration(base.TestCase): [(['resource_id'], voluptuous.Invalid)], [(e.path, type(e)) for e in exc.errors]) - def test_migration_precondition(self): + def test_migration_pre_condition(self): try: - self.action.precondition() + self.action.pre_condition() except Exception as exc: self.fail(exc) - def test_migration_postcondition(self): + def test_migration_post_condition(self): try: - self.action.postcondition() + self.action.post_condition() except Exception as exc: self.fail(exc) diff --git a/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py b/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py index e5c2bb86a..b647bb20c 100644 --- a/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py +++ b/watcher/tests/applier/workflow_engine/test_default_workflow_engine.py @@ -39,10 +39,10 @@ class FakeAction(abase.BaseAction): def schema(self): pass - def postcondition(self): + def post_condition(self): pass - def precondition(self): + def pre_condition(self): pass def revert(self):