aboutsummaryrefslogtreecommitdiffstats
path: root/src/onapsdk/ves
diff options
context:
space:
mode:
Diffstat (limited to 'src/onapsdk/ves')
-rw-r--r--src/onapsdk/ves/__init__.py14
-rw-r--r--src/onapsdk/ves/templates/ves7_batch_with_stndDefined_valid.json.j2109
-rw-r--r--src/onapsdk/ves/templates/ves_stnd_event.json.j254
-rw-r--r--src/onapsdk/ves/templates/ves_stnd_valid_event.json.j254
-rw-r--r--src/onapsdk/ves/ves.py84
-rw-r--r--src/onapsdk/ves/ves_service.py27
6 files changed, 342 insertions, 0 deletions
diff --git a/src/onapsdk/ves/__init__.py b/src/onapsdk/ves/__init__.py
new file mode 100644
index 0000000..186f0e7
--- /dev/null
+++ b/src/onapsdk/ves/__init__.py
@@ -0,0 +1,14 @@
+"""ONAP SDK VES package."""
+# Copyright 2022 Orange, Deutsche Telekom AG
+#
+# 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.
diff --git a/src/onapsdk/ves/templates/ves7_batch_with_stndDefined_valid.json.j2 b/src/onapsdk/ves/templates/ves7_batch_with_stndDefined_valid.json.j2
new file mode 100644
index 0000000..662e55e
--- /dev/null
+++ b/src/onapsdk/ves/templates/ves7_batch_with_stndDefined_valid.json.j2
@@ -0,0 +1,109 @@
+{
+ "eventList": [
+ {
+ "commonEventHeader": {
+ "version": "4.1",
+ "vesEventListenerVersion": "7.2",
+ "domain": "stndDefined",
+ "eventId": "stndDefined-gNB_Nokia000001",
+ "eventName": "stndDefined-gNB-Nokia-PowerLost",
+ "stndDefinedNamespace": "3GPP-FaultSupervision",
+ "startEpochMicrosec": 1413378172000000,
+ "lastEpochMicrosec": 1413378172000000,
+ "reportingEntityName": "ibcx0001vm002oam001",
+ "sourceName": "scfx0001vm002cap001",
+ "sequence": 1,
+ "priority": "High"
+ },
+ "stndDefinedFields": {
+ "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm",
+ "data": {
+ "href": 1,
+ "uri": "1",
+ "notificationId": 1,
+ "notificationType": "notifyNewAlarm",
+ "eventTime": "xyz",
+ "systemDN": "xyz",
+ "probableCause": 1,
+ "perceivedSeverity": "INDETERMINATE",
+ "rootCauseIndicator": false,
+ "specificProblem": "xyz",
+ "correlatedNotifications": [],
+ "backedUpStatus": true,
+ "backUpObject": "xyz",
+ "trendIndication": "MORE_SEVERE",
+ "thresholdInfo": {
+ "observedMeasurement": "new",
+ "observedValue": 123
+ },
+ "stateChangeDefinition": {
+ },
+ "monitoredAttributes": {
+ "newAtt": "new"
+ },
+ "proposedRepairActions": "xyz",
+ "additionalText": "xyz",
+ "additionalInformation": {
+ "addInfo": "new"
+ },
+ "alarmId": "1",
+ "alarmType": "COMMUNICATIONS_ALARM"
+ },
+ "stndDefinedFieldsVersion": "1.0"
+ }
+ },
+ {
+ "commonEventHeader": {
+ "version": "4.1",
+ "vesEventListenerVersion": "7.2",
+ "domain": "stndDefined",
+ "eventId": "stndDefined-gNB_Nokia000001",
+ "eventName": "stndDefined-gNB-Nokia-PowerLost",
+ "stndDefinedNamespace": "3GPP-FaultSupervision",
+ "startEpochMicrosec": 1413378172000000,
+ "lastEpochMicrosec": 1413378172000000,
+ "reportingEntityName": "ibcx0001vm002oam001",
+ "sourceName": "scfx0001vm002cap001",
+ "sequence": 1,
+ "priority": "High"
+ },
+ "stndDefinedFields": {
+ "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm",
+ "data": {
+ "href": 1,
+ "uri": "1",
+ "notificationId": 1,
+ "notificationType": "notifyNewAlarm",
+ "eventTime": "xyz",
+ "systemDN": "xyz",
+ "probableCause": 1,
+ "perceivedSeverity": "INDETERMINATE",
+ "rootCauseIndicator": false,
+ "specificProblem": "xyz",
+ "correlatedNotifications": [],
+ "backedUpStatus": true,
+ "backUpObject": "xyz",
+ "trendIndication": "MORE_SEVERE",
+ "thresholdInfo": {
+ "observedMeasurement": "new",
+ "observedValue": 123
+ },
+ "stateChangeDefinition": {
+ },
+ "monitoredAttributes": {
+ "newAtt": "new"
+ },
+ "proposedRepairActions": "xyz",
+ "additionalText": "xyz",
+ "additionalInformation": {
+ "addInfo": "new"
+ },
+ "alarmId": "1",
+ "alarmType": "COMMUNICATIONS_ALARM"
+ },
+ "stndDefinedFieldsVersion": "1.0"
+ }
+ }
+ ]
+}
+
diff --git a/src/onapsdk/ves/templates/ves_stnd_event.json.j2 b/src/onapsdk/ves/templates/ves_stnd_event.json.j2
new file mode 100644
index 0000000..fd1ce98
--- /dev/null
+++ b/src/onapsdk/ves/templates/ves_stnd_event.json.j2
@@ -0,0 +1,54 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "version": "4.1",
+ "vesEventListenerVersion": "7.2",
+ "domain": "stndDefined",
+ "eventId": "stndDefined-gNB_Nokia000001",
+ "eventName": "stndDefined-gNB-Nokia-PowerLost",
+ "stndDefinedNamespace": "3GPP-FaultSupervision",
+ "startEpochMicrosec": 1413378172000000,
+ "lastEpochMicrosec": 1413378172000000,
+ "reportingEntityName": "ibcx0001vm002oam001",
+ "sourceName": "scfx0001vm002cap001",
+ "sequence": 1,
+ "priority": "High"
+ },
+ "stndDefinedFields": {
+ "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/SA88-Rel16/OpenAPI/faultMnS.yaml#components/schemas/NotifyNewAlarm",
+ "data": {
+ "href": 1,
+ "uri": "1",
+ "notificationId": 1,
+ "notificationType": "notifyNewAlarm",
+ "eventTime": "xyz",
+ "systemDN": "xyz",
+ "probableCause": 1,
+ "perceivedSeverity": "INDETERMINATE",
+ "rootCauseIndicator": false,
+ "specificProblem": "xyz",
+ "correlatedNotifications": [],
+ "backedUpStatus": true,
+ "backUpObject": "xyz",
+ "trendIndication": "MORE_SEVERE",
+ "thresholdInfo": {
+ "observedMeasurement": "new",
+ "observedValue": 123
+ },
+ "stateChangeDefinition": {
+ },
+ "monitoredAttributes": {
+ "newAtt": "new"
+ },
+ "proposedRepairActions": "xyz",
+ "additionalText": "xyz",
+ "additionalInformation": {
+ "addInfo": "new"
+ },
+ "alarmId": "1",
+ "alarmType": "COMMUNICATIONS_ALARM"
+ },
+ "stndDefinedFieldsVersion": "1.0"
+ }
+ }
+}
diff --git a/src/onapsdk/ves/templates/ves_stnd_valid_event.json.j2 b/src/onapsdk/ves/templates/ves_stnd_valid_event.json.j2
new file mode 100644
index 0000000..08d335b
--- /dev/null
+++ b/src/onapsdk/ves/templates/ves_stnd_valid_event.json.j2
@@ -0,0 +1,54 @@
+{
+ "event": {
+ "commonEventHeader": {
+ "version": "4.1",
+ "vesEventListenerVersion": "7.2",
+ "domain": "stndDefined",
+ "eventId": "12",
+ "eventName": "someEventName",
+ "stndDefinedNamespace": "{{ header.namespace }}",
+ "startEpochMicrosec": 1413378172000000,
+ "lastEpochMicrosec": 1413378172000000,
+ "reportingEntityName": "ibcx0001vm002oam001",
+ "sourceName": "scfx0001vm002cap001",
+ "sequence": 1,
+ "priority": "High"
+ },
+ "stndDefinedFields": {
+ "schemaReference": "{{ schema_reference }}",
+ "data": {
+ "href": 1,
+ "uri": "1",
+ "notificationId": 1,
+ "notificationType": "notifyNewAlarm",
+ "eventTime": "xyz",
+ "systemDN": "xyz",
+ "probableCause": 1,
+ "perceivedSeverity": "INDETERMINATE",
+ "rootCauseIndicator": false,
+ "specificProblem": "xyz",
+ "correlatedNotifications": [],
+ "backedUpStatus": true,
+ "backUpObject": "xyz",
+ "trendIndication": "MORE_SEVERE",
+ "thresholdInfo": {
+ "observedMeasurement": "new",
+ "observedValue": 123
+ },
+ "stateChangeDefinition": {
+ },
+ "monitoredAttributes": {
+ "newAtt": "new"
+ },
+ "proposedRepairActions": "xyz",
+ "additionalText": "xyz",
+ "additionalInformation": {
+ "addInfo": "new"
+ },
+ "alarmId": "1",
+ "alarmType": "COMMUNICATIONS_ALARM"
+ },
+ "stndDefinedFieldsVersion": "1.0"
+ }
+ }
+}
diff --git a/src/onapsdk/ves/ves.py b/src/onapsdk/ves/ves.py
new file mode 100644
index 0000000..1f3f592
--- /dev/null
+++ b/src/onapsdk/ves/ves.py
@@ -0,0 +1,84 @@
+"""Base VES event sender."""
+# Copyright 2022 Orange, Deutsche Telekom AG, Nokia
+#
+# 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 typing import Dict, Union
+
+import json
+import requests
+
+from onapsdk.ves.ves_service import VesService
+
+ACTION = "Send event to Ves"
+POST_HTTP_METHOD = "POST"
+
+
+class Ves(VesService):
+ """Ves library provides functions for sending events to VES."""
+
+ event_endpoint_url: str = "{}/eventListener/{}"
+ event_batch_endpoint_url: str = "{}/eventListener/{}/eventBatch"
+
+ @classmethod
+ def send_event(cls,
+ version: str,
+ json_event: str,
+ basic_auth: Dict[str, str]) -> Union[requests.Response, None]:
+ """
+ Send an event stored in a file to VES.
+
+ Args:
+ version: (str) version of VES data format
+ json_event: (str) event to send
+ basic_auth: Dict[str, str], for example:{ 'username': 'bob', 'password': 'secret' }
+ Returns:
+ (requests.Response) HTTP response status
+
+ """
+ return Ves.__send_event_message(cls.event_endpoint_url.format(VesService._url, version),
+ json_event, basic_auth)
+
+ @classmethod
+ def send_batch_event(cls,
+ version: str,
+ json_event: str,
+ basic_auth: Dict[str, str]) -> Union[requests.Response, None]:
+ """
+ Send a batch event stored in a file to VES.
+
+ Args:
+ version: (str) version of VES data format
+ json_event: (str) event to send
+ basic_auth: Dict[str, str], for example:{ 'username': 'bob', 'password': 'secret' }
+ Returns:
+ (requests.Response) HTTP response status
+
+ """
+ return Ves.__send_event_message(cls.event_batch_endpoint_url.
+ format(VesService._url, version),
+ json_event, basic_auth)
+
+ @classmethod
+ def __send_event_message(cls,
+ base_url: str,
+ json_event: str,
+ basic_auth: Dict[str, str]
+ ) -> Union[requests.Response, None]:
+ cls._logger.debug("Event to send %s", json_event)
+ return cls.send_message(
+ POST_HTTP_METHOD,
+ ACTION,
+ f"{base_url}",
+ basic_auth=basic_auth,
+ json=json.loads(json_event)
+ )
diff --git a/src/onapsdk/ves/ves_service.py b/src/onapsdk/ves/ves_service.py
new file mode 100644
index 0000000..c4bc8ed
--- /dev/null
+++ b/src/onapsdk/ves/ves_service.py
@@ -0,0 +1,27 @@
+"""Base VES module."""
+# Copyright 2022 Orange, Deutsche Telekom AG, Nokia
+#
+# 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 onapsdk.configuration import settings
+from onapsdk.onap_service import OnapService
+
+
+class VesService(OnapService):
+ """Base VES class.
+
+ Stores url to VES API (edit if you want to use other) and authentication tuple
+ (username, password).
+ """
+
+ _url: str = settings.VES_URL