Merge "Rename command to audit"

This commit is contained in:
Jenkins
2015-12-17 13:21:39 +00:00
committed by Gerrit Code Review
9 changed files with 46 additions and 45 deletions

View File

@@ -21,7 +21,7 @@ import six
@six.add_metaclass(abc.ABCMeta)
class BaseDecisionEngineCommand(object):
class BaseAuditHandler(object):
@abc.abstractmethod
def execute(self):
raise NotImplementedError()

View File

@@ -16,8 +16,8 @@
from oslo_log import log
from watcher.common.messaging.events.event import Event
from watcher.decision_engine.messaging.command.base import \
BaseDecisionEngineCommand
from watcher.decision_engine.audit.base import \
BaseAuditHandler
from watcher.decision_engine.messaging.events import Events
from watcher.decision_engine.planner.default import DefaultPlanner
from watcher.decision_engine.strategy.context.default import StrategyContext
@@ -28,8 +28,9 @@ from watcher.objects.audit_template import AuditTemplate
LOG = log.getLogger(__name__)
class TriggerAuditCommand(BaseDecisionEngineCommand):
class DefaultAuditHandler(BaseAuditHandler):
def __init__(self, messaging, model_collector):
super(DefaultAuditHandler, self).__init__()
self.messaging = messaging
self.model_collector = model_collector
self.strategy_context = StrategyContext()
@@ -43,8 +44,8 @@ class TriggerAuditCommand(BaseDecisionEngineCommand):
self.messaging.topic_status.publish_event(event.get_type().name,
payload)
def update_audit(self, request_context, audit_uuid, state):
LOG.debug("update audit {0} ".format(state))
def update_audit_state(self, request_context, audit_uuid, state):
LOG.debug("Update audit state:{0} ".format(state))
audit = Audit.get_by_uuid(request_context, audit_uuid)
audit.state = state
audit.save()
@@ -53,31 +54,32 @@ class TriggerAuditCommand(BaseDecisionEngineCommand):
def execute(self, audit_uuid, request_context):
try:
LOG.debug("Execute TriggerAuditCommand ")
LOG.debug("Trigger audit %s" % audit_uuid)
# 1 - change status to ONGOING
audit = self.update_audit(request_context, audit_uuid,
AuditStatus.ONGOING)
# change state to ONGOING
audit = self.update_audit_state(request_context, audit_uuid,
AuditStatus.ONGOING)
# 3 - Retrieve cluster-data-model
# Retrieve cluster-data-model
cluster = self.model_collector.get_latest_cluster_data_model()
# 4 - Select appropriate strategy
# Select appropriate strategy
audit_template = AuditTemplate.get_by_id(request_context,
audit.audit_template_id)
self.strategy_context.set_goal(audit_template.goal)
# 5 - compute change requests
# compute change requests
solution = self.strategy_context.execute_strategy(cluster)
# 6 - create an action plan
# create an action plan
planner = DefaultPlanner()
planner.schedule(request_context, audit.id, solution)
# 7 - change status to SUCCEEDED and notify
self.update_audit(request_context, audit_uuid,
AuditStatus.SUCCEEDED)
# change state to SUCCEEDED and notify
self.update_audit_state(request_context, audit_uuid,
AuditStatus.SUCCEEDED)
except Exception as e:
self.update_audit(request_context, audit_uuid, AuditStatus.FAILED)
LOG.error("Execute audit command {0} ".format(unicode(e)))
LOG.exception(e)
self.update_audit_state(request_context, audit_uuid,
AuditStatus.FAILED)

View File

@@ -18,7 +18,7 @@
#
from oslo_log import log
from watcher.decision_engine.command.audit import TriggerAuditCommand
from watcher.decision_engine.audit.default import DefaultAuditHandler
from watcher.metrics_engine.cluster_model_collector.manager import \
CollectorManager
@@ -33,7 +33,7 @@ class AuditEndpoint(object):
def do_trigger_audit(self, context, audit_uuid):
model_collector = self.manager.get_cluster_model_collector()
audit = TriggerAuditCommand(self.de, model_collector)
audit = DefaultAuditHandler(self.de, model_collector)
audit.execute(audit_uuid, context)
def trigger_audit(self, context, audit_uuid):

View File

@@ -15,7 +15,7 @@
# limitations under the License.
from mock import call
from mock import MagicMock
from watcher.decision_engine.command.audit import TriggerAuditCommand
from watcher.decision_engine.audit.default import DefaultAuditHandler
from watcher.decision_engine.messaging.events import Events
from watcher.objects.audit import Audit
from watcher.objects.audit import AuditStatus
@@ -25,9 +25,9 @@ from watcher.tests.decision_engine.strategy.strategies.faker_cluster_state \
from watcher.tests.objects import utils as obj_utils
class TestTriggerAuditCommand(DbTestCase):
class TestDefaultAuditHandler(DbTestCase):
def setUp(self):
super(TestTriggerAuditCommand, self).setUp()
super(TestDefaultAuditHandler, self).setUp()
self.audit_template = obj_utils.create_test_audit_template(
self.context)
self.audit = obj_utils.create_test_audit(
@@ -36,24 +36,24 @@ class TestTriggerAuditCommand(DbTestCase):
def test_trigger_audit_without_errors(self):
model_collector = FakerModelCollector()
command = TriggerAuditCommand(MagicMock(), model_collector)
command.execute(self.audit.uuid, self.context)
audit_handler = DefaultAuditHandler(MagicMock(), model_collector)
audit_handler.execute(self.audit.uuid, self.context)
def test_trigger_audit_state_success(self):
model_collector = FakerModelCollector()
command = TriggerAuditCommand(MagicMock(), model_collector)
command.strategy_context.execute_strategy = MagicMock()
command.execute(self.audit.uuid, self.context)
audit_handler = DefaultAuditHandler(MagicMock(), model_collector)
audit_handler.strategy_context.execute_strategy = MagicMock()
audit_handler.execute(self.audit.uuid, self.context)
audit = Audit.get_by_uuid(self.context, self.audit.uuid)
self.assertEqual(AuditStatus.SUCCEEDED, audit.state)
def test_trigger_audit_send_notification(self):
messaging = MagicMock()
model_collector = FakerModelCollector()
command = TriggerAuditCommand(messaging, model_collector)
command.strategy_context.execute_strategy = MagicMock()
audit_handler = DefaultAuditHandler(messaging, model_collector)
audit_handler.strategy_context.execute_strategy = MagicMock()
command.execute(self.audit.uuid, self.context)
audit_handler.execute(self.audit.uuid, self.context)
call_on_going = call(Events.TRIGGER_AUDIT.name, {
'audit_status': AuditStatus.ONGOING,

View File

@@ -15,9 +15,8 @@
# limitations under the License.
import mock
from mock import MagicMock
from watcher.common import utils
from watcher.decision_engine.command.audit import TriggerAuditCommand
from watcher.decision_engine.audit.default import DefaultAuditHandler
from watcher.decision_engine.messaging.audit_endpoint import AuditEndpoint
from watcher.metrics_engine.cluster_model_collector.manager import \
CollectorManager
@@ -26,9 +25,9 @@ from watcher.tests.decision_engine.strategy.strategies.faker_cluster_state impor
FakerModelCollector
class TriggerAuditCommandWithExecutor(TriggerAuditCommand):
class DefaultAuditHandlerMock(DefaultAuditHandler):
def setUp(self):
super(TriggerAuditCommand, self).setUp()
super(DefaultAuditHandlerMock, self).setUp()
def executor(self):
pass
@@ -42,28 +41,28 @@ class TestAuditEndpoint(base.TestCase):
def test_do_trigger_audit(self):
audit_uuid = utils.generate_uuid()
model_collector = FakerModelCollector()
command = TriggerAuditCommand(MagicMock(), model_collector)
endpoint = AuditEndpoint(command)
audit_handler = DefaultAuditHandler(MagicMock(), model_collector)
endpoint = AuditEndpoint(audit_handler)
with mock.patch.object(CollectorManager, 'get_cluster_model_collector') \
as mock_call2:
mock_call2.return_value = 0
with mock.patch.object(TriggerAuditCommand, 'execute') \
with mock.patch.object(DefaultAuditHandler, 'execute') \
as mock_call:
mock_call.return_value = 0
endpoint.do_trigger_audit(command, audit_uuid)
endpoint.do_trigger_audit(audit_handler, audit_uuid)
# mock_call.assert_called_once_with()
mock_call2.assert_called_once_with()
def test_trigger_audit(self):
audit_uuid = utils.generate_uuid()
model_collector = FakerModelCollector()
command = TriggerAuditCommandWithExecutor(MagicMock(),
model_collector)
endpoint = AuditEndpoint(command)
audit_handler = DefaultAuditHandlerMock(MagicMock(),
model_collector)
endpoint = AuditEndpoint(audit_handler)
with mock.patch.object(TriggerAuditCommandWithExecutor, 'executor') \
with mock.patch.object(DefaultAuditHandlerMock, 'executor') \
as mock_call:
mock_call.return_value = 0
endpoint.trigger_audit(command, audit_uuid)
endpoint.trigger_audit(audit_handler, audit_uuid)