nfv/nfv/nfv-plugins/nfv_plugins/event_log_handlers/fm.py

462 lines
22 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import json
import six
from fm_api import constants as fm_constants
from fm_api import fm_api
from six.moves import http_client as httplib
from nfv_common import debug
import nfv_common.event_log.handlers.v1 as event_log_handlers_v1
import nfv_common.event_log.objects.v1 as event_log_objects_v1
from nfv_plugins.event_log_handlers import config
from nfv_plugins.nfvi_plugins.openstack import exceptions
from nfv_plugins.nfvi_plugins.openstack import fm
from nfv_plugins.nfvi_plugins.openstack import openstack
DLOG = debug.debug_get_logger('nfv_plugins.event_log_handlers.fm')
_fm_event_id_mapping = dict([
(event_log_objects_v1.EVENT_ID.MULTI_NODE_RECOVERY_MODE_ENTER,
fm_constants.FM_LOG_ID_VM_MULTI_NODE_RECOVERY_MODE_ENTER),
(event_log_objects_v1.EVENT_ID.MULTI_NODE_RECOVERY_MODE_EXIT,
fm_constants.FM_LOG_ID_VM_MULTI_NODE_RECOVERY_MODE_EXIT),
(event_log_objects_v1.EVENT_ID.HOST_SERVICES_ENABLED,
fm_constants.FM_LOG_ID_HOST_SERVICES_ENABLED),
(event_log_objects_v1.EVENT_ID.HOST_SERVICES_DISABLED,
fm_constants.FM_LOG_ID_HOST_SERVICES_DISABLED),
(event_log_objects_v1.EVENT_ID.HOST_SERVICES_FAILED,
fm_constants.FM_LOG_ID_HOST_SERVICES_FAILED),
(event_log_objects_v1.EVENT_ID.HYPERVISOR_STATE_CHANGE,
fm_constants.FM_LOG_ID_HYPERVISOR_STATE_CHANGE),
(event_log_objects_v1.EVENT_ID.INSTANCE_RENAMED,
fm_constants.FM_LOG_ID_VM_RENAMED),
(event_log_objects_v1.EVENT_ID.INSTANCE_ENABLED,
fm_constants.FM_LOG_ID_VM_ENABLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_FAILED,
fm_constants.FM_LOG_ID_VM_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_SCHEDULING_FAILED,
fm_constants.FM_LOG_ID_VM_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATE_BEGIN,
fm_constants.FM_LOG_ID_VM_CREATE),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATING,
fm_constants.FM_LOG_ID_VM_CREATING),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATE_REJECTED,
fm_constants.FM_LOG_ID_VM_CREATE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATE_CANCELLED,
fm_constants.FM_LOG_ID_VM_CREATE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATE_FAILED,
fm_constants.FM_LOG_ID_VM_CREATE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_CREATED,
fm_constants.FM_LOG_ID_VM_CREATED),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETE_BEGIN,
fm_constants.FM_LOG_ID_VM_DELETE),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETING,
fm_constants.FM_LOG_ID_VM_DELETING),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETE_REJECTED,
fm_constants.FM_LOG_ID_VM_DELETE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETE_CANCELLED,
fm_constants.FM_LOG_ID_VM_DELETE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETE_FAILED,
fm_constants.FM_LOG_ID_VM_DELETE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_DELETED,
fm_constants.FM_LOG_ID_VM_DELETED),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSE_BEGIN,
fm_constants.FM_LOG_ID_VM_PAUSE),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSING,
fm_constants.FM_LOG_ID_VM_PAUSING),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSE_REJECTED,
fm_constants.FM_LOG_ID_VM_PAUSE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSE_CANCELLED,
fm_constants.FM_LOG_ID_VM_PAUSE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSE_FAILED,
fm_constants.FM_LOG_ID_VM_PAUSE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_PAUSED,
fm_constants.FM_LOG_ID_VM_PAUSED),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSE_BEGIN,
fm_constants.FM_LOG_ID_VM_UNPAUSE),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSING,
fm_constants.FM_LOG_ID_VM_UNPAUSING),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSE_REJECTED,
fm_constants.FM_LOG_ID_VM_UNPAUSE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSE_CANCELLED,
fm_constants.FM_LOG_ID_VM_UNPAUSE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSE_FAILED,
fm_constants.FM_LOG_ID_VM_UNPAUSE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_UNPAUSED,
fm_constants.FM_LOG_ID_VM_UNPAUSED),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPEND_BEGIN,
fm_constants.FM_LOG_ID_VM_SUSPEND),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPENDING,
fm_constants.FM_LOG_ID_VM_SUSPENDING),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPEND_REJECTED,
fm_constants.FM_LOG_ID_VM_SUSPEND_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPEND_CANCELLED,
fm_constants.FM_LOG_ID_VM_SUSPEND_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPEND_FAILED,
fm_constants.FM_LOG_ID_VM_SUSPEND_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_SUSPENDED,
fm_constants.FM_LOG_ID_VM_SUSPENDED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUME_BEGIN,
fm_constants.FM_LOG_ID_VM_RESUME),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUMING,
fm_constants.FM_LOG_ID_VM_RESUMING),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUME_REJECTED,
fm_constants.FM_LOG_ID_VM_RESUME_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUME_CANCELLED,
fm_constants.FM_LOG_ID_VM_RESUME_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUME_FAILED,
fm_constants.FM_LOG_ID_VM_RESUME_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESUMED,
fm_constants.FM_LOG_ID_VM_RESUMED),
(event_log_objects_v1.EVENT_ID.INSTANCE_START_BEGIN,
fm_constants.FM_LOG_ID_VM_START),
(event_log_objects_v1.EVENT_ID.INSTANCE_STARTING,
fm_constants.FM_LOG_ID_VM_STARTING),
(event_log_objects_v1.EVENT_ID.INSTANCE_START_REJECTED,
fm_constants.FM_LOG_ID_VM_START_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_START_CANCELLED,
fm_constants.FM_LOG_ID_VM_START_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_START_FAILED,
fm_constants.FM_LOG_ID_VM_START_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_STARTED,
fm_constants.FM_LOG_ID_VM_STARTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOP_BEGIN,
fm_constants.FM_LOG_ID_VM_STOP),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOPPING,
fm_constants.FM_LOG_ID_VM_STOPPING),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOP_REJECTED,
fm_constants.FM_LOG_ID_VM_STOP_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOP_CANCELLED,
fm_constants.FM_LOG_ID_VM_STOP_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOP_FAILED,
fm_constants.FM_LOG_ID_VM_STOP_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_STOPPED,
fm_constants.FM_LOG_ID_VM_STOPPED),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATE_BEGIN,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATE),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATING,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATING),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATE_REJECTED,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATE_CANCELLED,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATE_FAILED,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_LIVE_MIGRATED,
fm_constants.FM_LOG_ID_VM_LIVE_MIGRATED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_BEGIN,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATING,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATING),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REJECTED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CANCELLED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_FAILED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRM_BEGIN,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRM),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRMING,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRMING),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRM_REJECTED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRM_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRM_CANCELLED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRM_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRM_FAILED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRM_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_CONFIRMED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_CONFIRMED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERT_BEGIN,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERT),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERTING,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERTING),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERT_REJECTED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERT_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERT_CANCELLED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERT_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERT_FAILED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERT_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_COLD_MIGRATE_REVERTED,
fm_constants.FM_LOG_ID_VM_COLD_MIGRATE_REVERTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATE_BEGIN,
fm_constants.FM_LOG_ID_VM_EVACUATE),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATING,
fm_constants.FM_LOG_ID_VM_EVACUATING),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATE_REJECTED,
fm_constants.FM_LOG_ID_VM_EVACUATE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATE_CANCELLED,
fm_constants.FM_LOG_ID_VM_EVACUATE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATE_FAILED,
fm_constants.FM_LOG_ID_VM_EVACUATE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_EVACUATED,
fm_constants.FM_LOG_ID_VM_EVACUATED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOT_BEGIN,
fm_constants.FM_LOG_ID_VM_REBOOT),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOTING,
fm_constants.FM_LOG_ID_VM_REBOOTING),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOT_REJECTED,
fm_constants.FM_LOG_ID_VM_REBOOT_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOT_CANCELLED,
fm_constants.FM_LOG_ID_VM_REBOOT_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOT_FAILED,
fm_constants.FM_LOG_ID_VM_REBOOT_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBOOTED,
fm_constants.FM_LOG_ID_VM_REBOOTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILD_BEGIN,
fm_constants.FM_LOG_ID_VM_REBUILD),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILDING,
fm_constants.FM_LOG_ID_VM_REBUILDING),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILD_REJECTED,
fm_constants.FM_LOG_ID_VM_REBUILD_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILD_CANCELLED,
fm_constants.FM_LOG_ID_VM_REBUILD_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILD_FAILED,
fm_constants.FM_LOG_ID_VM_REBUILD_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_REBUILT,
fm_constants.FM_LOG_ID_VM_REBUILT),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_BEGIN,
fm_constants.FM_LOG_ID_VM_RESIZE),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZING,
fm_constants.FM_LOG_ID_VM_RESIZING),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REJECTED,
fm_constants.FM_LOG_ID_VM_RESIZE_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CANCELLED,
fm_constants.FM_LOG_ID_VM_RESIZE_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_FAILED,
fm_constants.FM_LOG_ID_VM_RESIZE_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZED,
fm_constants.FM_LOG_ID_VM_RESIZED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRM_BEGIN,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRM),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRMING,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRMING),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRM_REJECTED,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRM_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRM_CANCELLED,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRM_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRM_FAILED,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRM_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_CONFIRMED,
fm_constants.FM_LOG_ID_VM_RESIZE_CONFIRMED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERT_BEGIN,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERT),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERTING,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERTING),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERT_REJECTED,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERT_REJECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERT_CANCELLED,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERT_CANCELLED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERT_FAILED,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERT_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_RESIZE_REVERTED,
fm_constants.FM_LOG_ID_VM_RESIZE_REVERTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_GUEST_HEARTBEAT_ESTABLISHED,
fm_constants.FM_LOG_ID_VM_GUEST_HEARTBEAT_ESTABLISHED),
(event_log_objects_v1.EVENT_ID.INSTANCE_GUEST_HEARTBEAT_DISCONNECTED,
fm_constants.FM_LOG_ID_VM_GUEST_HEARTBEAT_DISCONNECTED),
(event_log_objects_v1.EVENT_ID.INSTANCE_GUEST_HEARTBEAT_FAILED,
fm_constants.FM_LOG_ID_VM_GUEST_HEARTBEAT_FAILED),
(event_log_objects_v1.EVENT_ID.INSTANCE_GUEST_HEALTH_CHECK_FAILED,
fm_constants.FM_LOG_ID_VM_GUEST_HEALTH_CHECK_FAILED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_START,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_START),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_INPROGRESS,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_INPROGRESS),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_REJECTED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_REJECTED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_CANCELLED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_CANCELLED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_FAILED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_FAILED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_COMPLETED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_COMPLETED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_ABORT,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_ABORT),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_ABORTING,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_ABORTING),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_ABORT_REJECTED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_ABORT_REJECTED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_ABORT_FAILED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_ABORT_FAILED),
(event_log_objects_v1.EVENT_ID.SW_PATCH_AUTO_APPLY_ABORTED,
fm_constants.FM_LOG_ID_SW_PATCH_AUTO_APPLY_ABORTED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_START,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_START),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_INPROGRESS,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_INPROGRESS),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_REJECTED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_REJECTED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_CANCELLED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_CANCELLED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_FAILED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_FAILED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_COMPLETED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_COMPLETED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_ABORT,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_ABORT),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_ABORTING,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_ABORTING),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_ABORT_REJECTED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_ABORT_REJECTED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_ABORT_FAILED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_ABORT_FAILED),
(event_log_objects_v1.EVENT_ID.SW_UPGRADE_AUTO_APPLY_ABORTED,
fm_constants.FM_LOG_ID_SW_UPGRADE_AUTO_APPLY_ABORTED),
])
_fm_event_type_mapping = dict([
(event_log_objects_v1.EVENT_TYPE.STATE_EVENT,
fm_constants.FM_ALARM_TYPE_4),
(event_log_objects_v1.EVENT_TYPE.ACTION_EVENT,
fm_constants.FM_ALARM_TYPE_4),
(event_log_objects_v1.EVENT_TYPE.PROCESSING_ERROR,
fm_constants.FM_ALARM_TYPE_3),
])
_fm_event_importance_mapping = dict([
(event_log_objects_v1.EVENT_IMPORTANCE.LOW,
fm_constants.FM_ALARM_SEVERITY_MINOR),
(event_log_objects_v1.EVENT_IMPORTANCE.MEDIUM,
fm_constants.FM_ALARM_SEVERITY_MAJOR),
(event_log_objects_v1.EVENT_IMPORTANCE.HIGH,
fm_constants.FM_ALARM_SEVERITY_CRITICAL)
])
class EventLogManagement(event_log_handlers_v1.EventLogHandler):
"""
Fault Management Customer Log Handler
"""
_name = 'Event-Log-Management'
_version = '1.0.0'
_provider = 'Wind River'
_signature = 'e33d7cf6-f270-4256-893e-16266ee4dd2e'
_log_db = dict()
_fm_api = None
_openstack_token = None
_openstack_directory = None
_openstack_fm_endpoint_disabled = False
# _fault_management_pod_disabled is used to disable
# raising alarm to containerized fm and will be removed in future.
_fault_management_pod_disabled = True
@property
def name(self):
return self._name
@property
def version(self):
return self._version
@property
def provider(self):
return self._provider
@property
def signature(self):
return self._signature
@property
def openstack_fm_endpoint_disabled(self):
return self._openstack_fm_endpoint_disabled
@property
def openstack_token(self):
if self._openstack_token is None or \
self._openstack_token.is_expired():
self._openstack_token = openstack.get_token(self._openstack_directory)
if self._openstack_token is None:
raise Exception("OpenStack get-token did not complete.")
return self._openstack_token
def _format_log(self, log_data):
format_log = None
fm_event_id = _fm_event_id_mapping.get(log_data.event_id, None)
if fm_event_id is not None:
fm_event_type = _fm_event_type_mapping[log_data.event_type]
fm_probable_cause = fm_constants.ALARM_PROBABLE_CAUSE_65
fm_event_state = fm_constants.FM_ALARM_STATE_MSG
fm_severity = _fm_event_importance_mapping[log_data.importance]
fm_uuid = None
fm_reason_text = six.text_type(log_data.reason_text)
format_log = fm_api.Fault(fm_event_id, fm_event_state,
log_data.entity_type, log_data.entity,
fm_severity, fm_reason_text, fm_event_type,
fm_probable_cause, "", False, True)
return format_log
def _raise_openstack_log(self, format_log):
if self.openstack_fm_endpoint_disabled:
DLOG.error("Openstack fm endpoint is disabled when raise openstack log.")
return None
try:
result = fm.raise_alarm(self.openstack_token, format_log)
result_data = json.loads(result.result_data)
if result_data is not None:
return result_data["uuid"]
else:
return None
except exceptions.OpenStackRestAPIException as e:
if httplib.UNAUTHORIZED == e.http_status_code:
if self._openstack_token is not None:
self._openstack_token.set_expired()
else:
DLOG.exception("Caught exception while trying to get token, "
"error=%s." % e)
except Exception as e:
DLOG.exception("Caught exception while trying to get token, "
"error=%s." % e)
def log(self, log_data):
DLOG.debug("Generating Customer Log")
fault = self._format_log(log_data)
if fault is not None:
fm_uuid = None
# conditional statements self._fault_management_pod_disabled
# is used to disable raising alarm to containerized fm and
# will be removed in future.
if "instance" in log_data.entity_type and (not self._fault_management_pod_disabled):
fm_uuid = self._raise_openstack_log(fault.as_dict())
else:
fm_uuid = self._fm_api.set_fault(fault)
if fm_uuid is None:
DLOG.error("Failed to generate customer log, fm_uuid=%s."
% fm_uuid)
else:
DLOG.info("Generated customer log, fm_uuid=%s." % fm_uuid)
else:
DLOG.error("Unknown event id (%s) given." % log_data.event_id)
def initialize(self, config_file):
config.load(config_file)
self._openstack_directory = openstack.get_directory(
config, openstack.SERVICE_CATEGORY.OPENSTACK)
self._fm_api = fm_api.FaultAPIs()
DISABLED_LIST = ['Yes', 'yes', 'Y', 'y', 'True', 'true', 'T', 't', '1']
self._openstack_fm_endpoint_disabled = (config.CONF['fm']['endpoint_disabled'] in DISABLED_LIST)
# _fault_management_pod_disabled is used to disable raising alarm
# to containerized fm and will be removed in future.
self._fault_management_pod_disabled = \
(config.CONF['openstack'].get('fault_management_pod_disabled', 'True') in DISABLED_LIST)
def finalize(self):
return