nfv/nfv/nfv-common/nfv_common/event_log/_event_log_handlers.py

74 lines
2.4 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import six
import stevedore
from nfv_common import debug
from nfv_common.helpers import Singleton
DLOG = debug.debug_get_logger('nfv_common.event_log.event_log_handlers')
@six.add_metaclass(Singleton)
class EventLogHandlers(stevedore.enabled.EnabledExtensionManager):
"""
Event Log Handlers
"""
_version = '1.0.0'
_signature = 'e33d7cf6-f270-4256-893e-16266ee4dd2e'
def __init__(self, namespace, handler_names):
super(EventLogHandlers, self).__init__(namespace,
EventLogHandlers.valid_handler,
invoke_on_load=True,
invoke_args=(), invoke_kwds={})
handler_list = [handler.strip() for handler in handler_names.split(',')]
self._handlers = {}
for handler in self:
if handler.obj.name in handler_list:
handler_id = handler.obj.provider + ':' + handler.obj.name
if handler_id not in self._handlers:
self._handlers[handler_id] = handler
DLOG.info("Loaded handler %s version %s provided by %s."
% (handler.obj.name, handler.obj.version,
handler.obj.provider))
@staticmethod
def valid_handler(handler):
"""
Verify signature of the handler is valid
"""
if EventLogHandlers._signature == handler.obj.signature:
return True
else:
DLOG.info("Handler %s version %s from provider %s has an invalid "
"signature." % (handler.obj.name, handler.obj.version,
handler.obj.provider))
return False
def log(self, log_data):
"""
Log a particular event using the handlers
"""
for handler_type, handler in self._handlers.items():
handler.obj.log(log_data)
def initialize(self, config_file):
"""
Initialize handlers
"""
for handler_id, handler in self._handlers.items():
handler.obj.initialize(config_file)
def finalize(self):
"""
Finalize handlers
"""
for handler_id, handler in self._handlers.items():
handler.obj.finalize()