From 95be74bfa769f7e57bc64d5621f1bfd96e016ee5 Mon Sep 17 00:00:00 2001 From: Morgan Richomme Date: Wed, 8 Nov 2017 10:43:33 +0100 Subject: [PATCH] Fix Doc8 errors Issue-ID: DCAEGEN2-197 Change-Id: I7de01b8c52ae7919f3d8d4f6545a53b026096ab9 Signed-off-by: Morgan Richomme DOC: release notes updates Change-Id: I8d88d65c1c5be9e114b6aab60d70b6e36464a75f Issue-ID: DCAEGEN2-194 Signed-off-by: Vijay Fix editorial errors Modify ONPA by ONAP Correct some JSON file example Add code-block for code snippet Change-Id: Ia313b6adc615bcd353f4e3c3e363c3f854d25181 ISSUE-ID: DCAEGEN2-199 Signed-off-by: Eric Debeau Improve documentation Issue-Id: DCAEGEN2-199 Change-Id: Id5e3f3e57e86debe41b7df7986c9d8a808b2752f Signed-off-by: Lusheng Ji Cherry pick from master, add defaultbranch Issue-ID: DCAEGEN2-206 Change-Id: I363a9331afa1bad33586aa2de34af9c3e6716532 Signed-off-by: Lusheng Ji --- .gitreview | 1 + docs/sections/apis/ves.rst | 2429 ++++++++++++++++----------------- docs/sections/architecture.rst | 2 +- docs/sections/blueprints/ves.rst | 10 +- docs/sections/images/designate.gif | Bin 0 -> 115887 bytes docs/sections/installation.rst | 4 +- docs/sections/installation_heat.rst | 153 ++- docs/sections/installation_manual.rst | 645 ++++----- docs/sections/installation_test.rst | 8 +- docs/sections/release-notes.rst | 5 +- 10 files changed, 1589 insertions(+), 1668 deletions(-) create mode 100644 docs/sections/images/designate.gif diff --git a/.gitreview b/.gitreview index c33b8033..d2dee95d 100644 --- a/.gitreview +++ b/.gitreview @@ -2,3 +2,4 @@ host=gerrit.onap.org port=29418 project=dcaegen2 +defaultbranch=amsterdam diff --git a/docs/sections/apis/ves.rst b/docs/sections/apis/ves.rst index 41d903be..4fb338f8 100644 --- a/docs/sections/apis/ves.rst +++ b/docs/sections/apis/ves.rst @@ -99,850 +99,850 @@ Body :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - event | No | :ref:`event ` | | | + event | No | :ref:`event ` | | | .. code-block:: javascript { "event": { "commonEventHeader": { - "domain": "fault", - "eventId": "somestring", - "eventName": "somestring", - "eventType": "somestring", - "internalHeaderFields": {}, - "lastEpochMicrosec": 1, - "nfNamingCode": "somestring", - "nfcNamingCode": "somestring", - "priority": "High", - "reportingEntityId": "somestring", - "reportingEntityName": "somestring", - "sequence": 1, - "sourceId": "somestring", - "sourceName": "somestring", - "startEpochMicrosec": 1, + "domain": "fault", + "eventId": "somestring", + "eventName": "somestring", + "eventType": "somestring", + "internalHeaderFields": {}, + "lastEpochMicrosec": 1, + "nfNamingCode": "somestring", + "nfcNamingCode": "somestring", + "priority": "High", + "reportingEntityId": "somestring", + "reportingEntityName": "somestring", + "sequence": 1, + "sourceId": "somestring", + "sourceName": "somestring", + "startEpochMicrosec": 1, "version": 1 - }, + }, "faultFields": { "alarmAdditionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "alarmCondition": "somestring", - "alarmInterfaceA": "somestring", - "eventCategory": "somestring", - "eventSeverity": "CRITICAL", - "eventSourceType": "somestring", - "faultFieldsVersion": 1, - "specificProblem": "somestring", + ], + "alarmCondition": "somestring", + "alarmInterfaceA": "somestring", + "eventCategory": "somestring", + "eventSeverity": "CRITICAL", + "eventSourceType": "somestring", + "faultFieldsVersion": 1, + "specificProblem": "somestring", "vfStatus": "Active" - }, + }, "heartbeatFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "heartbeatFieldsVersion": 1, + ], + "heartbeatFieldsVersion": 1, "heartbeatInterval": 1 - }, + }, "measurementsForVfScalingFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "additionalMeasurements": [ { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" - }, + }, { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" } - ], + ], "additionalObjects": [ { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" - }, + }, { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" } - ], + ], "codecUsageArray": [ { - "codecIdentifier": "somestring", + "codecIdentifier": "somestring", "numberInUse": 1 - }, + }, { - "codecIdentifier": "somestring", + "codecIdentifier": "somestring", "numberInUse": 1 } - ], - "concurrentSessions": 1, - "configuredEntities": 1, + ], + "concurrentSessions": 1, + "configuredEntities": 1, "cpuUsageArray": [ { - "cpuIdentifier": "somestring", - "cpuIdle": 1, - "cpuUsageInterrupt": 1, - "cpuUsageNice": 1, - "cpuUsageSoftIrq": 1, - "cpuUsageSteal": 1, - "cpuUsageSystem": 1, - "cpuUsageUser": 1, - "cpuWait": 1, + "cpuIdentifier": "somestring", + "cpuIdle": 1, + "cpuUsageInterrupt": 1, + "cpuUsageNice": 1, + "cpuUsageSoftIrq": 1, + "cpuUsageSteal": 1, + "cpuUsageSystem": 1, + "cpuUsageUser": 1, + "cpuWait": 1, "percentUsage": 1 - }, - { - "cpuIdentifier": "somestring", - "cpuIdle": 1, - "cpuUsageInterrupt": 1, - "cpuUsageNice": 1, - "cpuUsageSoftIrq": 1, - "cpuUsageSteal": 1, - "cpuUsageSystem": 1, - "cpuUsageUser": 1, - "cpuWait": 1, + }, + { + "cpuIdentifier": "somestring", + "cpuIdle": 1, + "cpuUsageInterrupt": 1, + "cpuUsageNice": 1, + "cpuUsageSoftIrq": 1, + "cpuUsageSteal": 1, + "cpuUsageSystem": 1, + "cpuUsageUser": 1, + "cpuWait": 1, "percentUsage": 1 } - ], + ], "diskUsageArray": [ { - "diskIdentifier": "somestring", - "diskIoTimeAvg": 1, - "diskIoTimeLast": 1, - "diskIoTimeMax": 1, - "diskIoTimeMin": 1, - "diskMergedReadAvg": 1, - "diskMergedReadLast": 1, - "diskMergedReadMax": 1, - "diskMergedReadMin": 1, - "diskMergedWriteAvg": 1, - "diskMergedWriteLast": 1, - "diskMergedWriteMax": 1, - "diskMergedWriteMin": 1, - "diskOctetsReadAvg": 1, - "diskOctetsReadLast": 1, - "diskOctetsReadMax": 1, - "diskOctetsReadMin": 1, - "diskOctetsWriteAvg": 1, - "diskOctetsWriteLast": 1, - "diskOctetsWriteMax": 1, - "diskOctetsWriteMin": 1, - "diskOpsReadAvg": 1, - "diskOpsReadLast": 1, - "diskOpsReadMax": 1, - "diskOpsReadMin": 1, - "diskOpsWriteAvg": 1, - "diskOpsWriteLast": 1, - "diskOpsWriteMax": 1, - "diskOpsWriteMin": 1, - "diskPendingOperationsAvg": 1, - "diskPendingOperationsLast": 1, - "diskPendingOperationsMax": 1, - "diskPendingOperationsMin": 1, - "diskTimeReadAvg": 1, - "diskTimeReadLast": 1, - "diskTimeReadMax": 1, - "diskTimeReadMin": 1, - "diskTimeWriteAvg": 1, - "diskTimeWriteLast": 1, - "diskTimeWriteMax": 1, + "diskIdentifier": "somestring", + "diskIoTimeAvg": 1, + "diskIoTimeLast": 1, + "diskIoTimeMax": 1, + "diskIoTimeMin": 1, + "diskMergedReadAvg": 1, + "diskMergedReadLast": 1, + "diskMergedReadMax": 1, + "diskMergedReadMin": 1, + "diskMergedWriteAvg": 1, + "diskMergedWriteLast": 1, + "diskMergedWriteMax": 1, + "diskMergedWriteMin": 1, + "diskOctetsReadAvg": 1, + "diskOctetsReadLast": 1, + "diskOctetsReadMax": 1, + "diskOctetsReadMin": 1, + "diskOctetsWriteAvg": 1, + "diskOctetsWriteLast": 1, + "diskOctetsWriteMax": 1, + "diskOctetsWriteMin": 1, + "diskOpsReadAvg": 1, + "diskOpsReadLast": 1, + "diskOpsReadMax": 1, + "diskOpsReadMin": 1, + "diskOpsWriteAvg": 1, + "diskOpsWriteLast": 1, + "diskOpsWriteMax": 1, + "diskOpsWriteMin": 1, + "diskPendingOperationsAvg": 1, + "diskPendingOperationsLast": 1, + "diskPendingOperationsMax": 1, + "diskPendingOperationsMin": 1, + "diskTimeReadAvg": 1, + "diskTimeReadLast": 1, + "diskTimeReadMax": 1, + "diskTimeReadMin": 1, + "diskTimeWriteAvg": 1, + "diskTimeWriteLast": 1, + "diskTimeWriteMax": 1, "diskTimeWriteMin": 1 - }, - { - "diskIdentifier": "somestring", - "diskIoTimeAvg": 1, - "diskIoTimeLast": 1, - "diskIoTimeMax": 1, - "diskIoTimeMin": 1, - "diskMergedReadAvg": 1, - "diskMergedReadLast": 1, - "diskMergedReadMax": 1, - "diskMergedReadMin": 1, - "diskMergedWriteAvg": 1, - "diskMergedWriteLast": 1, - "diskMergedWriteMax": 1, - "diskMergedWriteMin": 1, - "diskOctetsReadAvg": 1, - "diskOctetsReadLast": 1, - "diskOctetsReadMax": 1, - "diskOctetsReadMin": 1, - "diskOctetsWriteAvg": 1, - "diskOctetsWriteLast": 1, - "diskOctetsWriteMax": 1, - "diskOctetsWriteMin": 1, - "diskOpsReadAvg": 1, - "diskOpsReadLast": 1, - "diskOpsReadMax": 1, - "diskOpsReadMin": 1, - "diskOpsWriteAvg": 1, - "diskOpsWriteLast": 1, - "diskOpsWriteMax": 1, - "diskOpsWriteMin": 1, - "diskPendingOperationsAvg": 1, - "diskPendingOperationsLast": 1, - "diskPendingOperationsMax": 1, - "diskPendingOperationsMin": 1, - "diskTimeReadAvg": 1, - "diskTimeReadLast": 1, - "diskTimeReadMax": 1, - "diskTimeReadMin": 1, - "diskTimeWriteAvg": 1, - "diskTimeWriteLast": 1, - "diskTimeWriteMax": 1, + }, + { + "diskIdentifier": "somestring", + "diskIoTimeAvg": 1, + "diskIoTimeLast": 1, + "diskIoTimeMax": 1, + "diskIoTimeMin": 1, + "diskMergedReadAvg": 1, + "diskMergedReadLast": 1, + "diskMergedReadMax": 1, + "diskMergedReadMin": 1, + "diskMergedWriteAvg": 1, + "diskMergedWriteLast": 1, + "diskMergedWriteMax": 1, + "diskMergedWriteMin": 1, + "diskOctetsReadAvg": 1, + "diskOctetsReadLast": 1, + "diskOctetsReadMax": 1, + "diskOctetsReadMin": 1, + "diskOctetsWriteAvg": 1, + "diskOctetsWriteLast": 1, + "diskOctetsWriteMax": 1, + "diskOctetsWriteMin": 1, + "diskOpsReadAvg": 1, + "diskOpsReadLast": 1, + "diskOpsReadMax": 1, + "diskOpsReadMin": 1, + "diskOpsWriteAvg": 1, + "diskOpsWriteLast": 1, + "diskOpsWriteMax": 1, + "diskOpsWriteMin": 1, + "diskPendingOperationsAvg": 1, + "diskPendingOperationsLast": 1, + "diskPendingOperationsMax": 1, + "diskPendingOperationsMin": 1, + "diskTimeReadAvg": 1, + "diskTimeReadLast": 1, + "diskTimeReadMax": 1, + "diskTimeReadMin": 1, + "diskTimeWriteAvg": 1, + "diskTimeWriteLast": 1, + "diskTimeWriteMax": 1, "diskTimeWriteMin": 1 } - ], + ], "featureUsageArray": [ { - "featureIdentifier": "somestring", + "featureIdentifier": "somestring", "featureUtilization": 1 - }, + }, { - "featureIdentifier": "somestring", + "featureIdentifier": "somestring", "featureUtilization": 1 } - ], + ], "filesystemUsageArray": [ { - "blockConfigured": 1, - "blockIops": 1, - "blockUsed": 1, - "ephemeralConfigured": 1, - "ephemeralIops": 1, - "ephemeralUsed": 1, + "blockConfigured": 1, + "blockIops": 1, + "blockUsed": 1, + "ephemeralConfigured": 1, + "ephemeralIops": 1, + "ephemeralUsed": 1, "filesystemName": "somestring" - }, - { - "blockConfigured": 1, - "blockIops": 1, - "blockUsed": 1, - "ephemeralConfigured": 1, - "ephemeralIops": 1, - "ephemeralUsed": 1, + }, + { + "blockConfigured": 1, + "blockIops": 1, + "blockUsed": 1, + "ephemeralConfigured": 1, + "ephemeralIops": 1, + "ephemeralUsed": 1, "filesystemName": "somestring" } - ], + ], "latencyDistribution": [ { - "countsInTheBucket": 1, - "highEndOfLatencyBucket": 1, + "countsInTheBucket": 1, + "highEndOfLatencyBucket": 1, "lowEndOfLatencyBucket": 1 - }, + }, { - "countsInTheBucket": 1, - "highEndOfLatencyBucket": 1, + "countsInTheBucket": 1, + "highEndOfLatencyBucket": 1, "lowEndOfLatencyBucket": 1 } - ], - "meanRequestLatency": 1, - "measurementInterval": 1, - "measurementsForVfScalingVersion": 1, + ], + "meanRequestLatency": 1, + "measurementInterval": 1, + "measurementsForVfScalingVersion": 1, "memoryUsageArray": [ { - "memoryBuffered": 1, - "memoryCached": 1, - "memoryConfigured": 1, - "memoryFree": 1, - "memorySlabRecl": 1, - "memorySlabUnrecl": 1, - "memoryUsed": 1, + "memoryBuffered": 1, + "memoryCached": 1, + "memoryConfigured": 1, + "memoryFree": 1, + "memorySlabRecl": 1, + "memorySlabUnrecl": 1, + "memoryUsed": 1, "vmIdentifier": "somestring" - }, - { - "memoryBuffered": 1, - "memoryCached": 1, - "memoryConfigured": 1, - "memoryFree": 1, - "memorySlabRecl": 1, - "memorySlabUnrecl": 1, - "memoryUsed": 1, + }, + { + "memoryBuffered": 1, + "memoryCached": 1, + "memoryConfigured": 1, + "memoryFree": 1, + "memorySlabRecl": 1, + "memorySlabUnrecl": 1, + "memoryUsed": 1, "vmIdentifier": "somestring" } - ], - "numberOfMediaPortsInUse": 1, - "requestRate": 1, + ], + "numberOfMediaPortsInUse": 1, + "requestRate": 1, "vNicPerformanceArray": [ { - "receivedBroadcastPacketsAccumulated": 1, - "receivedBroadcastPacketsDelta": 1, - "receivedDiscardedPacketsAccumulated": 1, - "receivedDiscardedPacketsDelta": 1, - "receivedErrorPacketsAccumulated": 1, - "receivedErrorPacketsDelta": 1, - "receivedMulticastPacketsAccumulated": 1, - "receivedMulticastPacketsDelta": 1, - "receivedOctetsAccumulated": 1, - "receivedOctetsDelta": 1, - "receivedTotalPacketsAccumulated": 1, - "receivedTotalPacketsDelta": 1, - "receivedUnicastPacketsAccumulated": 1, - "receivedUnicastPacketsDelta": 1, - "transmittedBroadcastPacketsAccumulated": 1, - "transmittedBroadcastPacketsDelta": 1, - "transmittedDiscardedPacketsAccumulated": 1, - "transmittedDiscardedPacketsDelta": 1, - "transmittedErrorPacketsAccumulated": 1, - "transmittedErrorPacketsDelta": 1, - "transmittedMulticastPacketsAccumulated": 1, - "transmittedMulticastPacketsDelta": 1, - "transmittedOctetsAccumulated": 1, - "transmittedOctetsDelta": 1, - "transmittedTotalPacketsAccumulated": 1, - "transmittedTotalPacketsDelta": 1, - "transmittedUnicastPacketsAccumulated": 1, - "transmittedUnicastPacketsDelta": 1, - "vNicIdentifier": "somestring", + "receivedBroadcastPacketsAccumulated": 1, + "receivedBroadcastPacketsDelta": 1, + "receivedDiscardedPacketsAccumulated": 1, + "receivedDiscardedPacketsDelta": 1, + "receivedErrorPacketsAccumulated": 1, + "receivedErrorPacketsDelta": 1, + "receivedMulticastPacketsAccumulated": 1, + "receivedMulticastPacketsDelta": 1, + "receivedOctetsAccumulated": 1, + "receivedOctetsDelta": 1, + "receivedTotalPacketsAccumulated": 1, + "receivedTotalPacketsDelta": 1, + "receivedUnicastPacketsAccumulated": 1, + "receivedUnicastPacketsDelta": 1, + "transmittedBroadcastPacketsAccumulated": 1, + "transmittedBroadcastPacketsDelta": 1, + "transmittedDiscardedPacketsAccumulated": 1, + "transmittedDiscardedPacketsDelta": 1, + "transmittedErrorPacketsAccumulated": 1, + "transmittedErrorPacketsDelta": 1, + "transmittedMulticastPacketsAccumulated": 1, + "transmittedMulticastPacketsDelta": 1, + "transmittedOctetsAccumulated": 1, + "transmittedOctetsDelta": 1, + "transmittedTotalPacketsAccumulated": 1, + "transmittedTotalPacketsDelta": 1, + "transmittedUnicastPacketsAccumulated": 1, + "transmittedUnicastPacketsDelta": 1, + "vNicIdentifier": "somestring", "valuesAreSuspect": "true" - }, - { - "receivedBroadcastPacketsAccumulated": 1, - "receivedBroadcastPacketsDelta": 1, - "receivedDiscardedPacketsAccumulated": 1, - "receivedDiscardedPacketsDelta": 1, - "receivedErrorPacketsAccumulated": 1, - "receivedErrorPacketsDelta": 1, - "receivedMulticastPacketsAccumulated": 1, - "receivedMulticastPacketsDelta": 1, - "receivedOctetsAccumulated": 1, - "receivedOctetsDelta": 1, - "receivedTotalPacketsAccumulated": 1, - "receivedTotalPacketsDelta": 1, - "receivedUnicastPacketsAccumulated": 1, - "receivedUnicastPacketsDelta": 1, - "transmittedBroadcastPacketsAccumulated": 1, - "transmittedBroadcastPacketsDelta": 1, - "transmittedDiscardedPacketsAccumulated": 1, - "transmittedDiscardedPacketsDelta": 1, - "transmittedErrorPacketsAccumulated": 1, - "transmittedErrorPacketsDelta": 1, - "transmittedMulticastPacketsAccumulated": 1, - "transmittedMulticastPacketsDelta": 1, - "transmittedOctetsAccumulated": 1, - "transmittedOctetsDelta": 1, - "transmittedTotalPacketsAccumulated": 1, - "transmittedTotalPacketsDelta": 1, - "transmittedUnicastPacketsAccumulated": 1, - "transmittedUnicastPacketsDelta": 1, - "vNicIdentifier": "somestring", + }, + { + "receivedBroadcastPacketsAccumulated": 1, + "receivedBroadcastPacketsDelta": 1, + "receivedDiscardedPacketsAccumulated": 1, + "receivedDiscardedPacketsDelta": 1, + "receivedErrorPacketsAccumulated": 1, + "receivedErrorPacketsDelta": 1, + "receivedMulticastPacketsAccumulated": 1, + "receivedMulticastPacketsDelta": 1, + "receivedOctetsAccumulated": 1, + "receivedOctetsDelta": 1, + "receivedTotalPacketsAccumulated": 1, + "receivedTotalPacketsDelta": 1, + "receivedUnicastPacketsAccumulated": 1, + "receivedUnicastPacketsDelta": 1, + "transmittedBroadcastPacketsAccumulated": 1, + "transmittedBroadcastPacketsDelta": 1, + "transmittedDiscardedPacketsAccumulated": 1, + "transmittedDiscardedPacketsDelta": 1, + "transmittedErrorPacketsAccumulated": 1, + "transmittedErrorPacketsDelta": 1, + "transmittedMulticastPacketsAccumulated": 1, + "transmittedMulticastPacketsDelta": 1, + "transmittedOctetsAccumulated": 1, + "transmittedOctetsDelta": 1, + "transmittedTotalPacketsAccumulated": 1, + "transmittedTotalPacketsDelta": 1, + "transmittedUnicastPacketsAccumulated": 1, + "transmittedUnicastPacketsDelta": 1, + "vNicIdentifier": "somestring", "valuesAreSuspect": "true" } - ], + ], "vnfcScalingMetric": 1 - }, + }, "mobileFlowFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "appProtocolType": "somestring", - "appProtocolVersion": "somestring", - "applicationType": "somestring", - "cid": "somestring", - "connectionType": "somestring", - "ecgi": "somestring", - "flowDirection": "somestring", + ], + "appProtocolType": "somestring", + "appProtocolVersion": "somestring", + "applicationType": "somestring", + "cid": "somestring", + "connectionType": "somestring", + "ecgi": "somestring", + "flowDirection": "somestring", "gtpPerFlowMetrics": { - "avgBitErrorRate": 1, - "avgPacketDelayVariation": 1, - "avgPacketLatency": 1, - "avgReceiveThroughput": 1, - "avgTransmitThroughput": 1, - "durConnectionFailedStatus": 1, - "durTunnelFailedStatus": 1, - "flowActivatedBy": "somestring", - "flowActivationEpoch": 1, - "flowActivationMicrosec": 1, - "flowActivationTime": "somestring", - "flowDeactivatedBy": "somestring", - "flowDeactivationEpoch": 1, - "flowDeactivationMicrosec": 1, - "flowDeactivationTime": "somestring", - "flowStatus": "somestring", - "gtpConnectionStatus": "somestring", - "gtpTunnelStatus": "somestring", + "avgBitErrorRate": 1, + "avgPacketDelayVariation": 1, + "avgPacketLatency": 1, + "avgReceiveThroughput": 1, + "avgTransmitThroughput": 1, + "durConnectionFailedStatus": 1, + "durTunnelFailedStatus": 1, + "flowActivatedBy": "somestring", + "flowActivationEpoch": 1, + "flowActivationMicrosec": 1, + "flowActivationTime": "somestring", + "flowDeactivatedBy": "somestring", + "flowDeactivationEpoch": 1, + "flowDeactivationMicrosec": 1, + "flowDeactivationTime": "somestring", + "flowStatus": "somestring", + "gtpConnectionStatus": "somestring", + "gtpTunnelStatus": "somestring", "ipTosCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "ipTosList": [ - "somestring", + "somestring", "somestring" - ], - "largePacketRtt": 1, - "largePacketThreshold": 1, - "maxPacketDelayVariation": 1, - "maxReceiveBitRate": 1, - "maxTransmitBitRate": 1, + ], + "largePacketRtt": 1, + "largePacketThreshold": 1, + "maxPacketDelayVariation": 1, + "maxReceiveBitRate": 1, + "maxTransmitBitRate": 1, "mobileQciCosCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "mobileQciCosList": [ - "somestring", + "somestring", "somestring" - ], - "numActivationFailures": 1, - "numBitErrors": 1, - "numBytesReceived": 1, - "numBytesTransmitted": 1, - "numDroppedPackets": 1, - "numGtpEchoFailures": 1, - "numGtpTunnelErrors": 1, - "numHttpErrors": 1, - "numL7BytesReceived": 1, - "numL7BytesTransmitted": 1, - "numLostPackets": 1, - "numOutOfOrderPackets": 1, - "numPacketErrors": 1, - "numPacketsReceivedExclRetrans": 1, - "numPacketsReceivedInclRetrans": 1, - "numPacketsTransmittedInclRetrans": 1, - "numRetries": 1, - "numTimeouts": 1, - "numTunneledL7BytesReceived": 1, - "roundTripTime": 1, + ], + "numActivationFailures": 1, + "numBitErrors": 1, + "numBytesReceived": 1, + "numBytesTransmitted": 1, + "numDroppedPackets": 1, + "numGtpEchoFailures": 1, + "numGtpTunnelErrors": 1, + "numHttpErrors": 1, + "numL7BytesReceived": 1, + "numL7BytesTransmitted": 1, + "numLostPackets": 1, + "numOutOfOrderPackets": 1, + "numPacketErrors": 1, + "numPacketsReceivedExclRetrans": 1, + "numPacketsReceivedInclRetrans": 1, + "numPacketsTransmittedInclRetrans": 1, + "numRetries": 1, + "numTimeouts": 1, + "numTunneledL7BytesReceived": 1, + "roundTripTime": 1, "tcpFlagCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "tcpFlagList": [ - "somestring", + "somestring", "somestring" - ], + ], "timeToFirstByte": 1 - }, - "gtpProtocolType": "somestring", - "gtpVersion": "somestring", - "httpHeader": "somestring", - "imei": "somestring", - "imsi": "somestring", - "ipProtocolType": "somestring", - "ipVersion": "somestring", - "lac": "somestring", - "mcc": "somestring", - "mnc": "somestring", - "mobileFlowFieldsVersion": 1, - "msisdn": "somestring", - "otherEndpointIpAddress": "somestring", - "otherEndpointPort": 1, - "otherFunctionalRole": "somestring", - "rac": "somestring", - "radioAccessTechnology": "somestring", - "reportingEndpointIpAddr": "somestring", - "reportingEndpointPort": 1, - "sac": "somestring", - "samplingAlgorithm": 1, - "tac": "somestring", - "tunnelId": "somestring", + }, + "gtpProtocolType": "somestring", + "gtpVersion": "somestring", + "httpHeader": "somestring", + "imei": "somestring", + "imsi": "somestring", + "ipProtocolType": "somestring", + "ipVersion": "somestring", + "lac": "somestring", + "mcc": "somestring", + "mnc": "somestring", + "mobileFlowFieldsVersion": 1, + "msisdn": "somestring", + "otherEndpointIpAddress": "somestring", + "otherEndpointPort": 1, + "otherFunctionalRole": "somestring", + "rac": "somestring", + "radioAccessTechnology": "somestring", + "reportingEndpointIpAddr": "somestring", + "reportingEndpointPort": 1, + "sac": "somestring", + "samplingAlgorithm": 1, + "tac": "somestring", + "tunnelId": "somestring", "vlanId": "somestring" - }, + }, "otherFields": { "hashOfNameValuePairArrays": [ { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" - }, + }, { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" } - ], + ], "jsonObjects": [ { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" - }, + }, { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" } - ], + ], "nameValuePairs": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "otherFieldsVersion": 1 - }, + }, "sipSignalingFields": { "additionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "compressedSip": "somestring", - "correlator": "somestring", - "localIpAddress": "somestring", - "localPort": "somestring", - "remoteIpAddress": "somestring", - "remotePort": "somestring", - "sipSignalingFieldsVersion": 1, - "summarySip": "somestring", + ], + "compressedSip": "somestring", + "correlator": "somestring", + "localIpAddress": "somestring", + "localPort": "somestring", + "remoteIpAddress": "somestring", + "remotePort": "somestring", + "sipSignalingFieldsVersion": 1, + "summarySip": "somestring", "vendorVnfNameFields": { - "vendorName": "somestring", - "vfModuleName": "somestring", + "vendorName": "somestring", + "vfModuleName": "somestring", "vnfName": "somestring" } - }, + }, "stateChangeFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "newState": "inService", - "oldState": "inService", - "stateChangeFieldsVersion": 1, + ], + "newState": "inService", + "oldState": "inService", + "stateChangeFieldsVersion": 1, "stateInterface": "somestring" - }, + }, "syslogFields": { - "additionalFields": "somestring", - "eventSourceHost": "somestring", - "eventSourceType": "somestring", - "syslogFacility": 1, - "syslogFieldsVersion": 1, - "syslogMsg": "somestring", - "syslogPri": 1, - "syslogProc": "somestring", - "syslogProcId": 1, - "syslogSData": "somestring", - "syslogSdId": "somestring", - "syslogSev": "Alert", - "syslogTag": "somestring", + "additionalFields": "somestring", + "eventSourceHost": "somestring", + "eventSourceType": "somestring", + "syslogFacility": 1, + "syslogFieldsVersion": 1, + "syslogMsg": "somestring", + "syslogPri": 1, + "syslogProc": "somestring", + "syslogProcId": 1, + "syslogSData": "somestring", + "syslogSdId": "somestring", + "syslogSev": "Alert", + "syslogTag": "somestring", "syslogVer": 1 - }, + }, "thresholdCrossingAlertFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "additionalParameters": [ { - "criticality": "CRIT", - "name": "somestring", - "thresholdCrossed": "somestring", + "criticality": "CRIT", + "name": "somestring", + "thresholdCrossed": "somestring", "value": "somestring" - }, + }, { - "criticality": "CRIT", - "name": "somestring", - "thresholdCrossed": "somestring", + "criticality": "CRIT", + "name": "somestring", + "thresholdCrossed": "somestring", "value": "somestring" } - ], - "alertAction": "CLEAR", - "alertDescription": "somestring", - "alertType": "CARD-ANOMALY", - "alertValue": "somestring", + ], + "alertAction": "CLEAR", + "alertDescription": "somestring", + "alertType": "CARD-ANOMALY", + "alertValue": "somestring", "associatedAlertIdList": [ - "somestring", + "somestring", "somestring" - ], - "collectionTimestamp": "somestring", - "dataCollector": "somestring", - "elementType": "somestring", - "eventSeverity": "CRITICAL", - "eventStartTimestamp": "somestring", - "interfaceName": "somestring", - "networkService": "somestring", - "possibleRootCause": "somestring", + ], + "collectionTimestamp": "somestring", + "dataCollector": "somestring", + "elementType": "somestring", + "eventSeverity": "CRITICAL", + "eventStartTimestamp": "somestring", + "interfaceName": "somestring", + "networkService": "somestring", + "possibleRootCause": "somestring", "thresholdCrossingFieldsVersion": 1 - }, + }, "voiceQualityFields": { "additionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "calleeSideCodec": "somestring", - "callerSideCodec": "somestring", - "correlator": "somestring", + ], + "calleeSideCodec": "somestring", + "callerSideCodec": "somestring", + "correlator": "somestring", "endOfCallVqmSummaries": { - "adjacencyName": "somestring", - "endpointDescription": "Caller", - "endpointJitter": 1, - "endpointRtpOctetsDiscarded": 1, - "endpointRtpOctetsReceived": 1, - "endpointRtpOctetsSent": 1, - "endpointRtpPacketsDiscarded": 1, - "endpointRtpPacketsReceived": 1, - "endpointRtpPacketsSent": 1, - "localJitter": 1, - "localRtpOctetsDiscarded": 1, - "localRtpOctetsReceived": 1, - "localRtpOctetsSent": 1, - "localRtpPacketsDiscarded": 1, - "localRtpPacketsReceived": 1, - "localRtpPacketsSent": 1, - "mosCqe": 1, - "packetLossPercent": 1, - "packetsLost": 1, - "rFactor": 1, + "adjacencyName": "somestring", + "endpointDescription": "Caller", + "endpointJitter": 1, + "endpointRtpOctetsDiscarded": 1, + "endpointRtpOctetsReceived": 1, + "endpointRtpOctetsSent": 1, + "endpointRtpPacketsDiscarded": 1, + "endpointRtpPacketsReceived": 1, + "endpointRtpPacketsSent": 1, + "localJitter": 1, + "localRtpOctetsDiscarded": 1, + "localRtpOctetsReceived": 1, + "localRtpOctetsSent": 1, + "localRtpPacketsDiscarded": 1, + "localRtpPacketsReceived": 1, + "localRtpPacketsSent": 1, + "mosCqe": 1, + "packetLossPercent": 1, + "packetsLost": 1, + "rFactor": 1, "roundTripDelay": 1 - }, - "midCallRtcp": "somestring", - "phoneNumber": "somestring", + }, + "midCallRtcp": "somestring", + "phoneNumber": "somestring", "vendorVnfNameFields": { - "vendorName": "somestring", - "vfModuleName": "somestring", + "vendorName": "somestring", + "vfModuleName": "somestring", "vnfName": "somestring" - }, + }, "voiceQualityFieldsVersion": 1 } } @@ -964,8 +964,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -982,8 +982,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1000,8 +1000,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1018,8 +1018,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1063,850 +1063,850 @@ Body :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - event | No | :ref:`event ` | | | + event | No | :ref:`event ` | | | .. code-block:: javascript { "event": { "commonEventHeader": { - "domain": "fault", - "eventId": "somestring", - "eventName": "somestring", - "eventType": "somestring", - "internalHeaderFields": {}, - "lastEpochMicrosec": 1, - "nfNamingCode": "somestring", - "nfcNamingCode": "somestring", - "priority": "High", - "reportingEntityId": "somestring", - "reportingEntityName": "somestring", - "sequence": 1, - "sourceId": "somestring", - "sourceName": "somestring", - "startEpochMicrosec": 1, + "domain": "fault", + "eventId": "somestring", + "eventName": "somestring", + "eventType": "somestring", + "internalHeaderFields": {}, + "lastEpochMicrosec": 1, + "nfNamingCode": "somestring", + "nfcNamingCode": "somestring", + "priority": "High", + "reportingEntityId": "somestring", + "reportingEntityName": "somestring", + "sequence": 1, + "sourceId": "somestring", + "sourceName": "somestring", + "startEpochMicrosec": 1, "version": 1 - }, + }, "faultFields": { "alarmAdditionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "alarmCondition": "somestring", - "alarmInterfaceA": "somestring", - "eventCategory": "somestring", - "eventSeverity": "CRITICAL", - "eventSourceType": "somestring", - "faultFieldsVersion": 1, - "specificProblem": "somestring", + ], + "alarmCondition": "somestring", + "alarmInterfaceA": "somestring", + "eventCategory": "somestring", + "eventSeverity": "CRITICAL", + "eventSourceType": "somestring", + "faultFieldsVersion": 1, + "specificProblem": "somestring", "vfStatus": "Active" - }, + }, "heartbeatFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "heartbeatFieldsVersion": 1, + ], + "heartbeatFieldsVersion": 1, "heartbeatInterval": 1 - }, + }, "measurementsForVfScalingFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "additionalMeasurements": [ { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" - }, + }, { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" } - ], + ], "additionalObjects": [ { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" - }, + }, { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" } - ], + ], "codecUsageArray": [ { - "codecIdentifier": "somestring", + "codecIdentifier": "somestring", "numberInUse": 1 - }, + }, { - "codecIdentifier": "somestring", + "codecIdentifier": "somestring", "numberInUse": 1 } - ], - "concurrentSessions": 1, - "configuredEntities": 1, + ], + "concurrentSessions": 1, + "configuredEntities": 1, "cpuUsageArray": [ { - "cpuIdentifier": "somestring", - "cpuIdle": 1, - "cpuUsageInterrupt": 1, - "cpuUsageNice": 1, - "cpuUsageSoftIrq": 1, - "cpuUsageSteal": 1, - "cpuUsageSystem": 1, - "cpuUsageUser": 1, - "cpuWait": 1, + "cpuIdentifier": "somestring", + "cpuIdle": 1, + "cpuUsageInterrupt": 1, + "cpuUsageNice": 1, + "cpuUsageSoftIrq": 1, + "cpuUsageSteal": 1, + "cpuUsageSystem": 1, + "cpuUsageUser": 1, + "cpuWait": 1, "percentUsage": 1 - }, - { - "cpuIdentifier": "somestring", - "cpuIdle": 1, - "cpuUsageInterrupt": 1, - "cpuUsageNice": 1, - "cpuUsageSoftIrq": 1, - "cpuUsageSteal": 1, - "cpuUsageSystem": 1, - "cpuUsageUser": 1, - "cpuWait": 1, + }, + { + "cpuIdentifier": "somestring", + "cpuIdle": 1, + "cpuUsageInterrupt": 1, + "cpuUsageNice": 1, + "cpuUsageSoftIrq": 1, + "cpuUsageSteal": 1, + "cpuUsageSystem": 1, + "cpuUsageUser": 1, + "cpuWait": 1, "percentUsage": 1 } - ], + ], "diskUsageArray": [ { - "diskIdentifier": "somestring", - "diskIoTimeAvg": 1, - "diskIoTimeLast": 1, - "diskIoTimeMax": 1, - "diskIoTimeMin": 1, - "diskMergedReadAvg": 1, - "diskMergedReadLast": 1, - "diskMergedReadMax": 1, - "diskMergedReadMin": 1, - "diskMergedWriteAvg": 1, - "diskMergedWriteLast": 1, - "diskMergedWriteMax": 1, - "diskMergedWriteMin": 1, - "diskOctetsReadAvg": 1, - "diskOctetsReadLast": 1, - "diskOctetsReadMax": 1, - "diskOctetsReadMin": 1, - "diskOctetsWriteAvg": 1, - "diskOctetsWriteLast": 1, - "diskOctetsWriteMax": 1, - "diskOctetsWriteMin": 1, - "diskOpsReadAvg": 1, - "diskOpsReadLast": 1, - "diskOpsReadMax": 1, - "diskOpsReadMin": 1, - "diskOpsWriteAvg": 1, - "diskOpsWriteLast": 1, - "diskOpsWriteMax": 1, - "diskOpsWriteMin": 1, - "diskPendingOperationsAvg": 1, - "diskPendingOperationsLast": 1, - "diskPendingOperationsMax": 1, - "diskPendingOperationsMin": 1, - "diskTimeReadAvg": 1, - "diskTimeReadLast": 1, - "diskTimeReadMax": 1, - "diskTimeReadMin": 1, - "diskTimeWriteAvg": 1, - "diskTimeWriteLast": 1, - "diskTimeWriteMax": 1, + "diskIdentifier": "somestring", + "diskIoTimeAvg": 1, + "diskIoTimeLast": 1, + "diskIoTimeMax": 1, + "diskIoTimeMin": 1, + "diskMergedReadAvg": 1, + "diskMergedReadLast": 1, + "diskMergedReadMax": 1, + "diskMergedReadMin": 1, + "diskMergedWriteAvg": 1, + "diskMergedWriteLast": 1, + "diskMergedWriteMax": 1, + "diskMergedWriteMin": 1, + "diskOctetsReadAvg": 1, + "diskOctetsReadLast": 1, + "diskOctetsReadMax": 1, + "diskOctetsReadMin": 1, + "diskOctetsWriteAvg": 1, + "diskOctetsWriteLast": 1, + "diskOctetsWriteMax": 1, + "diskOctetsWriteMin": 1, + "diskOpsReadAvg": 1, + "diskOpsReadLast": 1, + "diskOpsReadMax": 1, + "diskOpsReadMin": 1, + "diskOpsWriteAvg": 1, + "diskOpsWriteLast": 1, + "diskOpsWriteMax": 1, + "diskOpsWriteMin": 1, + "diskPendingOperationsAvg": 1, + "diskPendingOperationsLast": 1, + "diskPendingOperationsMax": 1, + "diskPendingOperationsMin": 1, + "diskTimeReadAvg": 1, + "diskTimeReadLast": 1, + "diskTimeReadMax": 1, + "diskTimeReadMin": 1, + "diskTimeWriteAvg": 1, + "diskTimeWriteLast": 1, + "diskTimeWriteMax": 1, "diskTimeWriteMin": 1 - }, - { - "diskIdentifier": "somestring", - "diskIoTimeAvg": 1, - "diskIoTimeLast": 1, - "diskIoTimeMax": 1, - "diskIoTimeMin": 1, - "diskMergedReadAvg": 1, - "diskMergedReadLast": 1, - "diskMergedReadMax": 1, - "diskMergedReadMin": 1, - "diskMergedWriteAvg": 1, - "diskMergedWriteLast": 1, - "diskMergedWriteMax": 1, - "diskMergedWriteMin": 1, - "diskOctetsReadAvg": 1, - "diskOctetsReadLast": 1, - "diskOctetsReadMax": 1, - "diskOctetsReadMin": 1, - "diskOctetsWriteAvg": 1, - "diskOctetsWriteLast": 1, - "diskOctetsWriteMax": 1, - "diskOctetsWriteMin": 1, - "diskOpsReadAvg": 1, - "diskOpsReadLast": 1, - "diskOpsReadMax": 1, - "diskOpsReadMin": 1, - "diskOpsWriteAvg": 1, - "diskOpsWriteLast": 1, - "diskOpsWriteMax": 1, - "diskOpsWriteMin": 1, - "diskPendingOperationsAvg": 1, - "diskPendingOperationsLast": 1, - "diskPendingOperationsMax": 1, - "diskPendingOperationsMin": 1, - "diskTimeReadAvg": 1, - "diskTimeReadLast": 1, - "diskTimeReadMax": 1, - "diskTimeReadMin": 1, - "diskTimeWriteAvg": 1, - "diskTimeWriteLast": 1, - "diskTimeWriteMax": 1, + }, + { + "diskIdentifier": "somestring", + "diskIoTimeAvg": 1, + "diskIoTimeLast": 1, + "diskIoTimeMax": 1, + "diskIoTimeMin": 1, + "diskMergedReadAvg": 1, + "diskMergedReadLast": 1, + "diskMergedReadMax": 1, + "diskMergedReadMin": 1, + "diskMergedWriteAvg": 1, + "diskMergedWriteLast": 1, + "diskMergedWriteMax": 1, + "diskMergedWriteMin": 1, + "diskOctetsReadAvg": 1, + "diskOctetsReadLast": 1, + "diskOctetsReadMax": 1, + "diskOctetsReadMin": 1, + "diskOctetsWriteAvg": 1, + "diskOctetsWriteLast": 1, + "diskOctetsWriteMax": 1, + "diskOctetsWriteMin": 1, + "diskOpsReadAvg": 1, + "diskOpsReadLast": 1, + "diskOpsReadMax": 1, + "diskOpsReadMin": 1, + "diskOpsWriteAvg": 1, + "diskOpsWriteLast": 1, + "diskOpsWriteMax": 1, + "diskOpsWriteMin": 1, + "diskPendingOperationsAvg": 1, + "diskPendingOperationsLast": 1, + "diskPendingOperationsMax": 1, + "diskPendingOperationsMin": 1, + "diskTimeReadAvg": 1, + "diskTimeReadLast": 1, + "diskTimeReadMax": 1, + "diskTimeReadMin": 1, + "diskTimeWriteAvg": 1, + "diskTimeWriteLast": 1, + "diskTimeWriteMax": 1, "diskTimeWriteMin": 1 } - ], + ], "featureUsageArray": [ { - "featureIdentifier": "somestring", + "featureIdentifier": "somestring", "featureUtilization": 1 - }, + }, { - "featureIdentifier": "somestring", + "featureIdentifier": "somestring", "featureUtilization": 1 } - ], + ], "filesystemUsageArray": [ { - "blockConfigured": 1, - "blockIops": 1, - "blockUsed": 1, - "ephemeralConfigured": 1, - "ephemeralIops": 1, - "ephemeralUsed": 1, + "blockConfigured": 1, + "blockIops": 1, + "blockUsed": 1, + "ephemeralConfigured": 1, + "ephemeralIops": 1, + "ephemeralUsed": 1, "filesystemName": "somestring" - }, - { - "blockConfigured": 1, - "blockIops": 1, - "blockUsed": 1, - "ephemeralConfigured": 1, - "ephemeralIops": 1, - "ephemeralUsed": 1, + }, + { + "blockConfigured": 1, + "blockIops": 1, + "blockUsed": 1, + "ephemeralConfigured": 1, + "ephemeralIops": 1, + "ephemeralUsed": 1, "filesystemName": "somestring" } - ], + ], "latencyDistribution": [ { - "countsInTheBucket": 1, - "highEndOfLatencyBucket": 1, + "countsInTheBucket": 1, + "highEndOfLatencyBucket": 1, "lowEndOfLatencyBucket": 1 - }, + }, { - "countsInTheBucket": 1, - "highEndOfLatencyBucket": 1, + "countsInTheBucket": 1, + "highEndOfLatencyBucket": 1, "lowEndOfLatencyBucket": 1 } - ], - "meanRequestLatency": 1, - "measurementInterval": 1, - "measurementsForVfScalingVersion": 1, + ], + "meanRequestLatency": 1, + "measurementInterval": 1, + "measurementsForVfScalingVersion": 1, "memoryUsageArray": [ { - "memoryBuffered": 1, - "memoryCached": 1, - "memoryConfigured": 1, - "memoryFree": 1, - "memorySlabRecl": 1, - "memorySlabUnrecl": 1, - "memoryUsed": 1, + "memoryBuffered": 1, + "memoryCached": 1, + "memoryConfigured": 1, + "memoryFree": 1, + "memorySlabRecl": 1, + "memorySlabUnrecl": 1, + "memoryUsed": 1, "vmIdentifier": "somestring" - }, - { - "memoryBuffered": 1, - "memoryCached": 1, - "memoryConfigured": 1, - "memoryFree": 1, - "memorySlabRecl": 1, - "memorySlabUnrecl": 1, - "memoryUsed": 1, + }, + { + "memoryBuffered": 1, + "memoryCached": 1, + "memoryConfigured": 1, + "memoryFree": 1, + "memorySlabRecl": 1, + "memorySlabUnrecl": 1, + "memoryUsed": 1, "vmIdentifier": "somestring" } - ], - "numberOfMediaPortsInUse": 1, - "requestRate": 1, + ], + "numberOfMediaPortsInUse": 1, + "requestRate": 1, "vNicPerformanceArray": [ { - "receivedBroadcastPacketsAccumulated": 1, - "receivedBroadcastPacketsDelta": 1, - "receivedDiscardedPacketsAccumulated": 1, - "receivedDiscardedPacketsDelta": 1, - "receivedErrorPacketsAccumulated": 1, - "receivedErrorPacketsDelta": 1, - "receivedMulticastPacketsAccumulated": 1, - "receivedMulticastPacketsDelta": 1, - "receivedOctetsAccumulated": 1, - "receivedOctetsDelta": 1, - "receivedTotalPacketsAccumulated": 1, - "receivedTotalPacketsDelta": 1, - "receivedUnicastPacketsAccumulated": 1, - "receivedUnicastPacketsDelta": 1, - "transmittedBroadcastPacketsAccumulated": 1, - "transmittedBroadcastPacketsDelta": 1, - "transmittedDiscardedPacketsAccumulated": 1, - "transmittedDiscardedPacketsDelta": 1, - "transmittedErrorPacketsAccumulated": 1, - "transmittedErrorPacketsDelta": 1, - "transmittedMulticastPacketsAccumulated": 1, - "transmittedMulticastPacketsDelta": 1, - "transmittedOctetsAccumulated": 1, - "transmittedOctetsDelta": 1, - "transmittedTotalPacketsAccumulated": 1, - "transmittedTotalPacketsDelta": 1, - "transmittedUnicastPacketsAccumulated": 1, - "transmittedUnicastPacketsDelta": 1, - "vNicIdentifier": "somestring", + "receivedBroadcastPacketsAccumulated": 1, + "receivedBroadcastPacketsDelta": 1, + "receivedDiscardedPacketsAccumulated": 1, + "receivedDiscardedPacketsDelta": 1, + "receivedErrorPacketsAccumulated": 1, + "receivedErrorPacketsDelta": 1, + "receivedMulticastPacketsAccumulated": 1, + "receivedMulticastPacketsDelta": 1, + "receivedOctetsAccumulated": 1, + "receivedOctetsDelta": 1, + "receivedTotalPacketsAccumulated": 1, + "receivedTotalPacketsDelta": 1, + "receivedUnicastPacketsAccumulated": 1, + "receivedUnicastPacketsDelta": 1, + "transmittedBroadcastPacketsAccumulated": 1, + "transmittedBroadcastPacketsDelta": 1, + "transmittedDiscardedPacketsAccumulated": 1, + "transmittedDiscardedPacketsDelta": 1, + "transmittedErrorPacketsAccumulated": 1, + "transmittedErrorPacketsDelta": 1, + "transmittedMulticastPacketsAccumulated": 1, + "transmittedMulticastPacketsDelta": 1, + "transmittedOctetsAccumulated": 1, + "transmittedOctetsDelta": 1, + "transmittedTotalPacketsAccumulated": 1, + "transmittedTotalPacketsDelta": 1, + "transmittedUnicastPacketsAccumulated": 1, + "transmittedUnicastPacketsDelta": 1, + "vNicIdentifier": "somestring", "valuesAreSuspect": "true" - }, - { - "receivedBroadcastPacketsAccumulated": 1, - "receivedBroadcastPacketsDelta": 1, - "receivedDiscardedPacketsAccumulated": 1, - "receivedDiscardedPacketsDelta": 1, - "receivedErrorPacketsAccumulated": 1, - "receivedErrorPacketsDelta": 1, - "receivedMulticastPacketsAccumulated": 1, - "receivedMulticastPacketsDelta": 1, - "receivedOctetsAccumulated": 1, - "receivedOctetsDelta": 1, - "receivedTotalPacketsAccumulated": 1, - "receivedTotalPacketsDelta": 1, - "receivedUnicastPacketsAccumulated": 1, - "receivedUnicastPacketsDelta": 1, - "transmittedBroadcastPacketsAccumulated": 1, - "transmittedBroadcastPacketsDelta": 1, - "transmittedDiscardedPacketsAccumulated": 1, - "transmittedDiscardedPacketsDelta": 1, - "transmittedErrorPacketsAccumulated": 1, - "transmittedErrorPacketsDelta": 1, - "transmittedMulticastPacketsAccumulated": 1, - "transmittedMulticastPacketsDelta": 1, - "transmittedOctetsAccumulated": 1, - "transmittedOctetsDelta": 1, - "transmittedTotalPacketsAccumulated": 1, - "transmittedTotalPacketsDelta": 1, - "transmittedUnicastPacketsAccumulated": 1, - "transmittedUnicastPacketsDelta": 1, - "vNicIdentifier": "somestring", + }, + { + "receivedBroadcastPacketsAccumulated": 1, + "receivedBroadcastPacketsDelta": 1, + "receivedDiscardedPacketsAccumulated": 1, + "receivedDiscardedPacketsDelta": 1, + "receivedErrorPacketsAccumulated": 1, + "receivedErrorPacketsDelta": 1, + "receivedMulticastPacketsAccumulated": 1, + "receivedMulticastPacketsDelta": 1, + "receivedOctetsAccumulated": 1, + "receivedOctetsDelta": 1, + "receivedTotalPacketsAccumulated": 1, + "receivedTotalPacketsDelta": 1, + "receivedUnicastPacketsAccumulated": 1, + "receivedUnicastPacketsDelta": 1, + "transmittedBroadcastPacketsAccumulated": 1, + "transmittedBroadcastPacketsDelta": 1, + "transmittedDiscardedPacketsAccumulated": 1, + "transmittedDiscardedPacketsDelta": 1, + "transmittedErrorPacketsAccumulated": 1, + "transmittedErrorPacketsDelta": 1, + "transmittedMulticastPacketsAccumulated": 1, + "transmittedMulticastPacketsDelta": 1, + "transmittedOctetsAccumulated": 1, + "transmittedOctetsDelta": 1, + "transmittedTotalPacketsAccumulated": 1, + "transmittedTotalPacketsDelta": 1, + "transmittedUnicastPacketsAccumulated": 1, + "transmittedUnicastPacketsDelta": 1, + "vNicIdentifier": "somestring", "valuesAreSuspect": "true" } - ], + ], "vnfcScalingMetric": 1 - }, + }, "mobileFlowFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "appProtocolType": "somestring", - "appProtocolVersion": "somestring", - "applicationType": "somestring", - "cid": "somestring", - "connectionType": "somestring", - "ecgi": "somestring", - "flowDirection": "somestring", + ], + "appProtocolType": "somestring", + "appProtocolVersion": "somestring", + "applicationType": "somestring", + "cid": "somestring", + "connectionType": "somestring", + "ecgi": "somestring", + "flowDirection": "somestring", "gtpPerFlowMetrics": { - "avgBitErrorRate": 1, - "avgPacketDelayVariation": 1, - "avgPacketLatency": 1, - "avgReceiveThroughput": 1, - "avgTransmitThroughput": 1, - "durConnectionFailedStatus": 1, - "durTunnelFailedStatus": 1, - "flowActivatedBy": "somestring", - "flowActivationEpoch": 1, - "flowActivationMicrosec": 1, - "flowActivationTime": "somestring", - "flowDeactivatedBy": "somestring", - "flowDeactivationEpoch": 1, - "flowDeactivationMicrosec": 1, - "flowDeactivationTime": "somestring", - "flowStatus": "somestring", - "gtpConnectionStatus": "somestring", - "gtpTunnelStatus": "somestring", + "avgBitErrorRate": 1, + "avgPacketDelayVariation": 1, + "avgPacketLatency": 1, + "avgReceiveThroughput": 1, + "avgTransmitThroughput": 1, + "durConnectionFailedStatus": 1, + "durTunnelFailedStatus": 1, + "flowActivatedBy": "somestring", + "flowActivationEpoch": 1, + "flowActivationMicrosec": 1, + "flowActivationTime": "somestring", + "flowDeactivatedBy": "somestring", + "flowDeactivationEpoch": 1, + "flowDeactivationMicrosec": 1, + "flowDeactivationTime": "somestring", + "flowStatus": "somestring", + "gtpConnectionStatus": "somestring", + "gtpTunnelStatus": "somestring", "ipTosCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "ipTosList": [ - "somestring", + "somestring", "somestring" - ], - "largePacketRtt": 1, - "largePacketThreshold": 1, - "maxPacketDelayVariation": 1, - "maxReceiveBitRate": 1, - "maxTransmitBitRate": 1, + ], + "largePacketRtt": 1, + "largePacketThreshold": 1, + "maxPacketDelayVariation": 1, + "maxReceiveBitRate": 1, + "maxTransmitBitRate": 1, "mobileQciCosCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "mobileQciCosList": [ - "somestring", + "somestring", "somestring" - ], - "numActivationFailures": 1, - "numBitErrors": 1, - "numBytesReceived": 1, - "numBytesTransmitted": 1, - "numDroppedPackets": 1, - "numGtpEchoFailures": 1, - "numGtpTunnelErrors": 1, - "numHttpErrors": 1, - "numL7BytesReceived": 1, - "numL7BytesTransmitted": 1, - "numLostPackets": 1, - "numOutOfOrderPackets": 1, - "numPacketErrors": 1, - "numPacketsReceivedExclRetrans": 1, - "numPacketsReceivedInclRetrans": 1, - "numPacketsTransmittedInclRetrans": 1, - "numRetries": 1, - "numTimeouts": 1, - "numTunneledL7BytesReceived": 1, - "roundTripTime": 1, + ], + "numActivationFailures": 1, + "numBitErrors": 1, + "numBytesReceived": 1, + "numBytesTransmitted": 1, + "numDroppedPackets": 1, + "numGtpEchoFailures": 1, + "numGtpTunnelErrors": 1, + "numHttpErrors": 1, + "numL7BytesReceived": 1, + "numL7BytesTransmitted": 1, + "numLostPackets": 1, + "numOutOfOrderPackets": 1, + "numPacketErrors": 1, + "numPacketsReceivedExclRetrans": 1, + "numPacketsReceivedInclRetrans": 1, + "numPacketsTransmittedInclRetrans": 1, + "numRetries": 1, + "numTimeouts": 1, + "numTunneledL7BytesReceived": 1, + "roundTripTime": 1, "tcpFlagCountList": [ [ - 1, + 1, 1 - ], + ], [ - 1, + 1, 1 ] - ], + ], "tcpFlagList": [ - "somestring", + "somestring", "somestring" - ], + ], "timeToFirstByte": 1 - }, - "gtpProtocolType": "somestring", - "gtpVersion": "somestring", - "httpHeader": "somestring", - "imei": "somestring", - "imsi": "somestring", - "ipProtocolType": "somestring", - "ipVersion": "somestring", - "lac": "somestring", - "mcc": "somestring", - "mnc": "somestring", - "mobileFlowFieldsVersion": 1, - "msisdn": "somestring", - "otherEndpointIpAddress": "somestring", - "otherEndpointPort": 1, - "otherFunctionalRole": "somestring", - "rac": "somestring", - "radioAccessTechnology": "somestring", - "reportingEndpointIpAddr": "somestring", - "reportingEndpointPort": 1, - "sac": "somestring", - "samplingAlgorithm": 1, - "tac": "somestring", - "tunnelId": "somestring", + }, + "gtpProtocolType": "somestring", + "gtpVersion": "somestring", + "httpHeader": "somestring", + "imei": "somestring", + "imsi": "somestring", + "ipProtocolType": "somestring", + "ipVersion": "somestring", + "lac": "somestring", + "mcc": "somestring", + "mnc": "somestring", + "mobileFlowFieldsVersion": 1, + "msisdn": "somestring", + "otherEndpointIpAddress": "somestring", + "otherEndpointPort": 1, + "otherFunctionalRole": "somestring", + "rac": "somestring", + "radioAccessTechnology": "somestring", + "reportingEndpointIpAddr": "somestring", + "reportingEndpointPort": 1, + "sac": "somestring", + "samplingAlgorithm": 1, + "tac": "somestring", + "tunnelId": "somestring", "vlanId": "somestring" - }, + }, "otherFields": { "hashOfNameValuePairArrays": [ { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" - }, + }, { "arrayOfFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "name": "somestring" } - ], + ], "jsonObjects": [ { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" - }, + }, { - "nfSubscribedObjectName": "somestring", - "nfSubscriptionId": "somestring", + "nfSubscribedObjectName": "somestring", + "nfSubscriptionId": "somestring", "objectInstances": [ { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] - }, + }, { - "objectInstance": {}, - "objectInstanceEpochMicrosec": 1, + "objectInstance": {}, + "objectInstanceEpochMicrosec": 1, "objectKeys": [ { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" - }, + }, { - "keyName": "somestring", - "keyOrder": 1, + "keyName": "somestring", + "keyOrder": 1, "keyValue": "somestring" } ] } - ], - "objectName": "somestring", - "objectSchema": "somestring", + ], + "objectName": "somestring", + "objectSchema": "somestring", "objectSchemaUrl": "somestring" } - ], + ], "nameValuePairs": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "otherFieldsVersion": 1 - }, + }, "sipSignalingFields": { "additionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "compressedSip": "somestring", - "correlator": "somestring", - "localIpAddress": "somestring", - "localPort": "somestring", - "remoteIpAddress": "somestring", - "remotePort": "somestring", - "sipSignalingFieldsVersion": 1, - "summarySip": "somestring", + ], + "compressedSip": "somestring", + "correlator": "somestring", + "localIpAddress": "somestring", + "localPort": "somestring", + "remoteIpAddress": "somestring", + "remotePort": "somestring", + "sipSignalingFieldsVersion": 1, + "summarySip": "somestring", "vendorVnfNameFields": { - "vendorName": "somestring", - "vfModuleName": "somestring", + "vendorName": "somestring", + "vfModuleName": "somestring", "vnfName": "somestring" } - }, + }, "stateChangeFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "newState": "inService", - "oldState": "inService", - "stateChangeFieldsVersion": 1, + ], + "newState": "inService", + "oldState": "inService", + "stateChangeFieldsVersion": 1, "stateInterface": "somestring" - }, + }, "syslogFields": { - "additionalFields": "somestring", - "eventSourceHost": "somestring", - "eventSourceType": "somestring", - "syslogFacility": 1, - "syslogFieldsVersion": 1, - "syslogMsg": "somestring", - "syslogPri": 1, - "syslogProc": "somestring", - "syslogProcId": 1, - "syslogSData": "somestring", - "syslogSdId": "somestring", - "syslogSev": "Alert", - "syslogTag": "somestring", + "additionalFields": "somestring", + "eventSourceHost": "somestring", + "eventSourceType": "somestring", + "syslogFacility": 1, + "syslogFieldsVersion": 1, + "syslogMsg": "somestring", + "syslogPri": 1, + "syslogProc": "somestring", + "syslogProcId": 1, + "syslogSData": "somestring", + "syslogSdId": "somestring", + "syslogSev": "Alert", + "syslogTag": "somestring", "syslogVer": 1 - }, + }, "thresholdCrossingAlertFields": { "additionalFields": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], + ], "additionalParameters": [ { - "criticality": "CRIT", - "name": "somestring", - "thresholdCrossed": "somestring", + "criticality": "CRIT", + "name": "somestring", + "thresholdCrossed": "somestring", "value": "somestring" - }, + }, { - "criticality": "CRIT", - "name": "somestring", - "thresholdCrossed": "somestring", + "criticality": "CRIT", + "name": "somestring", + "thresholdCrossed": "somestring", "value": "somestring" } - ], - "alertAction": "CLEAR", - "alertDescription": "somestring", - "alertType": "CARD-ANOMALY", - "alertValue": "somestring", + ], + "alertAction": "CLEAR", + "alertDescription": "somestring", + "alertType": "CARD-ANOMALY", + "alertValue": "somestring", "associatedAlertIdList": [ - "somestring", + "somestring", "somestring" - ], - "collectionTimestamp": "somestring", - "dataCollector": "somestring", - "elementType": "somestring", - "eventSeverity": "CRITICAL", - "eventStartTimestamp": "somestring", - "interfaceName": "somestring", - "networkService": "somestring", - "possibleRootCause": "somestring", + ], + "collectionTimestamp": "somestring", + "dataCollector": "somestring", + "elementType": "somestring", + "eventSeverity": "CRITICAL", + "eventStartTimestamp": "somestring", + "interfaceName": "somestring", + "networkService": "somestring", + "possibleRootCause": "somestring", "thresholdCrossingFieldsVersion": 1 - }, + }, "voiceQualityFields": { "additionalInformation": [ { - "name": "somestring", + "name": "somestring", "value": "somestring" - }, + }, { - "name": "somestring", + "name": "somestring", "value": "somestring" } - ], - "calleeSideCodec": "somestring", - "callerSideCodec": "somestring", - "correlator": "somestring", + ], + "calleeSideCodec": "somestring", + "callerSideCodec": "somestring", + "correlator": "somestring", "endOfCallVqmSummaries": { - "adjacencyName": "somestring", - "endpointDescription": "Caller", - "endpointJitter": 1, - "endpointRtpOctetsDiscarded": 1, - "endpointRtpOctetsReceived": 1, - "endpointRtpOctetsSent": 1, - "endpointRtpPacketsDiscarded": 1, - "endpointRtpPacketsReceived": 1, - "endpointRtpPacketsSent": 1, - "localJitter": 1, - "localRtpOctetsDiscarded": 1, - "localRtpOctetsReceived": 1, - "localRtpOctetsSent": 1, - "localRtpPacketsDiscarded": 1, - "localRtpPacketsReceived": 1, - "localRtpPacketsSent": 1, - "mosCqe": 1, - "packetLossPercent": 1, - "packetsLost": 1, - "rFactor": 1, + "adjacencyName": "somestring", + "endpointDescription": "Caller", + "endpointJitter": 1, + "endpointRtpOctetsDiscarded": 1, + "endpointRtpOctetsReceived": 1, + "endpointRtpOctetsSent": 1, + "endpointRtpPacketsDiscarded": 1, + "endpointRtpPacketsReceived": 1, + "endpointRtpPacketsSent": 1, + "localJitter": 1, + "localRtpOctetsDiscarded": 1, + "localRtpOctetsReceived": 1, + "localRtpOctetsSent": 1, + "localRtpPacketsDiscarded": 1, + "localRtpPacketsReceived": 1, + "localRtpPacketsSent": 1, + "mosCqe": 1, + "packetLossPercent": 1, + "packetsLost": 1, + "rFactor": 1, "roundTripDelay": 1 - }, - "midCallRtcp": "somestring", - "phoneNumber": "somestring", + }, + "midCallRtcp": "somestring", + "phoneNumber": "somestring", "vendorVnfNameFields": { - "vendorName": "somestring", - "vfModuleName": "somestring", + "vendorName": "somestring", + "vfModuleName": "somestring", "vnfName": "somestring" - }, + }, "voiceQualityFieldsVersion": 1 } } @@ -1928,8 +1928,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1946,8 +1946,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1964,8 +1964,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1982,8 +1982,8 @@ Type: :ref:`ApiResponseMessage ` .. code-block:: javascript { - "code": 1, - "message": "somestring", + "code": 1, + "message": "somestring", "type": "somestring" } @@ -1997,7 +1997,7 @@ Security :widths: 15, 45 :ref:`basicAuth `, "" - + Data Structures ~~~~~~~~~~~~~~~ @@ -2011,9 +2011,9 @@ ApiResponseMessage Model Structure :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - code | No | integer | int32 | | - message | No | string | | | - type | No | string | | | + code | No | integer | int32 | | + message | No | string | | | + type | No | string | | | .. _d_f598222d7a83ca9c3538556b263682d1: @@ -2025,7 +2025,7 @@ VES5Request Model Structure :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - event | No | :ref:`event ` | | | + event | No | :ref:`event ` | | | .. _d_df249c51a416f54e5609f2ffffe059c0: @@ -2039,8 +2039,8 @@ number of times an identified codec was used over the measurementInterval :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - codecIdentifier | Yes | string | | | - numberInUse | Yes | integer | | | + codecIdentifier | Yes | string | | | + numberInUse | Yes | integer | | | .. _d_a68e1b21fdcef792db73f711201c56ad: @@ -2054,10 +2054,10 @@ command from an event collector toward an event source :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - commandType | Yes | string | | {'enum': ['heartbeatIntervalChange', 'measurementIntervalChange', 'provideThrottlingState', 'throttlingSpecification']} | - eventDomainThrottleSpecification | No | :ref:`eventDomainThrottleSpecification ` | | | - heartbeatInterval | No | integer | | | - measurementInterval | No | integer | | | + commandType | Yes | string | | {'enum': ['heartbeatIntervalChange', 'measurementIntervalChange', 'provideThrottlingState', 'throttlingSpecification']} | + eventDomainThrottleSpecification | No | :ref:`eventDomainThrottleSpecification ` | | | + heartbeatInterval | No | integer | | | + measurementInterval | No | integer | | | .. _d_2dc9a27be1410f60241c5f63c636bb7e: @@ -2075,7 +2075,7 @@ fields common to all events eventId | Yes | string | | | event key that is unique to the event source eventName | Yes | string | | | unique event name eventType | No | string | | | for example - applicationVnf, guestOS, hostOS, platform - internalHeaderFields | No | :ref:`internalHeaderFields ` | | | + internalHeaderFields | No | :ref:`internalHeaderFields ` | | | lastEpochMicrosec | Yes | number | | | the latest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds nfNamingCode | No | string | | | 4 character network function type, aligned with vnf naming standards nfcNamingCode | No | string | | | 3 character network function component type, aligned with vfc naming standards @@ -2100,10 +2100,10 @@ performance counter :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - criticality | Yes | string | | {'enum': ['CRIT', 'MAJ']} | - name | Yes | string | | | - thresholdCrossed | Yes | string | | | - value | Yes | string | | | + criticality | Yes | string | | {'enum': ['CRIT', 'MAJ']} | + name | Yes | string | | | + thresholdCrossed | Yes | string | | | + value | Yes | string | | | .. _d_6f081937f31c09078c8acf9212d6c449: @@ -2196,23 +2196,23 @@ provides end of call voice quality metrics adjacencyName | Yes | string | | | adjacency name endpointDescription | Yes | string | | {'enum': ['Caller', 'Callee']} | Either Caller or Callee - endpointJitter | No | number | | | - endpointRtpOctetsDiscarded | No | number | | | - endpointRtpOctetsReceived | No | number | | | - endpointRtpOctetsSent | No | number | | | - endpointRtpPacketsDiscarded | No | number | | | - endpointRtpPacketsReceived | No | number | | | - endpointRtpPacketsSent | No | number | | | - localJitter | No | number | | | - localRtpOctetsDiscarded | No | number | | | - localRtpOctetsReceived | No | number | | | - localRtpOctetsSent | No | number | | | - localRtpPacketsDiscarded | No | number | | | - localRtpPacketsReceived | No | number | | | - localRtpPacketsSent | No | number | | | + endpointJitter | No | number | | | + endpointRtpOctetsDiscarded | No | number | | | + endpointRtpOctetsReceived | No | number | | | + endpointRtpOctetsSent | No | number | | | + endpointRtpPacketsDiscarded | No | number | | | + endpointRtpPacketsReceived | No | number | | | + endpointRtpPacketsSent | No | number | | | + localJitter | No | number | | | + localRtpOctetsDiscarded | No | number | | | + localRtpOctetsReceived | No | number | | | + localRtpOctetsSent | No | number | | | + localRtpPacketsDiscarded | No | number | | | + localRtpPacketsReceived | No | number | | | + localRtpPacketsSent | No | number | | | mosCqe | No | number | | | 1-5 1dp packetLossPercent | No | number | | | Calculated percentage packet loss based on Endpoint RTP packets lost (as reported in RTCP) and Local RTP packets sent. Direction is based on Endpoint description (Caller, Callee). Decimal (2 dp) - packetsLost | No | number | | | + packetsLost | No | number | | | rFactor | No | number | | | 0-100 roundTripDelay | No | number | | | millisecs @@ -2228,17 +2228,17 @@ the root level of the common event format :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - commonEventHeader | Yes | :ref:`commonEventHeader ` | | | - faultFields | No | :ref:`faultFields ` | | | - heartbeatFields | No | :ref:`heartbeatFields ` | | | - measurementsForVfScalingFields | No | :ref:`measurementsForVfScalingFields ` | | | - mobileFlowFields | No | :ref:`mobileFlowFields ` | | | - otherFields | No | :ref:`otherFields ` | | | - sipSignalingFields | No | :ref:`sipSignalingFields ` | | | - stateChangeFields | No | :ref:`stateChangeFields ` | | | - syslogFields | No | :ref:`syslogFields ` | | | - thresholdCrossingAlertFields | No | :ref:`thresholdCrossingAlertFields ` | | | - voiceQualityFields | No | :ref:`voiceQualityFields ` | | | + commonEventHeader | Yes | :ref:`commonEventHeader ` | | | + faultFields | No | :ref:`faultFields ` | | | + heartbeatFields | No | :ref:`heartbeatFields ` | | | + measurementsForVfScalingFields | No | :ref:`measurementsForVfScalingFields ` | | | + mobileFlowFields | No | :ref:`mobileFlowFields ` | | | + otherFields | No | :ref:`otherFields ` | | | + sipSignalingFields | No | :ref:`sipSignalingFields ` | | | + stateChangeFields | No | :ref:`stateChangeFields ` | | | + syslogFields | No | :ref:`syslogFields ` | | | + thresholdCrossingAlertFields | No | :ref:`thresholdCrossingAlertFields ` | | | + voiceQualityFields | No | :ref:`voiceQualityFields ` | | | .. _d_4089a4a9ee684770c6f37a588a577589: @@ -2290,8 +2290,8 @@ number of times an identified feature was used over the measurementInterval :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - featureIdentifier | Yes | string | | | - featureUtilization | Yes | integer | | | + featureIdentifier | Yes | string | | | + featureUtilization | Yes | integer | | | .. _d_a9799335edbbc52c7f0c5191f7bd09ee: @@ -2305,8 +2305,8 @@ name value pair :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - name | Yes | string | | | - value | Yes | string | | | + name | Yes | string | | | + value | Yes | string | | | .. _d_18e1fa5fd6774deefce826b075f8b6e7: @@ -2320,13 +2320,13 @@ disk usage of an identified virtual machine in gigabytes and/or gigabytes per se :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - blockConfigured | Yes | number | | | - blockIops | Yes | number | | | - blockUsed | Yes | number | | | - ephemeralConfigured | Yes | number | | | - ephemeralIops | Yes | number | | | - ephemeralUsed | Yes | number | | | - filesystemName | Yes | string | | | + blockConfigured | Yes | number | | | + blockIops | Yes | number | | | + blockUsed | Yes | number | | | + ephemeralConfigured | Yes | number | | | + ephemeralIops | Yes | number | | | + ephemeralUsed | Yes | number | | | + filesystemName | Yes | string | | | .. _d_bb1527d221e848e0896c78552979238b: @@ -2488,9 +2488,9 @@ number of counts falling within a defined latency bucket :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - countsInTheBucket | Yes | number | | | - highEndOfLatencyBucket | No | number | | | - lowEndOfLatencyBucket | No | number | | | + countsInTheBucket | Yes | number | | | + highEndOfLatencyBucket | No | number | | | + lowEndOfLatencyBucket | No | number | | | .. _d_669cf98e276c9992abd27056c432bbb2: @@ -2565,7 +2565,7 @@ mobileFlow fields connectionType | No | string | | | Abbreviation referencing a 3GPP reference point e.g., S1-U, S11, etc ecgi | No | string | | | Evolved Cell Global Id flowDirection | Yes | string | | | Flow direction, indicating if the reporting node is the source of the flow or destination for the flow - gtpPerFlowMetrics | Yes | :ref:`gtpPerFlowMetrics ` | | | + gtpPerFlowMetrics | Yes | :ref:`gtpPerFlowMetrics ` | | | gtpProtocolType | No | string | | | GTP protocol gtpVersion | No | string | | | GTP protocol version httpHeader | No | string | | | HTTP request header, if the flow connects to a node referenced by HTTP @@ -2604,7 +2604,7 @@ an array of name value pairs along with a name for the array :widths: 20, 10, 15, 15, 30, 25 arrayOfFields | Yes | array of :ref:`field ` | | | array of name value pairs - name | Yes | string | | | + name | Yes | string | | | .. _d_5a79cd7ce784d60fd832d9c7c0a24322: @@ -2661,7 +2661,7 @@ sip signaling fields remotePort | Yes | string | | | port of peer endpoint sipSignalingFieldsVersion | Yes | number | | | version of the sipSignalingFields block summarySip | No | string | | | the SIP Method or Response (INVITE, 200 OK, BYE, etc) - vendorVnfNameFields | Yes | :ref:`vendorVnfNameFields ` | | | + vendorVnfNameFields | Yes | :ref:`vendorVnfNameFields ` | | | .. _d_c5450f1a263d0a2b0c64c96119f7d759: @@ -2704,24 +2704,24 @@ syslogFields Model Structure sysLog fields .. csv-table:: - :delim: | + :delim: ; :header: "Name", "Required", "Type", "Format", "Properties", "Description" :widths: 20, 10, 15, 15, 30, 25 - additionalFields | No | string | | | additional syslog fields if needed provided as name=value delimited by a pipe | symbol, for example: 'name1=value1|name2=value2|' - eventSourceHost | No | string | | | hostname of the device - eventSourceType | Yes | string | | | type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction - syslogFacility | No | integer | | | numeric code from 0 to 23 for facility--see table in documentation - syslogFieldsVersion | Yes | number | | | version of the syslogFields block - syslogMsg | Yes | string | | | syslog message - syslogPri | No | integer | | | 0-192 combined severity and facility - syslogProc | No | string | | | identifies the application that originated the message - syslogProcId | No | number | | | a change in the value of this field indicates a discontinuity in syslog reporting - syslogSData | No | string | | | syslog structured data consisting of a structured data Id followed by a set of key value pairs - syslogSdId | No | string | | | 0-32 char in format name@number for example ourSDID@32473 - syslogSev | No | string | | {'enum': ['Alert', 'Critical', 'Debug', 'Emergency', 'Error', 'Info', 'Notice', 'Warning']} | numerical Code for severity derived from syslogPri as remaider of syslogPri / 8 - syslogTag | Yes | string | | | msgId indicating the type of message such as TCPOUT or TCPIN; NILVALUE should be used when no other value can be provided - syslogVer | No | number | | | IANA assigned version of the syslog protocol specification - typically 1 + additionalFields ; No ; string ; ; ; additional syslog fields if needed provided as name=value delimited by a pipe | symbol, for example: 'name1=value1|name2=value2|' + eventSourceHost ; No ; string ; ; ; hostname of the device + eventSourceType ; Yes ; string ; ; ; type of event source, examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction + syslogFacility ; No ; integer ; ; ; numeric code from 0 to 23 for facility--see table in documentation + syslogFieldsVersion ; Yes ; number ; ; ; version of the syslogFields block + syslogMsg ; Yes ; string ; ; ; syslog message + syslogPri ; No ; integer ; ; ; 0-192 combined severity and facility + syslogProc ; No ; string ; ; ; identifies the application that originated the message + syslogProcId ; No ; number ; ; ; a change in the value of this field indicates a discontinuity in syslog reporting + syslogSData ; No ; string ; ; ; syslog structured data consisting of a structured data Id followed by a set of key value pairs + syslogSdId ; No ; string ; ; ; 0-32 char in format name@number for example ourSDID@32473 + syslogSev ; No ; string ; ; {'enum': ['Alert', 'Critical', 'Debug', 'Emergency', 'Error', 'Info', 'Notice', 'Warning']} , numerical Code for severity derived from syslogPri as remaider of syslogPri / 8 + syslogTag ; Yes ; string ; ; ; msgId indicating the type of message such as TCPOUT or TCPIN, NILVALUE should be used when no other value can be provided + syslogVer ; No ; number ; ; ; IANA assigned version of the syslog protocol specification - typically 1 .. _d_bd95ac8a5536a5bb5e6a0de7e64b9f20: @@ -2827,9 +2827,8 @@ provides statistics related to customer facing voice products calleeSideCodec | Yes | string | | | callee codec for the call callerSideCodec | Yes | string | | | caller codec for the call correlator | Yes | string | | | this is the same for all events on this call - endOfCallVqmSummaries | No | :ref:`endOfCallVqmSummaries ` | | | + endOfCallVqmSummaries | No | :ref:`endOfCallVqmSummaries ` | | | midCallRtcp | Yes | string | | | Base64 encoding of the binary RTCP data excluding Eth/IP/UDP headers phoneNumber | No | string | | | phone number associated with the correlator - vendorVnfNameFields | Yes | :ref:`vendorVnfNameFields ` | | | + vendorVnfNameFields | Yes | :ref:`vendorVnfNameFields ` | | | voiceQualityFieldsVersion | Yes | number | | | version of the voiceQualityFields block - diff --git a/docs/sections/architecture.rst b/docs/sections/architecture.rst index 8014ed49..b45e1055 100644 --- a/docs/sections/architecture.rst +++ b/docs/sections/architecture.rst @@ -44,7 +44,7 @@ in ONAP R1 Usage Scenarios --------------- -For ONPA R1 DCAE participates in all use cases. +For ONAP R1 DCAE participates in all use cases. vDNS/vFW: VES collector, TCA analytics vCPE: VES collector, TCA analytics diff --git a/docs/sections/blueprints/ves.rst b/docs/sections/blueprints/ves.rst index 86a343d1..427fc9c0 100644 --- a/docs/sections/blueprints/ves.rst +++ b/docs/sections/blueprints/ves.rst @@ -1,23 +1,23 @@ VNF Event Streaming Collector -====================== +============================= Overview of my blueprint and the part it plays in DCAE. Blueprint files ----------------------- +--------------- List where we can find the blueprints Parameters ---------------------- +---------- The input parameters needed for running the blueprint How To Run ---------------------- +---------- Cfy command for running the blueprint Additional Information ---------------------- +---------------------- Any additional information that help other people understanding and using yor blueprint diff --git a/docs/sections/images/designate.gif b/docs/sections/images/designate.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d6dff52158000e989cff3cffdbc4153e4033b11 GIT binary patch literal 115887 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

5A+xK+`*==_w||WkEP|e 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

N0pbDwdKPgIYWvX+dIkHZ&5 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 + sudo apt-get update + sudo apt install `docker.io `__ 2. Pull the latest container from onap nexus - sudo docker login -u docker -p docker - `nexus.onap.org `__:10001 +.. code-block:: bash - sudo docker pull - `nexus.onap.org `__:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 + sudo docker login -u docker -p docker + `nexus.onap.org `__:10001 + + sudo docker pull + `nexus.onap.org `__:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 3. Start the VESCollector with below command - sudo docker run -d --name vescollector -p 8080:8080/tcp -p - 8443:8443/tcp -P -e DMAAPHOST='' - `nexus.onap.org `__:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 +.. code-block:: bash + + sudo docker run -d --name vescollector -p 8080:8080/tcp -p + 8443:8443/tcp -P -e DMAAPHOST='' + `nexus.onap.org `__:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 -  Note:  Change the dmaaphost to required DMAAP ip. To change the - dmaap information for a running container,  stop the active - container and rerun above command changing the dmaap IP. +.. Note:  Change the dmaaphost to required DMAAP ip. To change the + dmaap information for a running container,  stop the active + container and rerun above command changing the dmaap IP. 4. Verification @@ -44,12 +49,13 @@ i. Check logs under container /opt/app/VESCollector/logs/collector.log ii. If no active feed, you can simulate an event into collector via curl - curl -i  -X POST -d @ --header "Content-Type: - application/json" http://localhost:8080/eventListener/v5 -k +.. code-block:: bash + + curl -i  -X POST -d @ --header "Content-Type:application/json" -k http://localhost:8080/eventListener/v5 - Note: If DMAAPHOST provided is invalid, you will see exception - around publish on the collector.logs (collector queues and attempts - to resend the event hence exceptions reported will be periodic).  +.. Note: If DMAAPHOST provided is invalid, you will see exception + around publish on the collector.logs (collector queues and attempts + to resend the event hence exceptions reported will be periodic).  i. Below two topic configuration are pre-set into this container.  When valid DMAAP instance ip was provided and VES events are received, @@ -62,41 +68,32 @@ i. Below two topic configuration are pre-set into this container.  When -http://:3904/events/unauthenticated.SEC\_MEASUREMENT\_OUTPUT VM Init -~~~~~~ +~~~~~~~ To address windriver server in-stability, the below **init.sh** script was used to start the container on VM restart.   -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| #!/bin/sh | -| | -| sudo docker ps \| grep "vescollector" | -| | -| if [ $? -ne 0 ]; then | -| | -|         sudo docker login -u docker -p docker nexus.onap.org:10001 | -| | -|         sudo docker pull nexus.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 | -| | -|         sudo docker rm -f vescollector | -| | -|         echo "Collector process not running - $(date)" >> /home/ubuntu/startuplog | -| | -|         sudo docker run -d --name vescollector -p 8080:8080/tcp -p 8443:8443/tcp -P -e DMAAPHOST='10.12.25.96' nexus.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 | -| | -| else | -| | -|         echo "Collector process running - $(date)" >> /home/ubuntu/startuplog | -| | -| fi | -+==============================================================================================================================================================================================+ -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +.. code-block:: bash + + #!/bin/sh + sudo docker ps | grep “vescollector” + if [ $? -ne 0 ]; then + sudo docker login -u docker -p docker nexus.onap.org:10001 + sudo docker pull nexus.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 + sudo docker rm -f vescollector + echo “Collector process not running - $(date)” >> /home/ubuntu/startuplog + sudo docker run -d –name vescollector -p 8080:8080/tcp -p 8443:8443/tcp -P -e DMAAPHOST=‘10.12.25.96’ nexus.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1 + else + echo “Collector process running - $(date)” >> /home/ubuntu/startuplog + fi + This script was invoked via VM init script (rc.d). -ln -s /home/ubuntu/init.sh /etc/init.d/init.sh +.. code-block:: bash -sudo  update-rc.d init.sh start 2 + ln -s /home/ubuntu/init.sh /etc/init.d/init.sh + sudo  update-rc.d init.sh start 2   @@ -110,391 +107,237 @@ m1.medium size and 50gb cinder volumes. 1. Install docker -  sudo apt-get update +.. code-block:: bash -  sudo apt install `docker.io `__ + sudo apt-get update + sudo apt install `docker.io `__ 2. Pull CDAP SDK container -sudo docker pull caskdata/cdap-standalone:4.1.2 +.. code-block:: bash + + sudo docker pull caskdata/cdap-standalone:4.1.2 3. Deploy and run the CDAP container - sudo docker run -d --name cdap-sdk-2 -p 11011:11011 -p 11015:11015 - caskdata/cdap-standalone:4.1.2 +.. code-block:: bash + + sudo docker run -d --name cdap-sdk-2 -p 11011:11011 -p 11015:11015 + caskdata/cdap-standalone:4.1.2 4. Create Namespace on CDAP application -curl -X PUT http://localhost:11015/v3/namespaces/cdap_tca_hi_lo - -5. Create TCA app config file - "tca\_app\_config.json" under ~ubuntu as - below - -+------------------------------------------------------------------------------+ -| { | -| | -|  "artifact": { | -| | -|   "name": "dcae-analytics-cdap-tca", | -| | -|   "version": "2.0.0", | -| | -|   "scope": "user" | -| | -|  }, | -| | -|  "config": { | -| | -|   "appName": "dcae-tca", | -| | -|   "appDescription": "DCAE Analytics Threshold Crossing Alert Application", | -| | -|   "tcaVESMessageStatusTableName": "TCAVESMessageStatusTable", | -| | -|   "tcaVESMessageStatusTableTTLSeconds": 86400.0, | -| | -|   "tcaAlertsAbatementTableName": "TCAAlertsAbatementTable", | -| | -|   "tcaAlertsAbatementTableTTLSeconds": 1728000.0, | -| | -|   "tcaVESAlertsTableName": "TCAVESAlertsTable", | -| | -|   "tcaVESAlertsTableTTLSeconds": 1728000.0, | -| | -|   "thresholdCalculatorFlowletInstances": 2.0, | -| | -|   "tcaSubscriberOutputStreamName": "TCASubscriberOutputStream" | -| | -|  } | -| | -| } | -+==============================================================================+ -+------------------------------------------------------------------------------+ +.. code-block:: bash + + curl -X PUT http://localhost:11015/v3/namespaces/cdap_tca_hi_lo + +5. Create TCA app config file - "tca\_app\_config.json" under ~ubuntu as below + +.. code-block:: json + + { + "artifact": { + "name": "dcae-analytics-cdap-tca", + "version": "2.0.0", + "scope": "user" + }, + + "config": { + "appName": "dcae-tca", + "appDescription": "DCAE Analytics Threshold Crossing Alert Application", + "tcaVESMessageStatusTableName": "TCAVESMessageStatusTable", + "tcaVESMessageStatusTableTTLSeconds": 86400.0, + "tcaAlertsAbatementTableName": "TCAAlertsAbatementTable", + "tcaAlertsAbatementTableTTLSeconds": 1728000.0, + "tcaVESAlertsTableName": "TCAVESAlertsTable", + "tcaVESAlertsTableTTLSeconds": 1728000.0, + "thresholdCalculatorFlowletInstances": 2.0, + "tcaSubscriberOutputStreamName": "TCASubscriberOutputStream" + } + } + 6. Create TCA app preference file under ~ubuntu as below -+--------------------------------------------------------------------------------------------------------------------------------------------+ -| { | -| | -|   "publisherContentType" : "application/json", | -| | -|   "publisherHostName" : "10.12.25.96", | -| | -|   "publisherHostPort" : "3904", | -| | -|   "publisherMaxBatchSize" : "1", | -| | -|   "publisherMaxRecoveryQueueSize" : "100000", | -| | -|   "publisherPollingInterval" : "20000", | -| | -|   "publisherProtocol" : "http", | -| | -|   "publisherTopicName" : "unauthenticated.DCAE\_CL\_OUTPUT", | -| | -|   "subscriberConsumerGroup" : "OpenDCAE-c1", | -| | -|   "subscriberConsumerId" : "c1", | -| | -|   "subscriberContentType" : "application/json", | -| | -|   "subscriberHostName" : "10.12.25.96", | -| | -|   "subscriberHostPort" : "3904", | -| | -|   "subscriberMessageLimit" : "-1", | -| | -|   "subscriberPollingInterval" : "20000", | -| | -|   "subscriberProtocol" : "http", | -| | -|   "subscriberTimeoutMS" : "-1", | -| | -|   "subscriberTopicName" : "unauthenticated.SEC\_MEASUREMENT\_OUTPUT", | -| | -|   "enableAAIEnrichment" : false, | -| | -|   "aaiEnrichmentHost" : "10.12.25.72", | -| | -|   "aaiEnrichmentPortNumber" : 8443, | -| | -|   "aaiEnrichmentProtocol" : "https", | -| | -|   "aaiEnrichmentUserName" : "DCAE", | -| | -|   "aaiEnrichmentUserPassword" : "DCAE", | -| | -|   "aaiEnrichmentIgnoreSSLCertificateErrors" : false, | -| | -|   "aaiVNFEnrichmentAPIPath" : "/aai/v11/network/generic-vnfs/generic-vnf", | -| | -|   "aaiVMEnrichmentAPIPath" :  "/aai/v11/search/nodes-query", | -| | -|   "tca\_policy" : "{ | -| | -|         \\"domain\\": \\"measurementsForVfScaling\\", | -| | -|         \\"metricsPerEventName\\": [{ | -| | -|                 \\"eventName\\": \\"vFirewallBroadcastPackets\\", | -| | -|                 \\"controlLoopSchemaType\\": \\"VNF\\", | -| | -|                 \\"policyScope\\": \\"DCAE\\", | -| | -|                 \\"policyName\\": \\"DCAE.Config\_tca-hi-lo\\", | -| | -|                 \\"policyVersion\\": \\"v0.0.1\\", | -| | -|                 \\"thresholds\\": [{ | -| | -|                         \\"closedLoopControlName\\": \\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\\", | -| | -|                         \\"version\\": \\"1.0.2\\", | -| | -|                         \\"fieldPath\\": \\"$.event.measurementsForVfScalingFields.vNicUsageArray[\*].receivedTotalPacketsDelta\\", | -| | -|                         \\"thresholdValue\\": 300, | -| | -|                         \\"direction\\": \\"LESS\_OR\_EQUAL\\", | -| | -|                         \\"severity\\": \\"MAJOR\\", | -| | -|                         \\"closedLoopEventStatus\\": \\"ONSET\\" | -| | -|                 }, { | -| | -|                         \\"closedLoopControlName\\": \\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\\", | -| | -|                         \\"version\\": \\"1.0.2\\", | -| | -|                         \\"fieldPath\\": \\"$.event.measurementsForVfScalingFields.vNicUsageArray[\*].receivedTotalPacketsDelta\\", | -| | -|                         \\"thresholdValue\\": 700, | -| | -|                         \\"direction\\": \\"GREATER\_OR\_EQUAL\\", | -| | -|                         \\"severity\\": \\"CRITICAL\\", | -| | -|                         \\"closedLoopEventStatus\\": \\"ONSET\\" | -| | -|                 }] | -| | -|         }, { | -| | -|                 \\"eventName\\": \\"vLoadBalancer\\", | -| | -|                 \\"controlLoopSchemaType\\": \\"VM\\", | -| | -|                 \\"policyScope\\": \\"DCAE\\", | -| | -|                 \\"policyName\\": \\"DCAE.Config\_tca-hi-lo\\", | -| | -|                 \\"policyVersion\\": \\"v0.0.1\\", | -| | -|                 \\"thresholds\\": [{ | -| | -|                         \\"closedLoopControlName\\": \\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\\", | -| | -|                         \\"version\\": \\"1.0.2\\", | -| | -|                         \\"fieldPath\\": \\"$.event.measurementsForVfScalingFields.vNicUsageArray[\*].receivedTotalPacketsDelta\\", | -| | -|                         \\"thresholdValue\\": 300, | -| | -|                         \\"direction\\": \\"GREATER\_OR\_EQUAL\\", | -| | -|                         \\"severity\\": \\"CRITICAL\\", | -| | -|                         \\"closedLoopEventStatus\\": \\"ONSET\\" | -| | -|                 }] | -| | -|         }, { | -| | -|                 \\"eventName\\": \\"Measurement\_vGMUX\\", | -| | -|                 \\"controlLoopSchemaType\\": \\"VNF\\", | -| | -|                 \\"policyScope\\": \\"DCAE\\", | -| | -|                 \\"policyName\\": \\"DCAE.Config\_tca-hi-lo\\", | -| | -|                 \\"policyVersion\\": \\"v0.0.1\\", | -| | -|                 \\"thresholds\\": [{ | -| | -|                         \\"closedLoopControlName\\": \\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\\", | -| | -|                         \\"version\\": \\"1.0.2\\", | -| | -|                         \\"fieldPath\\": \\"$.event.measurementsForVfScalingFields.additionalMeasurements[\*].arrayOfFields[0].value\\", | -| | -|                         \\"thresholdValue\\": 0, | -| | -|                         \\"direction\\": \\"EQUAL\\", | -| | -|                         \\"severity\\": \\"MAJOR\\", | -| | -|                         \\"closedLoopEventStatus\\": \\"ABATED\\" | -| | -|                 }, { | -| | -|                         \\"closedLoopControlName\\": \\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\\", | -| | -|                         \\"version\\": \\"1.0.2\\", | -| | -|                         \\"fieldPath\\": \\"$.event.measurementsForVfScalingFields.additionalMeasurements[\*].arrayOfFields[0].value\\", | -| | -|                         \\"thresholdValue\\": 0, | -| | -|                         \\"direction\\": \\"GREATER\\", | -| | -|                         \\"severity\\": \\"CRITICAL\\", | -| | -|                         \\"closedLoopEventStatus\\": \\"ONSET\\" | -| | -|                 }] | -| | -|         }] | -| | -| }" | -| | -| } | -+============================================================================================================================================+ -+--------------------------------------------------------------------------------------------------------------------------------------------+ - -  Note: Dmaap configuration are specified on this file on - publisherHostName and subscriberHostName. To be changed as - required\*\* - -7. Copy below script to CDAP server (this gets latest image from nexus - and deploys TCA application) and execute it - -+--------------------------------------------------------------------------------------------------------------------------------------------------+ -| #!/bin/sh | -| | -| TCA\_JAR=dcae-analytics-cdap-tca-2.0.0.jar | -| | -| rm -f /home/ubuntu/$TCA\_JAR | -| | -| cd /home/ubuntu/ | -| | -| wget https://nexus.onap.org/service/local/repositories/staging/content/org/onap/dcaegen2/analytics/tca/dcae-analytics-cdap-tca/2.0.0/$TCA\_JAR | -| | -| if [ $? -eq 0 ]; then | -| | -|         if [ -f /home/ubuntu/$TCA\_JAR ]; then | -| | -|                 echo "Restarting TCA CDAP application using $TCA\_JAR artifact" | -| | -|         else | -| | -|                 echo "ERROR: $TCA\_JAR missing" | -| | -|                 exit 1 | -| | -|         fi | -| | -| else | -| | -|         echo "ERROR: $TCA\_JAR not found in nexus" | -| | -|         exit 1 | -| | -| fi | -| | -| # stop programs | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/stop | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/stop | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/stop | -| | -| # delete application | -| | -| curl -X DELETE http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca | -| | -| # delete artifact | -| | -| curl -X DELETE http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/artifacts/dcae-analytics-cdap-tca/versions/2.0.0 | -| | -| # load artifact | -| | -| curl -X POST --data-binary @/home/ubuntu/$TCA\_JAR http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/artifacts/dcae-analytics-cdap-tca | -| | -| # create app | -| | -| curl -X PUT -d @/home/ubuntu/tca\_app\_config.json http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca | -| | -| # load preferences | -| | -| curl -X PUT -d @/home/ubuntu/tca\_app\_preferences.json http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/preferences | -| | -| # start programs | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/start | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/start | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/start | -| | -| echo | -| | -| # get status of programs | -| | -| curl http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/status | -| | -| curl http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/status | -| | -| curl http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/status | -| | -| echo | -+==================================================================================================================================================+ -+--------------------------------------------------------------------------------------------------------------------------------------------------+ +.. code-block:: json + + { + "publisherContentType" : "application/json", + "publisherHostName" : "10.12.25.96", + "publisherHostPort" : "3904", + "publisherMaxBatchSize" : "1", + "publisherMaxRecoveryQueueSize" : "100000", + "publisherPollingInterval" : "20000", + "publisherProtocol" : "http", + "publisherTopicName" : "unauthenticated.DCAE_CL_OUTPUT", + "subscriberConsumerGroup" : "OpenDCAE-c1", + "subscriberConsumerId" : "c1", + "subscriberContentType" : "application/json", + "subscriberHostName" : "10.12.25.96", + "subscriberHostPort" : "3904", + "subscriberMessageLimit" : "-1", + "subscriberPollingInterval" : "20000", + "subscriberProtocol" : "http", + "subscriberTimeoutMS" : "-1", + "subscriberTopicName" : "unauthenticated.SEC_MEASUREMENT_OUTPUT", + "enableAAIEnrichment" : false, + "aaiEnrichmentHost" : "10.12.25.72", + "aaiEnrichmentPortNumber" : 8443, + "aaiEnrichmentProtocol" : "https", + "aaiEnrichmentUserName" : "DCAE", + "aaiEnrichmentUserPassword" : "DCAE", + "aaiEnrichmentIgnoreSSLCertificateErrors" : false, + "aaiVNFEnrichmentAPIPath" : "/aai/v11/network/generic-vnfs/generic-vnf", + "aaiVMEnrichmentAPIPath" : "/aai/v11/search/nodes-query", + "tca_policy" : { + "domain": "measurementsForVfScaling", + "metricsPerEventName": [{ + "eventName": "vFirewallBroadcastPackets", + "controlLoopSchemaType": "VNF", + "policyScope": "DCAE", + "policyName": "DCAE.Config_tca-hi-lo", + "policyVersion": "v0.0.1", + "thresholds": [{ + "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta", + "thresholdValue": 300, + "direction": "LESS_OR_EQUAL", + "severity": "MAJOR", + "closedLoopEventStatus": "ONSET" + }, { + "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta", + "thresholdValue": 700, + "direction": "GREATER_OR_EQUAL", + "severity": "CRITICAL", + "closedLoopEventStatus": "ONSET" + }] + }, { + "eventName": "vLoadBalancer", + "controlLoopSchemaType": "VM", + "policyScope": "DCAE", + "policyName": "DCAE.Config_tca-hi-lo", + "policyVersion": "v0.0.1", + "thresholds": [{ + "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta", + "thresholdValue": 300, + "direction": "GREATER_OR_EQUAL", + "severity": "CRITICAL", + "closedLoopEventStatus": "ONSET" + }] + }, { + "eventName": "Measurement_vGMUX", + "controlLoopSchemaType": "VNF", + "policyScope": "DCAE", + "policyName": "DCAE.Config_tca-hi-lo", + "policyVersion": "v0.0.1", + "thresholds": [{ + "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", + "thresholdValue": 0, + "direction": "EQUAL", + "severity": "MAJOR", + "closedLoopEventStatus": "ABATED" + }, { + "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", + "version": "1.0.2", + "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", + "thresholdValue": 0, + "direction": "GREATER", + "severity": "CRITICAL", + "closedLoopEventStatus": "ONSET" + }] + }] + } + } + + +.. Note: Dmaap configuration are specified on this file on + publisherHostName and subscriberHostName. To be changed as + required\*\* + +7. Copy below script to CDAP server (this gets latest image from nexus and deploys TCA application) and execute it + +.. code-block:: bash + + #!/bin/sh + TCA_JAR=dcae-analytics-cdap-tca-2.0.0.jar + rm -f /home/ubuntu/$TCA_JAR + cd /home/ubuntu/ + wget https://nexus.onap.org/service/local/repositories/staging/content/org/onap/dcaegen2/analytics/tca/dcae-analytics-cdap-tca/2.0.0/$TCA_JAR + if [ $? -eq 0 ]; then + if [ -f /home/ubuntu/$TCA_JAR ]; then + echo “Restarting TCA CDAP application using $TCA_JAR artifact” + else + echo “ERROR: $TCA_JAR missing” + exit 1 + fi + else + echo “ERROR: $TCA_JAR not found in nexus” + exit 1 + fi + # stop programs + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/stop + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/stop + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/stop + # delete application + curl -X DELETE http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca + # delete artifact + curl -X DELETE http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/artifacts/dcae-analytics-cdap-tca/versions/2.0.0 + # load artifact + curl -X POST –data-binary @/home/ubuntu/$TCA_JAR http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/artifacts/dcae-analytics-cdap-tca + # create app + curl -X PUT -d @/home/ubuntu/tca_app_config.json http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca + # load preferences + curl -X PUT -d @/home/ubuntu/tca_app_preferences.json http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/preferences + # start programs + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/start + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/start + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/start + echo + # get status of programs + curl http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/status + curl http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/status + curl http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/status + echo + 8. Verify TCA application and logs via CDAP GUI processes The overall flow can be checked here TCA Configuration Change -~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~ Typical configuration changes include changing DMAAP host and/or Policy configuration. If necessary, modify the file on step #6 and run the script noted as step #7 to redeploy TCA with updated configuration. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VM Init -~~~~~~ +~~~~~~~ To address windriver server in-stability, the below **init.sh** script was used to restart the container on VM restart.  This script was invoked via VM init script (rc.d). -+------------------------------------------------------------------------------------------------------------------------------+ -| #!/bin/sh | -| | -| #docker run -d --name cdap-sdk -p 11011:11011 -p 11015:11015 caskdata/cdap-standalone:4.1.2 | -| | -| sudo docker restart cdap-sdk-2 | -| | -| sleep 30 | -| | -| # start program | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/start | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/start | -| | -| curl -X POST http://localhost:11015/v3/namespaces/cdap\_tca\_hi\_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/start | -+==============================================================================================================================+ -+------------------------------------------------------------------------------------------------------------------------------+ +.. code-block:: bash -  + #!/bin/sh + #docker run -d –name cdap-sdk -p 11011:11011 -p 11015:11015 caskdata/cdap-standalone:4.1.2 + sudo docker restart cdap-sdk-2 + sleep 30 + # start program + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRPublisherWorker/start + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/workers/TCADMaaPMRSubscriberWorker/start + curl -X POST http://localhost:11015/v3/namespaces/cdap_tca_hi_lo/apps/dcae-tca/flows/TCAVESCollectorFlow/start -This script was invoked via VM init script (rc.d). -ln -s /home/ubuntu/init.sh /etc/init.d/init.sh +This script was invoked via VM init script (rc.d). -sudo  update-rc.d init.sh start 2 +.. code-block:: bash + ln -s /home/ubuntu/init.sh /etc/init.d/init.sh + sudo  update-rc.d init.sh start 2 diff --git a/docs/sections/installation_test.rst b/docs/sections/installation_test.rst index 2c49a957..641a8616 100644 --- a/docs/sections/installation_test.rst +++ b/docs/sections/installation_test.rst @@ -5,15 +5,15 @@ Testing and Debugging ONAP DCAE Deployment Check Component Status ====================== -Testing of a DCAE system starts with checking the health of the deployed components. This can be done by accessing the Consul becsue all DCAE components register their staus with Consul. Such API is accessible at http://{{ANY_CONSUL_VM_IP}}:8500 . +Testing of a DCAE system starts with checking the health of the deployed components. This can be done by accessing the Consul becsue all DCAE components register their staus with Consul. Such API is accessible at http://{{ANY_CONSUL_VM_IP}}:8500. -In addition, more details status information can be obtained in additional ways. +In addition, more details status information can be obtained in additional ways. 1. Check VES Status - VES status and running logs can be found on the {{RAND}}doks00 VM. The detailed API and access methods can be found in the logging and human interface sections. + VES status and running logs can be found on the {{RAND}}doks00 VM. The detailed API and access methods can be found in the logging and human interface sections. 2. Check TCA Status - TCA has its own GUI that provides detailed operation information. Point browser to http://{{CDAP02_VM_IP}}:11011/oldcdap/ns/cdap_tca_hi_lo/apps/, select the application with Description "DCAE Analytics Threshold Crossing Alert Application"; then select "TCAVESCollectorFlow". This leads to a flow display where all stages of processing are illustrated and the number inside of each stage icon shows the number of events/messages processed. + TCA has its own GUI that provides detailed operation information. Point browser to http://{{CDAP02_VM_IP}}:11011/oldcdap/ns/cdap_tca_hi_lo/apps/, select the application with Description "DCAE Analytics Threshold Crossing Alert Application"; then select "TCAVESCollectorFlow". This leads to a flow display where all stages of processing are illustrated and the number inside of each stage icon shows the number of events/messages processed. 3. Check Message Router Status diff --git a/docs/sections/release-notes.rst b/docs/sections/release-notes.rst index fd655bb8..721e64df 100644 --- a/docs/sections/release-notes.rst +++ b/docs/sections/release-notes.rst @@ -36,9 +36,9 @@ Specifically, DCAE R1 includes the following components: - Service components - Docker container components - VNF Event Streaming (VES) collector - - Holmes engine (**) - - Holmes rule management (**) + - Holmes (engine and rule management) ** - CDAP analytics component + - Threshold Crossing Analytics (TCA) (*) Note: This component is delivered under the CCSDK project, deployed by DCAE under a single VM configuration as a shared PostgreSQL database for the R1 demos. (CCSDK PostgreSQL supports @@ -133,3 +133,4 @@ following Gerrit repos are voided and already locked as read-only. **Other** +SNMP trap collector is seed code delivery only. -- 2.16.6