diff --git a/watcher/decision_engine/audit/event.py b/watcher/decision_engine/audit/event.py new file mode 100644 index 000000000..3cb1b8686 --- /dev/null +++ b/watcher/decision_engine/audit/event.py @@ -0,0 +1,27 @@ +# -*- encoding: utf-8 -*- +# Copyright (c) 2019 ZTE Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from watcher.decision_engine.audit import base +from watcher import objects + + +class EventAuditHandler(base.AuditHandler): + + def post_execute(self, audit, solution, request_context): + super(EventAuditHandler, self).post_execute(audit, solution, + request_context) + # change state of the audit to SUCCEEDED + self.update_audit_state(audit, objects.audit.State.SUCCEEDED) diff --git a/watcher/decision_engine/messaging/audit_endpoint.py b/watcher/decision_engine/messaging/audit_endpoint.py index b8f007c26..7689117c3 100644 --- a/watcher/decision_engine/messaging/audit_endpoint.py +++ b/watcher/decision_engine/messaging/audit_endpoint.py @@ -22,6 +22,7 @@ from oslo_config import cfg from oslo_log import log from watcher.decision_engine.audit import continuous as c_handler +from watcher.decision_engine.audit import event as e_handler from watcher.decision_engine.audit import oneshot as o_handler from watcher import objects @@ -38,6 +39,7 @@ class AuditEndpoint(object): max_workers=CONF.watcher_decision_engine.max_audit_workers) self._oneshot_handler = o_handler.OneShotAuditHandler() self._continuous_handler = c_handler.ContinuousAuditHandler().start() + self._event_handler = e_handler.EventAuditHandler() @property def executor(self): @@ -45,7 +47,10 @@ class AuditEndpoint(object): def do_trigger_audit(self, context, audit_uuid): audit = objects.Audit.get_by_uuid(context, audit_uuid, eager=True) - self._oneshot_handler.execute(audit, context) + if audit.audit_type == objects.audit.AuditType.ONESHOT.value: + self._oneshot_handler.execute(audit, context) + if audit.audit_type == objects.audit.AuditType.EVENT.value: + self._event_handler.execute(audit, context) def trigger_audit(self, context, audit_uuid): LOG.debug("Trigger audit %s", audit_uuid) diff --git a/watcher/objects/audit.py b/watcher/objects/audit.py index 605d49a78..434cdf583 100644 --- a/watcher/objects/audit.py +++ b/watcher/objects/audit.py @@ -75,6 +75,7 @@ class State(object): class AuditType(enum.Enum): ONESHOT = 'ONESHOT' CONTINUOUS = 'CONTINUOUS' + EVENT = 'EVENT' @base.WatcherObjectRegistry.register