From 4d480d5ccf5860ca692d3a6311ce296dc304096e Mon Sep 17 00:00:00 2001 From: chenke Date: Thu, 25 Apr 2019 19:20:31 +0800 Subject: [PATCH] Put the method add_migration() in base.py Change-Id: I00bc03be6a59edf117b66388305486d8f74f77ce --- .../strategy/strategies/base.py | 14 ++++++++++++++ .../strategies/basic_consolidation.py | 19 +++---------------- .../strategies/workload_stabilization.py | 19 +++---------------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/watcher/decision_engine/strategy/strategies/base.py b/watcher/decision_engine/strategy/strategies/base.py index 7eeaefb2b..f01531675 100755 --- a/watcher/decision_engine/strategy/strategies/base.py +++ b/watcher/decision_engine/strategy/strategies/base.py @@ -131,6 +131,8 @@ class BaseStrategy(loadable.Loadable): DATASOURCE_METRICS = [] + MIGRATION = "migrate" + def __init__(self, config, osc=None): """Constructor: the signature should be identical within the subclasses @@ -421,6 +423,18 @@ class BaseStrategy(loadable.Loadable): instances_to_migrate.append(instance) return instances_to_migrate + def add_action_migrate(self, + instance, + migration_type, + source_node, + destination_node): + parameters = {'migration_type': migration_type, + 'source_node': source_node.uuid, + 'destination_node': destination_node.uuid} + self.solution.add_action(action_type=self.MIGRATION, + resource_id=instance.uuid, + input_parameters=parameters) + @six.add_metaclass(abc.ABCMeta) class DummyBaseStrategy(BaseStrategy): diff --git a/watcher/decision_engine/strategy/strategies/basic_consolidation.py b/watcher/decision_engine/strategy/strategies/basic_consolidation.py index 0b4669658..d53b0ccd5 100644 --- a/watcher/decision_engine/strategy/strategies/basic_consolidation.py +++ b/watcher/decision_engine/strategy/strategies/basic_consolidation.py @@ -65,7 +65,6 @@ class BasicConsolidation(base.ServerConsolidationBaseStrategy): instance_cpu_usage='cpu_util'), ) - MIGRATION = "migrate" CHANGE_NOVA_SERVICE_STATE = "change_nova_service_state" def __init__(self, config, osc=None): @@ -341,18 +340,6 @@ class BasicConsolidation(base.ServerConsolidationBaseStrategy): resource_id=resource_id, input_parameters=parameters) - def add_migration(self, - resource_id, - migration_type, - source_node, - destination_node): - parameters = {'migration_type': migration_type, - 'source_node': source_node, - 'destination_node': destination_node} - self.solution.add_action(action_type=self.MIGRATION, - resource_id=resource_id, - input_parameters=parameters) - def compute_score_of_nodes(self): """Calculate score of nodes based on load by VMs""" score = [] @@ -387,9 +374,9 @@ class BasicConsolidation(base.ServerConsolidationBaseStrategy): """Create migration VM""" if self.compute_model.migrate_instance( mig_instance, mig_source_node, mig_destination_node): - self.add_migration(mig_instance.uuid, 'live', - mig_source_node.uuid, - mig_destination_node.uuid) + self.add_action_migrate(mig_instance, 'live', + mig_source_node, + mig_destination_node) if len(self.compute_model.get_node_instances(mig_source_node)) == 0: self.add_action_disable_node(mig_source_node.uuid) diff --git a/watcher/decision_engine/strategy/strategies/workload_stabilization.py b/watcher/decision_engine/strategy/strategies/workload_stabilization.py index b0f8e3456..c46d222fa 100644 --- a/watcher/decision_engine/strategy/strategies/workload_stabilization.py +++ b/watcher/decision_engine/strategy/strategies/workload_stabilization.py @@ -58,7 +58,6 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy): It assumes that live migrations are possible in your cluster. """ - MIGRATION = "migrate" MEMOIZE = _set_memoize(CONF) DATASOURCE_METRICS = ['host_cpu_usage', 'instance_cpu_usage', @@ -474,26 +473,14 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy): self.sd_before_audit = metric_sd return self.simulate_migrations(hosts_load) - def add_migration(self, - resource_id, - migration_type, - source_node, - destination_node): - parameters = {'migration_type': migration_type, - 'source_node': source_node, - 'destination_node': destination_node} - self.solution.add_action(action_type=self.MIGRATION, - resource_id=resource_id, - input_parameters=parameters) - def create_migration_instance(self, mig_instance, mig_source_node, mig_destination_node): """Create migration VM""" if self.compute_model.migrate_instance( mig_instance, mig_source_node, mig_destination_node): - self.add_migration(mig_instance.uuid, 'live', - mig_source_node.uuid, - mig_destination_node.uuid) + self.add_action_migrate(mig_instance, 'live', + mig_source_node, + mig_destination_node) self.instance_migrations_count += 1 def migrate(self, instance_uuid, src_host, dst_host):