diff --git a/watcher/api/controllers/v1/audit.py b/watcher/api/controllers/v1/audit.py index 26352ac70..5dc36539e 100644 --- a/watcher/api/controllers/v1/audit.py +++ b/watcher/api/controllers/v1/audit.py @@ -65,7 +65,7 @@ from watcher.api.controllers.v1 import types from watcher.api.controllers.v1 import utils as api_utils from watcher.common import exception from watcher.common import utils -from watcher.decision_engine.rpcapi import DecisionEngineAPI +from watcher.decision_engine import rpcapi from watcher import objects @@ -369,7 +369,7 @@ class AuditsController(rest.RestController): # trigger decision-engine to run the audit - dc_client = DecisionEngineAPI() + dc_client = rpcapi.DecisionEngineAPI() dc_client.trigger_audit(context, new_audit.uuid) return Audit.convert_with_links(new_audit) diff --git a/watcher/cmd/applier.py b/watcher/cmd/applier.py index 2e6b5cc25..0cff9c532 100644 --- a/watcher/cmd/applier.py +++ b/watcher/cmd/applier.py @@ -25,7 +25,7 @@ from oslo_config import cfg from oslo_log import log as logging from watcher import _i18n -from watcher.applier.manager import ApplierManager +from watcher.applier import manager from watcher.common import service LOG = logging.getLogger(__name__) @@ -40,6 +40,6 @@ def main(): LOG.debug("Configuration:") cfg.CONF.log_opt_values(LOG, std_logging.DEBUG) - server = ApplierManager() + server = manager.ApplierManager() server.connect() server.join() diff --git a/watcher/cmd/decisionengine.py b/watcher/cmd/decisionengine.py index f3e8c7d85..63b70aa42 100644 --- a/watcher/cmd/decisionengine.py +++ b/watcher/cmd/decisionengine.py @@ -26,7 +26,7 @@ from oslo_log import log as logging from watcher import _i18n from watcher.common import service -from watcher.decision_engine.manager import DecisionEngineManager +from watcher.decision_engine import manager LOG = logging.getLogger(__name__) @@ -41,6 +41,6 @@ def main(): LOG.debug("Configuration:") cfg.CONF.log_opt_values(LOG, std_logging.DEBUG) - server = DecisionEngineManager() + server = manager.DecisionEngineManager() server.connect() server.join() diff --git a/watcher/common/messaging/events/event_dispatcher.py b/watcher/common/messaging/events/event_dispatcher.py index 6805065e2..8382a81ec 100644 --- a/watcher/common/messaging/events/event_dispatcher.py +++ b/watcher/common/messaging/events/event_dispatcher.py @@ -16,7 +16,7 @@ from oslo_log import log -from watcher.decision_engine.messaging.events import Events +from watcher.decision_engine.messaging import events as messaging_events LOG = log.getLogger(__name__) @@ -43,8 +43,8 @@ class EventDispatcher(object): """ Dispatch an instance of Event class """ - if Events.ALL in self._events.keys(): - listeners = self._events[Events.ALL] + if messaging_events.Events.ALL in self._events.keys(): + listeners = self._events[messaging_events.Events.ALL] for listener in listeners: listener(event) diff --git a/watcher/decision_engine/messaging/audit_endpoint.py b/watcher/decision_engine/messaging/audit_endpoint.py index 09f1950bf..18fe27e02 100644 --- a/watcher/decision_engine/messaging/audit_endpoint.py +++ b/watcher/decision_engine/messaging/audit_endpoint.py @@ -16,11 +16,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # -from concurrent.futures import ThreadPoolExecutor +from concurrent import futures from oslo_log import log -from watcher.decision_engine.audit.default import DefaultAuditHandler +from watcher.decision_engine.audit import default LOG = log.getLogger(__name__) @@ -28,7 +28,7 @@ LOG = log.getLogger(__name__) class AuditEndpoint(object): def __init__(self, messaging, max_workers): self._messaging = messaging - self._executor = ThreadPoolExecutor(max_workers=max_workers) + self._executor = futures.ThreadPoolExecutor(max_workers=max_workers) @property def executor(self): @@ -39,7 +39,7 @@ class AuditEndpoint(object): return self._messaging def do_trigger_audit(self, context, audit_uuid): - audit = DefaultAuditHandler(self.messaging) + audit = default.DefaultAuditHandler(self.messaging) audit.execute(audit_uuid, context) def trigger_audit(self, context, audit_uuid): diff --git a/watcher/decision_engine/rpcapi.py b/watcher/decision_engine/rpcapi.py index 8ee5596ca..47b0124b4 100644 --- a/watcher/decision_engine/rpcapi.py +++ b/watcher/decision_engine/rpcapi.py @@ -21,8 +21,8 @@ from oslo_config import cfg from oslo_log import log from watcher.common import exception -from watcher.common.messaging.messaging_core import MessagingCore -from watcher.common.messaging.notification_handler import NotificationHandler +from watcher.common.messaging import messaging_core +from watcher.common.messaging import notification_handler from watcher.common import utils from watcher.decision_engine.manager import decision_engine_opt_group from watcher.decision_engine.manager import WATCHER_DECISION_ENGINE_OPTS @@ -35,7 +35,7 @@ CONF.register_group(decision_engine_opt_group) CONF.register_opts(WATCHER_DECISION_ENGINE_OPTS, decision_engine_opt_group) -class DecisionEngineAPI(MessagingCore): +class DecisionEngineAPI(messaging_core.MessagingCore): def __init__(self): super(DecisionEngineAPI, self).__init__( @@ -44,7 +44,8 @@ class DecisionEngineAPI(MessagingCore): CONF.watcher_decision_engine.status_topic, api_version=self.API_VERSION, ) - self.handler = NotificationHandler(self.publisher_id) + self.handler = notification_handler.NotificationHandler( + self.publisher_id) self.status_topic_handler.add_endpoint(self.handler) def trigger_audit(self, context, audit_uuid=None): diff --git a/watcher/decision_engine/strategy/common/level.py b/watcher/decision_engine/strategy/common/level.py index ea79539b4..83d95c0de 100644 --- a/watcher/decision_engine/strategy/common/level.py +++ b/watcher/decision_engine/strategy/common/level.py @@ -17,10 +17,10 @@ # limitations under the License. # -from enum import Enum +import enum -class StrategyLevel(Enum): +class StrategyLevel(enum.Enum): conservative = "conservative" balanced = "balanced" growth = "growth" diff --git a/watcher/decision_engine/strategy/context/default.py b/watcher/decision_engine/strategy/context/default.py index 5c4f8e622..3b0af6fe0 100644 --- a/watcher/decision_engine/strategy/context/default.py +++ b/watcher/decision_engine/strategy/context/default.py @@ -16,22 +16,21 @@ from oslo_log import log from watcher.common import clients -from watcher.decision_engine.strategy.context.base import BaseStrategyContext -from watcher.decision_engine.strategy.selection.default import \ - DefaultStrategySelector -from watcher.metrics_engine.cluster_model_collector.manager import \ - CollectorManager +from watcher.decision_engine.strategy.context import base +from watcher.decision_engine.strategy.selection import default +from watcher.metrics_engine.cluster_model_collector import manager + from watcher import objects LOG = log.getLogger(__name__) -class DefaultStrategyContext(BaseStrategyContext): +class DefaultStrategyContext(base.BaseStrategyContext): def __init__(self): super(DefaultStrategyContext, self).__init__() LOG.debug("Initializing Strategy Context") - self._strategy_selector = DefaultStrategySelector() - self._collector_manager = CollectorManager() + self._strategy_selector = default.DefaultStrategySelector() + self._collector_manager = manager.CollectorManager() @property def collector(self): diff --git a/watcher/decision_engine/strategy/loading/default.py b/watcher/decision_engine/strategy/loading/default.py index b1812940a..9059bf617 100644 --- a/watcher/decision_engine/strategy/loading/default.py +++ b/watcher/decision_engine/strategy/loading/default.py @@ -21,12 +21,12 @@ from __future__ import unicode_literals from oslo_log import log -from watcher.common.loader.default import DefaultLoader +from watcher.common.loader import default LOG = log.getLogger(__name__) -class DefaultStrategyLoader(DefaultLoader): +class DefaultStrategyLoader(default.DefaultLoader): def __init__(self): super(DefaultStrategyLoader, self).__init__( namespace='watcher_strategies') diff --git a/watcher/decision_engine/strategy/strategies/base.py b/watcher/decision_engine/strategy/strategies/base.py index d43e4c5b0..67e32a11b 100644 --- a/watcher/decision_engine/strategy/strategies/base.py +++ b/watcher/decision_engine/strategy/strategies/base.py @@ -38,8 +38,8 @@ from oslo_log import log import six from watcher.common import clients -from watcher.decision_engine.solution.default import DefaultSolution -from watcher.decision_engine.strategy.common.level import StrategyLevel +from watcher.decision_engine.solution import default +from watcher.decision_engine.strategy.common import level LOG = log.getLogger(__name__) @@ -57,10 +57,10 @@ class BaseStrategy(object): self._name = name self.description = description # default strategy level - self._strategy_level = StrategyLevel.conservative + self._strategy_level = level.StrategyLevel.conservative self._cluster_state_collector = None # the solution given by the strategy - self._solution = DefaultSolution() + self._solution = default.DefaultSolution() self._osc = osc @abc.abstractmethod diff --git a/watcher/decision_engine/strategy/strategies/basic_consolidation.py b/watcher/decision_engine/strategy/strategies/basic_consolidation.py index a5cbd6339..4c5053115 100644 --- a/watcher/decision_engine/strategy/strategies/basic_consolidation.py +++ b/watcher/decision_engine/strategy/strategies/basic_consolidation.py @@ -21,17 +21,17 @@ from oslo_log import log from watcher._i18n import _LE, _LI, _LW from watcher.common import exception -from watcher.decision_engine.model.hypervisor_state import HypervisorState -from watcher.decision_engine.model.resource import ResourceType -from watcher.decision_engine.model.vm_state import VMState -from watcher.decision_engine.strategy.strategies.base import BaseStrategy -from watcher.metrics_engine.cluster_history.ceilometer import \ - CeilometerClusterHistory +from watcher.decision_engine.model import hypervisor_state as hyper_state +from watcher.decision_engine.model import resource +from watcher.decision_engine.model import vm_state +from watcher.decision_engine.strategy.strategies import base +from watcher.metrics_engine.cluster_history import ceilometer as \ + ceilometer_cluster_history LOG = log.getLogger(__name__) -class BasicConsolidation(BaseStrategy): +class BasicConsolidation(base.BaseStrategy): DEFAULT_NAME = "basic" DEFAULT_DESCRIPTION = "Basic offline consolidation" @@ -104,7 +104,8 @@ class BasicConsolidation(BaseStrategy): @property def ceilometer(self): if self._ceilometer is None: - self._ceilometer = CeilometerClusterHistory(osc=self.osc) + self._ceilometer = (ceilometer_cluster_history. + CeilometerClusterHistory(osc=self.osc)) return self._ceilometer @ceilometer.setter @@ -141,9 +142,9 @@ class BasicConsolidation(BaseStrategy): total_cores = 0 total_disk = 0 total_mem = 0 - cap_cores = model.get_resource_from_id(ResourceType.cpu_cores) - cap_disk = model.get_resource_from_id(ResourceType.disk) - cap_mem = model.get_resource_from_id(ResourceType.memory) + cap_cores = model.get_resource_from_id(resource.ResourceType.cpu_cores) + cap_disk = model.get_resource_from_id(resource.ResourceType.disk) + cap_mem = model.get_resource_from_id(resource.ResourceType.memory) for vm_id in model.get_mapping().get_node_vms(dest_hypervisor): vm = model.get_vm_from_id(vm_id) @@ -178,9 +179,9 @@ class BasicConsolidation(BaseStrategy): :param total_mem :return: True if the threshold is not exceed """ - cap_cores = model.get_resource_from_id(ResourceType.cpu_cores) - cap_disk = model.get_resource_from_id(ResourceType.disk) - cap_mem = model.get_resource_from_id(ResourceType.memory) + cap_cores = model.get_resource_from_id(resource.ResourceType.cpu_cores) + cap_disk = model.get_resource_from_id(resource.ResourceType.disk) + cap_mem = model.get_resource_from_id(resource.ResourceType.memory) # available cores_available = cap_cores.get_capacity(dest_hypervisor) disk_available = cap_disk.get_capacity(dest_hypervisor) @@ -226,13 +227,13 @@ class BasicConsolidation(BaseStrategy): :return: """ cpu_capacity = model.get_resource_from_id( - ResourceType.cpu_cores).get_capacity(element) + resource.ResourceType.cpu_cores).get_capacity(element) disk_capacity = model.get_resource_from_id( - ResourceType.disk).get_capacity(element) + resource.ResourceType.disk).get_capacity(element) memory_capacity = model.get_resource_from_id( - ResourceType.memory).get_capacity(element) + resource.ResourceType.memory).get_capacity(element) score_cores = (1 - (float(cpu_capacity) - float(total_cores_used)) / float(cpu_capacity)) @@ -274,7 +275,7 @@ class BasicConsolidation(BaseStrategy): cpu_avg_vm = 100 cpu_capacity = model.get_resource_from_id( - ResourceType.cpu_cores).get_capacity(hypervisor) + resource.ResourceType.cpu_cores).get_capacity(hypervisor) total_cores_used = cpu_capacity * (cpu_avg_vm / 100) @@ -321,7 +322,7 @@ class BasicConsolidation(BaseStrategy): vm_cpu_utilization = 100 cpu_capacity = model.get_resource_from_id( - ResourceType.cpu_cores).get_capacity(vm) + resource.ResourceType.cpu_cores).get_capacity(vm) total_cores_used = cpu_capacity * (vm_cpu_utilization / 100.0) @@ -371,7 +372,7 @@ class BasicConsolidation(BaseStrategy): vm_score = [] for vm_id in vms_to_mig: vm = current_model.get_vm_from_id(vm_id) - if vm.state == VMState.ACTIVE.value: + if vm.state == vm_state.VMState.ACTIVE.value: vm_score.append( (vm_id, self.calculate_score_vm(vm, current_model))) @@ -390,7 +391,7 @@ class BasicConsolidation(BaseStrategy): mig_src_hypervisor)) == 0: self.add_change_service_state(mig_src_hypervisor. uuid, - HypervisorState. + hyper_state.HypervisorState. OFFLINE.value) self.number_of_released_nodes += 1 @@ -446,9 +447,9 @@ class BasicConsolidation(BaseStrategy): count = current_model.get_mapping(). \ get_node_vms_from_id(hypervisor_id) if len(count) == 0: - if hypervisor.state == HypervisorState.ONLINE: + if hypervisor.state == hyper_state.HypervisorState.ONLINE: self.add_change_service_state(hypervisor_id, - HypervisorState. + hyper_state.HypervisorState. OFFLINE.value) while self.get_allowed_migration_attempts() >= unsuccessful_migration: diff --git a/watcher/metrics_engine/cluster_history/ceilometer.py b/watcher/metrics_engine/cluster_history/ceilometer.py index 80f235869..a2d946960 100644 --- a/watcher/metrics_engine/cluster_history/ceilometer.py +++ b/watcher/metrics_engine/cluster_history/ceilometer.py @@ -22,13 +22,13 @@ from oslo_config import cfg from oslo_log import log from watcher.common import ceilometer_helper -from watcher.metrics_engine.cluster_history.api import BaseClusterHistory +from watcher.metrics_engine.cluster_history import api CONF = cfg.CONF LOG = log.getLogger(__name__) -class CeilometerClusterHistory(BaseClusterHistory): +class CeilometerClusterHistory(api.BaseClusterHistory): def __init__(self, osc=None): """:param osc: an OpenStackClients instance""" super(CeilometerClusterHistory, self).__init__() diff --git a/watcher/metrics_engine/cluster_model_collector/manager.py b/watcher/metrics_engine/cluster_model_collector/manager.py index 49369264e..752737e3a 100644 --- a/watcher/metrics_engine/cluster_model_collector/manager.py +++ b/watcher/metrics_engine/cluster_model_collector/manager.py @@ -21,8 +21,8 @@ from oslo_config import cfg from oslo_log import log from watcher.common import nova_helper -from watcher.metrics_engine.cluster_model_collector.nova import \ - NovaClusterModelCollector +from watcher.metrics_engine.cluster_model_collector import nova as cnova + LOG = log.getLogger(__name__) CONF = cfg.CONF @@ -32,4 +32,4 @@ class CollectorManager(object): def get_cluster_model_collector(self, osc=None): """:param osc: an OpenStackClients instance""" nova = nova_helper.NovaHelper(osc=osc) - return NovaClusterModelCollector(nova) + return cnova.NovaClusterModelCollector(nova) diff --git a/watcher/metrics_engine/cluster_model_collector/nova.py b/watcher/metrics_engine/cluster_model_collector/nova.py index e92e18da2..aca04a6c8 100644 --- a/watcher/metrics_engine/cluster_model_collector/nova.py +++ b/watcher/metrics_engine/cluster_model_collector/nova.py @@ -25,7 +25,6 @@ from watcher.decision_engine.model import resource from watcher.decision_engine.model import vm as obj_vm from watcher.metrics_engine.cluster_model_collector import api - LOG = log.getLogger(__name__) diff --git a/watcher/tests/applier/action_plan/test_default_action_handler.py b/watcher/tests/applier/action_plan/test_default_action_handler.py index 0003a4090..69c52a08f 100644 --- a/watcher/tests/applier/action_plan/test_default_action_handler.py +++ b/watcher/tests/applier/action_plan/test_default_action_handler.py @@ -18,38 +18,38 @@ import mock -from watcher.applier.action_plan.default import DefaultActionPlanHandler -from watcher.applier.messaging.event_types import EventTypes +from watcher.applier.action_plan import default +from watcher.applier.messaging import event_types as ev from watcher.objects import action_plan as ap_objects -from watcher.objects import ActionPlan -from watcher.tests.db.base import DbTestCase +from watcher.tests.db import base from watcher.tests.objects import utils as obj_utils -class TestDefaultActionPlanHandler(DbTestCase): +class TestDefaultActionPlanHandler(base.DbTestCase): def setUp(self): super(TestDefaultActionPlanHandler, self).setUp() self.action_plan = obj_utils.create_test_action_plan( self.context) def test_launch_action_plan(self): - command = DefaultActionPlanHandler(self.context, mock.MagicMock(), - self.action_plan.uuid) + command = default.DefaultActionPlanHandler(self.context, + mock.MagicMock(), + self.action_plan.uuid) command.execute() - action_plan = ActionPlan.get_by_uuid(self.context, - self.action_plan.uuid) + action_plan = ap_objects.ActionPlan.get_by_uuid(self.context, + self.action_plan.uuid) self.assertEqual(ap_objects.State.SUCCEEDED, action_plan.state) def test_trigger_audit_send_notification(self): messaging = mock.MagicMock() - command = DefaultActionPlanHandler(self.context, messaging, - self.action_plan.uuid) + command = default.DefaultActionPlanHandler(self.context, messaging, + self.action_plan.uuid) command.execute() - call_on_going = mock.call(EventTypes.LAUNCH_ACTION_PLAN.name, { + call_on_going = mock.call(ev.EventTypes.LAUNCH_ACTION_PLAN.name, { 'action_plan_state': ap_objects.State.ONGOING, 'action_plan__uuid': self.action_plan.uuid}) - call_succeeded = mock.call(EventTypes.LAUNCH_ACTION_PLAN.name, { + call_succeeded = mock.call(ev.EventTypes.LAUNCH_ACTION_PLAN.name, { 'action_plan_state': ap_objects.State.SUCCEEDED, 'action_plan__uuid': self.action_plan.uuid})