From b4a02a6d31b8c647b0b029d9141124f77a3b6eb4 Mon Sep 17 00:00:00 2001
From: licanwei
Date: Thu, 22 Aug 2019 23:27:14 -0700
Subject: [PATCH] add audit parameter to do_execute
The new bp need to get audit type from audit,
so we need to add an audit parameter to do_execute
Partially Implements: blueprint node-resource-consolidation
Change-Id: Ia979781b32202c1821aa1cb91d24253fe6d7bd2d
---
watcher/decision_engine/strategy/context/default.py | 2 +-
.../decision_engine/strategy/strategies/actuation.py | 2 +-
watcher/decision_engine/strategy/strategies/base.py | 11 ++++++++---
.../strategy/strategies/basic_consolidation.py | 2 +-
.../strategy/strategies/dummy_strategy.py | 2 +-
.../strategy/strategies/dummy_with_resize.py | 2 +-
.../strategy/strategies/dummy_with_scorer.py | 2 +-
.../strategy/strategies/host_maintenance.py | 2 +-
.../strategy/strategies/noisy_neighbor.py | 2 +-
.../strategy/strategies/outlet_temp_control.py | 2 +-
.../strategy/strategies/saving_energy.py | 2 +-
.../strategy/strategies/uniform_airflow.py | 2 +-
.../strategy/strategies/vm_workload_consolidation.py | 2 +-
.../strategy/strategies/workload_balance.py | 2 +-
.../strategy/strategies/workload_stabilization.py | 2 +-
.../strategy/strategies/zone_migration.py | 2 +-
16 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/watcher/decision_engine/strategy/context/default.py b/watcher/decision_engine/strategy/context/default.py
index e0b56ba33..25791b371 100644
--- a/watcher/decision_engine/strategy/context/default.py
+++ b/watcher/decision_engine/strategy/context/default.py
@@ -65,4 +65,4 @@ class DefaultStrategyContext(base.StrategyContext):
name: value for name, value in audit.parameters.items()
})
- return selected_strategy.execute()
+ return selected_strategy.execute(audit=audit)
diff --git a/watcher/decision_engine/strategy/strategies/actuation.py b/watcher/decision_engine/strategy/strategies/actuation.py
index 3d88e34c9..8501dd8b7 100644
--- a/watcher/decision_engine/strategy/strategies/actuation.py
+++ b/watcher/decision_engine/strategy/strategies/actuation.py
@@ -93,7 +93,7 @@ class Actuator(base.UnclassifiedStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
for action in self.actions:
self.solution.add_action(**action)
diff --git a/watcher/decision_engine/strategy/strategies/base.py b/watcher/decision_engine/strategy/strategies/base.py
index d6ff53a84..2d820e849 100755
--- a/watcher/decision_engine/strategy/strategies/base.py
+++ b/watcher/decision_engine/strategy/strategies/base.py
@@ -223,9 +223,12 @@ class BaseStrategy(loadable.Loadable):
raise NotImplementedError()
@abc.abstractmethod
- def do_execute(self):
+ def do_execute(self, audit=None):
"""Strategy execution phase
+ :param audit: An Audit instance
+ :type audit: :py:class:`~.Audit` instance
+
This phase is where you should put the main logic of your strategy.
"""
raise NotImplementedError()
@@ -255,14 +258,16 @@ class BaseStrategy(loadable.Loadable):
LOG.debug(self.compute_model.to_string())
- def execute(self):
+ def execute(self, audit=None):
"""Execute a strategy
+ :param audit: An Audit instance
+ :type audit: :py:class:`~.Audit` instance
:return: A computed solution (via a placement algorithm)
:rtype: :py:class:`~.BaseSolution` instance
"""
self.pre_execute()
- self.do_execute()
+ self.do_execute(audit=audit)
self.post_execute()
self.solution.compute_global_efficacy()
diff --git a/watcher/decision_engine/strategy/strategies/basic_consolidation.py b/watcher/decision_engine/strategy/strategies/basic_consolidation.py
index 6f1eb2578..05a2d9975 100644
--- a/watcher/decision_engine/strategy/strategies/basic_consolidation.py
+++ b/watcher/decision_engine/strategy/strategies/basic_consolidation.py
@@ -413,7 +413,7 @@ class BasicConsolidation(base.ServerConsolidationBaseStrategy):
self.aggregation_method['compute_node'] = \
self.aggregation_method['node']
- def do_execute(self):
+ def do_execute(self, audit=None):
unsuccessful_migration = 0
scores = self.compute_score_of_nodes()
diff --git a/watcher/decision_engine/strategy/strategies/dummy_strategy.py b/watcher/decision_engine/strategy/strategies/dummy_strategy.py
index 6dbc5f008..9b1a9d73f 100644
--- a/watcher/decision_engine/strategy/strategies/dummy_strategy.py
+++ b/watcher/decision_engine/strategy/strategies/dummy_strategy.py
@@ -51,7 +51,7 @@ class DummyStrategy(base.DummyBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
para1 = self.input_parameters.para1
para2 = self.input_parameters.para2
LOG.debug("Executing Dummy strategy with para1=%(p1)f, para2=%(p2)s",
diff --git a/watcher/decision_engine/strategy/strategies/dummy_with_resize.py b/watcher/decision_engine/strategy/strategies/dummy_with_resize.py
index 6c1f0c00b..1a10d5c5b 100644
--- a/watcher/decision_engine/strategy/strategies/dummy_with_resize.py
+++ b/watcher/decision_engine/strategy/strategies/dummy_with_resize.py
@@ -48,7 +48,7 @@ class DummyWithResize(base.DummyBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
para1 = self.input_parameters.para1
para2 = self.input_parameters.para2
LOG.debug("Executing Dummy strategy with para1=%(p1)f, para2=%(p2)s",
diff --git a/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py b/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py
index 6328a9ea9..728229445 100644
--- a/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py
+++ b/watcher/decision_engine/strategy/strategies/dummy_with_scorer.py
@@ -78,7 +78,7 @@ class DummyWithScorer(base.DummyBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
# Simple "hello world" from strategy
param1 = self.input_parameters.param1
param2 = self.input_parameters.param2
diff --git a/watcher/decision_engine/strategy/strategies/host_maintenance.py b/watcher/decision_engine/strategy/strategies/host_maintenance.py
index 5e5479cfb..4fc1ae1d8 100644
--- a/watcher/decision_engine/strategy/strategies/host_maintenance.py
+++ b/watcher/decision_engine/strategy/strategies/host_maintenance.py
@@ -297,7 +297,7 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
LOG.info(_('Executing Host Maintenance Migration Strategy'))
maintenance_node = self.input_parameters.get('maintenance_node')
diff --git a/watcher/decision_engine/strategy/strategies/noisy_neighbor.py b/watcher/decision_engine/strategy/strategies/noisy_neighbor.py
index 0ed1b7516..315fec726 100644
--- a/watcher/decision_engine/strategy/strategies/noisy_neighbor.py
+++ b/watcher/decision_engine/strategy/strategies/noisy_neighbor.py
@@ -241,7 +241,7 @@ class NoisyNeighbor(base.NoisyNeighborBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
self.cache_threshold = self.input_parameters.cache_threshold
self.period = self.input_parameters.period
diff --git a/watcher/decision_engine/strategy/strategies/outlet_temp_control.py b/watcher/decision_engine/strategy/strategies/outlet_temp_control.py
index 536546047..d1362747e 100644
--- a/watcher/decision_engine/strategy/strategies/outlet_temp_control.py
+++ b/watcher/decision_engine/strategy/strategies/outlet_temp_control.py
@@ -241,7 +241,7 @@ class OutletTempControl(base.ThermalOptimizationBaseStrategy):
LOG.info("Outlet temperature strategy threshold=%d",
self.threshold)
- def do_execute(self):
+ def do_execute(self, audit=None):
hosts_need_release, hosts_target = self.group_hosts_by_outlet_temp()
if len(hosts_need_release) == 0:
diff --git a/watcher/decision_engine/strategy/strategies/saving_energy.py b/watcher/decision_engine/strategy/strategies/saving_energy.py
index 9ae2b2eed..476d2dfb4 100644
--- a/watcher/decision_engine/strategy/strategies/saving_energy.py
+++ b/watcher/decision_engine/strategy/strategies/saving_energy.py
@@ -219,7 +219,7 @@ class SavingEnergy(base.SavingEnergyBaseStrategy):
self.free_used_percent = self.input_parameters.free_used_percent
self.min_free_hosts_num = self.input_parameters.min_free_hosts_num
- def do_execute(self):
+ def do_execute(self, audit=None):
"""Strategy execution phase
This phase is where you should put the main logic of your strategy.
diff --git a/watcher/decision_engine/strategy/strategies/uniform_airflow.py b/watcher/decision_engine/strategy/strategies/uniform_airflow.py
index e0b0e2a64..088fda312 100644
--- a/watcher/decision_engine/strategy/strategies/uniform_airflow.py
+++ b/watcher/decision_engine/strategy/strategies/uniform_airflow.py
@@ -280,7 +280,7 @@ class UniformAirflow(base.BaseStrategy):
self.threshold_power = self.input_parameters.threshold_power
self._period = self.input_parameters.period
- def do_execute(self):
+ def do_execute(self, audit=None):
source_nodes, target_nodes = self.group_hosts_by_airflow()
if not source_nodes:
diff --git a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
index 01e3b5de9..7ee541c59 100644
--- a/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
+++ b/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py
@@ -518,7 +518,7 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
def pre_execute(self):
self._pre_execute()
- def do_execute(self):
+ def do_execute(self, audit=None):
"""Execute strategy.
This strategy produces a solution resulting in more
diff --git a/watcher/decision_engine/strategy/strategies/workload_balance.py b/watcher/decision_engine/strategy/strategies/workload_balance.py
index f54792f4c..532952498 100644
--- a/watcher/decision_engine/strategy/strategies/workload_balance.py
+++ b/watcher/decision_engine/strategy/strategies/workload_balance.py
@@ -295,7 +295,7 @@ class WorkloadBalance(base.WorkloadStabilizationBaseStrategy):
self._meter = self.input_parameters.metrics
self._granularity = self.input_parameters.granularity
- def do_execute(self):
+ def do_execute(self, audit=None):
"""Strategy execution phase
This phase is where you should put the main logic of your strategy.
diff --git a/watcher/decision_engine/strategy/strategies/workload_stabilization.py b/watcher/decision_engine/strategy/strategies/workload_stabilization.py
index 8e6804cd2..f1c4e89ec 100644
--- a/watcher/decision_engine/strategy/strategies/workload_stabilization.py
+++ b/watcher/decision_engine/strategy/strategies/workload_stabilization.py
@@ -519,7 +519,7 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
'will be removed in next release.')
self.periods['compute_node'] = self.periods['node']
- def do_execute(self):
+ def do_execute(self, audit=None):
migration = self.check_threshold()
if migration:
hosts_load = self.get_hosts_load()
diff --git a/watcher/decision_engine/strategy/strategies/zone_migration.py b/watcher/decision_engine/strategy/strategies/zone_migration.py
index 27850e056..dc51fd225 100644
--- a/watcher/decision_engine/strategy/strategies/zone_migration.py
+++ b/watcher/decision_engine/strategy/strategies/zone_migration.py
@@ -269,7 +269,7 @@ class ZoneMigration(base.ZoneMigrationBaseStrategy):
self._pre_execute()
LOG.debug(self.storage_model.to_string())
- def do_execute(self):
+ def do_execute(self, audit=None):
"""Strategy execution phase
"""