@ staticmethod
def _alarmconverter(alarm):
+ selected_keys = [
+ 'alarm_id', 'alarm_state', 'entity_type_id', 'entity_instance_id',
+ 'reason_text', 'alarm_type', 'probable_cause',
+ 'proposed_repair_action', 'service_affecting', 'suppression',
+ 'suppression_status', 'mgmt_affecting', 'degrade_affecting'
+ ]
+ content = alarm.to_dict()
+ filtered = dict(
+ filter(lambda item: item[0] in selected_keys, content.items()))
+ setattr(alarm, 'filtered', filtered)
# setattr(alarm, 'alarm_def_id', uuid.uuid3(
# uuid.NAMESPACE_URL, alarm.alarm_id))
setattr(alarm, 'state', alarm.alarm_state)
@ staticmethod
def _eventconverter(event, clear=False):
+ selected_keys = [
+ 'event_log_id', 'state', 'entity_type_id',
+ 'entity_instance_id', 'reason_text', 'event_log_type',
+ 'probable_cause', 'proposed_repair_action',
+ 'service_affecting', 'suppression', 'suppression_status'
+ ]
+ content = event.to_dict()
+ filtered = dict(
+ filter(lambda item: item[0] in selected_keys, content.items()))
+ setattr(event, 'filtered', filtered)
setattr(event, 'alarm_id', event.event_log_id)
setattr(event, 'alarm_type', event.event_log_type)
if clear:
Column("alarmChangedTime", String(255)),
Column("alarmAcknowledgeTime", String(255)),
Column("alarmAcknowledged", String(255)),
+ Column("extensions", String())
)
alarm_probable_cause = Table(
# elif hasattr(api_response, 'event_log_id'):
# self.alarm_id = api_response.event_log_id
- self.hash = content_hash if content_hash \
- else str(hash((self.id, self.timestamp, self.status)))
+ self.hash = content_hash
+ if not self.hash:
+ if hasattr(api_response, 'filtered'):
+ self.filtered = api_response.filtered
+ self.hash = str(hash((self.id, str(self.filtered))))
+ else:
+ self.hash = str(hash((self.id, self.updatetime)))
self.content = json.dumps(api_response.to_dict())
if EventTypeEnum.ALARM == type:
pass
self.alarmChangedTime = ''
self.alarmAcknowledgeTime = ''
self.alarmAcknowledged = False
- self.extensions = []
+ self.extensions = ''
class ProbableCause(AgRoot, Serializer):
self.alarmChangedTime = alarm.alarmChangedTime
self.alarmAcknowledgeTime = alarm.alarmAcknowledgeTime
self.alarmAcknowledged = alarm.alarmAcknowledged
- self.extensions = []
+ self.extensions = alarm.extensions
return alarm_obj.PerceivedSeverityEnum.WARNING
alarm_event_record.perceivedSeverity = severity_switch(content['severity'])
alarm_event_record.probableCauseId = fmobj.probable_cause_id
+
+ extensions = json.dumps(fmobj.filtered)
+ alarm_event_record.extensions = extensions
alarm_event_record.hash = fmobj.hash
- # logger.info('severity: ' + content['severity'])
- # logger.info('perceived severity: '
- # + alarm_event_record.perceivedSeverity)
alarm_event_record.events.append(events.AlarmEventChanged(
id=fmobj.id,
notificationEventType=AlarmNotificationEventEnum.NEW,
entity_type_id = content['entity_type_id']
entity_instance_id = content['entity_instance_id']
if 'host' == entity_type_id:
- logger.info('host: ' + entity_instance_id)
+ logger.debug('host: ' + entity_instance_id)
hostname = entity_instance_id.split('.')[0].split('=')[1]
with uow:
respools = uow.resource_pools.list()
respoolids = [respool.resourcePoolId for respool in respools
if respool.oCloudId == respool.resourcePoolId]
+
restype = uow.resource_types.get_by_name('pserver')
- hosts = uow.resources.list(respoolids[0], **{
- 'resourceTypeId': restype.resourceTypeId
- })
+ args = [ocloud.Resource.resourceTypeId ==
+ restype.resourceTypeId]
+ hosts = uow.resources.list(respoolids[0], *args)
for host in hosts:
- if host.name == hostname:
+ logger.debug('host extensions: ' + host.extensions)
+ extensions = json.loads(host.extensions)
+ if extensions['hostname'] == hostname:
return host.resourceId
else:
return ""
'alarmAcknowledgeTime': alarm_data['alarmAcknowledgeTime'],
'alarmAcknowledged': alarm_data['alarmAcknowledged'],
'perceivedSeverity': alarm_data['perceivedSeverity'],
- 'extensions': ''
+ 'extensions': json.loads(alarm_data['extensions'])
}
# logger.warning(callback)
callback_data = json.dumps(callback)
from flask_restx import fields
+from o2common.views.flask_restx_fields import Json2Dict
from o2ims.views.api_ns import api_ims_monitoring as api_monitoring_v1
'alarmAcknowledgeTime': fields.String,
'alarmAcknowledged': fields.Boolean,
'perceivedSeverity': fields.String,
- 'extensions': fields.Raw(attribute='extensions'),
+ 'extensions': Json2Dict(attribute='extensions')
}
# mask='{alarmEventRecordId,resourceTypeID,resourceID,' +
# 'alarmDefinitionID,probableCauseID,' +