128 lines
4.0 KiB
Python
128 lines
4.0 KiB
Python
# Copyright (C) 2022 Fujitsu
|
|
# All Rights Reserved.
|
|
#
|
|
# 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 oslo_utils import uuidutils
|
|
|
|
from tackerclient.osc import utils as tacker_osc_utils
|
|
|
|
|
|
def create_vnf_fm_alarms(count=2):
|
|
"""Create multiple fake vnf packages.
|
|
|
|
:param int count:
|
|
The number of vnf_fm_alarms to fake
|
|
:return:
|
|
A list of fake vnf fm alarms dictionary
|
|
"""
|
|
vnf_fm_alarms = []
|
|
for i in range(0, count):
|
|
unique_id = uuidutils.generate_uuid()
|
|
vnf_fm_alarms.append(vnf_fm_alarm_response(attrs={'id': unique_id}))
|
|
return vnf_fm_alarms
|
|
|
|
|
|
def vnf_fm_alarm_response(attrs=None, action=None):
|
|
"""Create a fake vnf fm alarm.
|
|
|
|
:param Dictionary attrs:
|
|
A dictionary with all attributes
|
|
:return:
|
|
A FakeVnfFmAlarm dict
|
|
"""
|
|
|
|
if action == 'update':
|
|
fake_vnf_fm_alarm = {
|
|
"ackState": "UNACKNOWLEDGED"
|
|
}
|
|
return fake_vnf_fm_alarm
|
|
|
|
attrs = attrs or {}
|
|
# Set default attributes.
|
|
fake_vnf_fm_alarm = {
|
|
"id": "78a39661-60a8-4824-b989-88c1b0c3534a",
|
|
"managedObjectId": "c61314d0-f583-4ab3-a457-46426bce02d3",
|
|
"vnfcInstanceIds": "0e5f3086-4e79-47ed-a694-54c29155fa26",
|
|
"rootCauseFaultyResource": {
|
|
"faultyResource": {
|
|
"vimConnectionId": "0d57e928-86a4-4445-a4bd-1634edae73f3",
|
|
"resourceId": "4e6ccbe1-38ec-4b1b-a278-64de09ba01b3",
|
|
"vimLevelResourceType": "OS::Nova::Server"
|
|
},
|
|
"faultyResourceType": "COMPUTE"
|
|
},
|
|
"alarmRaisedTime": "2021-09-03 10:21:03",
|
|
"alarmChangedTime": "2021-09-04 10:21:03",
|
|
"alarmClearedTime": "2021-09-05 10:21:03",
|
|
"alarmAcknowledgedTime": "2021-09-06 10:21:03",
|
|
"ackState": "UNACKNOWLEDGED",
|
|
"perceivedSeverity": "WARNING",
|
|
"eventTime": "2021-09-07 10:06:03",
|
|
"eventType": "EQUIPMENT_ALARM",
|
|
"faultType": "Fault Type",
|
|
"probableCause": "The server cannot be connected.",
|
|
"isRootCause": False,
|
|
"correlatedAlarmIds": [
|
|
"c88b624e-e997-4b17-b674-10ca2bab62e0",
|
|
"c16d41fd-12e2-49a6-bb17-72faf702353f"
|
|
],
|
|
"faultDetails": [
|
|
"Fault",
|
|
"Details"
|
|
],
|
|
"_links": {
|
|
"self": {
|
|
"href": "/vnffm/v1/alarms/"
|
|
"78a39661-60a8-4824-b989-88c1b0c3534a"
|
|
},
|
|
"objectInstance": {
|
|
"href": "/vnflcm/v1/vnf_instances/"
|
|
"0e5f3086-4e79-47ed-a694-54c29155fa26"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Overwrite default attributes.
|
|
fake_vnf_fm_alarm.update(attrs)
|
|
|
|
return fake_vnf_fm_alarm
|
|
|
|
|
|
def get_vnffm_alarm_data(vnf_fm_alarm, columns=None):
|
|
"""Get the vnffm alarm.
|
|
|
|
:return:
|
|
A tuple object sorted based on the name of the columns.
|
|
"""
|
|
complex_attributes = [
|
|
'vnfcInstanceIds',
|
|
'rootCauseFaultyResource',
|
|
'correlatedAlarmIds',
|
|
'faultDetails',
|
|
'_links'
|
|
]
|
|
|
|
for attribute in complex_attributes:
|
|
if vnf_fm_alarm.get(attribute):
|
|
vnf_fm_alarm.update(
|
|
{attribute: tacker_osc_utils.FormatComplexDataColumn(
|
|
vnf_fm_alarm[attribute])})
|
|
|
|
# return the list of data as per column order
|
|
if columns:
|
|
return tuple([vnf_fm_alarm[key] for key in columns])
|
|
|
|
return tuple([vnf_fm_alarm[key] for key in sorted(
|
|
vnf_fm_alarm.keys())])
|