.. Copyright 2017 AT&T Intellectual Property, All rights reserved
.. Copyright 2017-2018 Huawei Technologies Co., Ltd.
-===================================
+.. _ves_event_registration_3_2:
+
Service: VES Event Registration 3.2
-===================================
-
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| **Legal Disclaimer** |
-| |
-| Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at |
-| |
-| http://www.apache.org/licenses/LICENSE-2.0 |
-| |
-| Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. |
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+------------------------------------
+
++-----------------------------------------------------------------------------+
+| **Legal Disclaimer** |
+| |
+| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
+| use this file except in compliance with the License. You may obtain a copy |
+| of the License at |
+| |
+| http://www.apache.org/licenses/LICENSE-2.0 |
+| |
+| Unless required by applicable law or agreed to in writing, software |
+| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
+| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
+| License for the specific language governing permissions and limitations |
+| under the License. |
++-----------------------------------------------------------------------------+
+-------------------+--------------------------+
| Document Number | VES Event Registration |
+-----------------+------------------------------+
Introduction
-============
+^^^^^^^^^^^^
This document specifies a YAML format for the registration of VES
Events. The YAML format enables both human designers and applications to
eventNames.
Audience
---------
+~~~~~~~~
This document is intended to support the following groups:
Service Provider applications at design time.
Goal
-----
+~~~~
The goal of the YAML is to completely describe the processing of VNF
events in a way that can be compiled or interpreted by applications
across a Service Provider’s infrastructure.
Relation to the Common Event Format
------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Common Event Format described in the VES Event Listener service
specification defines the structure of VES events including optional
allowed by the Common Event Format (e.g., ‘MINOR’ or ‘NORMAL’).
Relation to Service Design and Creation
----------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Event registration for a VNF (or other event source) is provided to the
Service Provider’s Service Creation and Design Environment (e.g., ASDC)
for any manual, VNF-specific development.
YAML Files
-==========
+^^^^^^^^^^
YAML Specification Conformance
-------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
YAML files should conform to version 1.2 of the YAML specification
available at: http://yaml.org/spec/1.2/spec.html.
Filename
---------
+~~~~~~~~
YAML file names should conform to the following naming convention:
- {AsdcModel}\_{AsdcModelType}\_{v#}.yml
+ ``{AsdcModel}\_{AsdcModelType}\_{v#}.yml``
The ‘#’ should be replaced with the current numbered version of the
file.
For example:
-- vMRF\_Vnf\_v1.yml
+- ``vMRF\_Vnf\_v1.yml``
-- vMRF\_Service\_v1.yml
+- ``vMRF\_Service\_v1.yml``
-- vIsbcSsc\_VfModule\_v1.yml
+- ``vIsbcSsc\_VfModule\_v1.yml``
File Structure
---------------
+~~~~~~~~~~~~~~
Each eventType is registered as a distinct YAML ‘document’.
YAML files consist of a series of YAML documents delimited by ‘---‘ and
‘…’ for example:
- ---
+.. code-block:: ruby
- # Event Registration for eventName ‘name1’
+ Some Ruby code.
+ ---
- # details omitted
+ # Event Registration for eventName ‘name1’
- ...
+ # details omitted
- ---
+ ...
- # Event Registration for eventName ‘name2’
+ ---
- # details omitted
+ # Event Registration for eventName ‘name2’
- ...
+ # details omitted
- ---
+ ...
- # Event Registration for eventName ‘name3’
+ ---
- # details omitted
+ # Event Registration for eventName ‘name3’
- ...
+ # details omitted
+
+ ...
YAML Syntax and Semantics
-=========================
+^^^^^^^^^^^^^^^^^^^^^^^^^
YAML registration documents show each relevant VES Common Event Model
object and field (i.e., each element) for the eventName being
pairs).
Qualifiers
-----------
+~~~~~~~~~~
Each object or field name in the eventName being registered is followed
by a ‘qualifier’, which consists of a colon and two curly braces, for
example:
- “objectOrFieldName: { }”
+ ``“objectOrFieldName: { }”``
The curly braces contain meta-information about that object or field
name (also known as the ‘element’), such as whether it is required to be
within the curly braces:
Action
-~~~~~~
+++++++
The ‘action’ keyword may be applied to field values or to the event as a
whole. The ‘action’ keyword specifies a set of actions that should be
Examples:
-- event: { action: [ any, any, null, rebootVm ] }
+.. code-block:: yaml
+
+ event: {
+ action: [
+ any, any, null, rebootVm
+ ]
+ }
# whenever the above event occurs, the VM should be rebooted
-- fieldname: { action: [ 80, up, null, null, tcaUpEventName ], action:
- [ 60, down, overcapacity, null ] }
+ fieldname: {
+ action: [ 80, up, null, null, tcaUpEventName ],
+ action: [ 60, down, overcapacity, null ]
+ }
# when the value of fieldname crosses 80 in an up direction,
- tcaUpEventName
-
- should be published; if the fieldname crosses 60 in a down direction
- an
-
- ‘overCapacity’ named-condition is asserted.
+ # tcaUpEventName should be published; if the fieldname crosses 60
+ # in a down direction an ‘overCapacity’ named-condition is asserted.
AggregationRole
-~~~~~~~~~~~~~~~
++++++++++++++++
The ‘aggregationRole’ keyword is applied to the value keyword in a field
of a name-value pair.
it must have key name1 and name1’s value should be interpreted as an
index:
-- additionalMeasurements: {presence: optional, array: [
-
- {
-
- name: {presence: required},
-
- arrayOfFields: {presence: required, array: [
-
- {
-
- name: {presence: required, value: name1},
-
- value: {presence: required, aggregationRole: index}
-
+.. code-block:: yaml
+
+ additionalMeasurements: {
+ presence: optional, array: [
+ {
+ name: {presence: required},
+ arrayOfFields: {
+ presence: required, array: [
+ {
+ name: {presence: required, value: name1},
+ value: {presence: required, aggregationRole: index}
+ }
+ ]
}
-
- ] }
-
- }
-
- ] }
+ }
+ ]
+ }
Example 2:
- The first three columns would be sent through VES as follows:
-.. code-block:: text
+.. code-block:: yaml
additionalMeasurements: {presence: required, array: [
-
{
-
name: {presence: required, value: TunnelTraffic},
-
arrayOfFields: {presence: required, array: [
-
{
-
name: {presence: required, value: TunnelName},
-
value: {presence: required, aggregationRole: index},
-
},
-
{
-
name: {presence: required, value: TunnelType},
-
value: {presence: required, aggregationRole: reference}
-
},
-
{
-
name: {presence: required, value: TotalOutputBytes},
-
value: {presence: required, aggregationRole: gauge, castTo:number }
-
}
-
]}
-
}
-
]}
Array
-~~~~~
++++++
The ‘array’ keyword indicates that the element is an array; ‘array:’ is
following by square brackets which contain the elements of the array.
Examples:
-- element: { array: [
+.. code-block:: yaml
- firstArrayElement: { },
+ element: { array: [
- secondArrayElement: { }
+ firstArrayElement: { },
- ] }
+ secondArrayElement: { }
+
+ ]}
CastTo
-~~~~~~
+++++++
The ‘castTo’ keyword is applied to ‘value’ keywords. It tells the
receiving event processor to cast (or interpret) the supplied value from
Example:
-- fieldname: { value: [ x, y, z ], castTo: number } # only values ‘x’,
+.. code-block:: yaml
+
+ fieldname: { value: [ x, y, z ], castTo: number } # only values ‘x’,
‘y’, or ‘z’ allowed
# each must be cast to a number
-- additionalMeasurements: {presence: optional, array: [
+.. code-block:: yaml
+ additionalMeasurements: {presence: optional, array: [
{
-
name: {presence: required},
-
arrayOfFields: {presence: required, array: [
-
{
-
name: {presence: required, value: name1},
-
value: {presence: required, castTo: number}
-
}
-
] }
-
}
-
] }
- For another example, see the second example under AggregationRole.
+
+**For another example, see the second example under AggregationRole.**
Comment
-~~~~~~~
++++++++
The ‘comment’ keyword enables event registrations to communicate
additional information, in the form of a quoted string, to designers
Examples:
-- fieldname: { range: [ 1, unbounded ], default: 5, comment: “needs
- further diagnosis; call the TAC” }
+.. code-block:: yaml
-- fieldname: { value: [ red, white, blue ], default: blue, comment:
- “red indicates degraded quality of service” }
+ fieldname: {
+ range: [ 1, unbounded ],
+ default: 5,
+ comment: “needs further diagnosis; call the TAC”
+ }
-- event: { presence: required, comment: “this event only occurs in
- conditions when the ipq has stopped operating; manual reset may
- be required”, structure: { . . . } }
+.. code-block:: yaml
+
+ fieldname: {
+ value: [ red, white, blue ],
+ default: blue,
+ comment: “red indicates degraded quality of service”
+ }
+
+.. code-block:: yaml
+
+ event: {
+ presence: required,
+ comment: “this event only occurs in conditions when the
+ ipq has stopped operating; manual reset may be required”,
+ structure: { . . . }
+ }
Default
-~~~~~~~
++++++++
The ‘default’ keyword specifies a default field value. Note: the default
value must be within the range or enumeration of acceptable values.
Examples:
-- fieldname: { range: [ 1, unbounded ], default: 5 }
+.. code-block:: yaml
+
+ fieldname: { range: [ 1, unbounded ], default: 5 }
+
+.. code-block:: yaml
+
+ fieldname: { value: [ red, white, blue ], default: blue }
-- fieldname: { value: [ red, white, blue ], default: blue }
HeartbeatAction
-~~~~~~~~~~~~~~~
+++++++++++++++++
The ‘heartbeatAction’ keyword is provided on the ‘event’ objectName for
heartbeat events only. It provides design time guidance to the service
Examples:
-- event: { heartbeatAction: [ 3, vnfDown, RECO-rebootVnf, tcaEventName
- ] }
+.. code-block:: yaml
+
+ event: { heartbeatAction: [ 3, vnfDown, RECO-rebootVnf, tcaEventName] }
# whenever the above event occurs, a vnfDown condition is asserted
- and the vnf should be rebooted, plus the indicated tca should be
- generated.
+ # and the vnf should be rebooted, plus the indicated tca should be
+ # generated.
keyValuePairString
-~~~~~~~~~~~~~~~~~~
+++++++++++++++++++
The ‘keyValuePairString’ keyword describes the key-value pairs to be
communicated through a string (e.g., in the VES Syslog Fields
‘syslogSData’ or ‘additionalFields’ strings). This keyword takes three
parameters:
-- the first parameter specifies the character used to delimit (i.e., to
+- The first parameter specifies the character used to delimit (i.e., to
separate) the key-value pairs. If a space is used as a delimiter,
it should be communicated within single quotes as ‘ ‘; otherwise,
the delimiter character should be provided without any quotes.
with ‘key=value’ pairs delimited by the pipe (‘\|’) symbol as in
(“key1=value1\|key2=value2\|key3=value3…”).
- additionalFields: {presence: required, keyValuePairString: {\|, =, keyValuePairs: [
-
- keyValuePair: {presence: required, structure: {
-
- key: {presence: required, value: someKeyName},
-
- value: {presence: required, range: [0, 100]}
-
- } },
-
- keyValuePair: {presence: optional, structure: {
+.. code-block:: yaml
- key: {presence: required, value: someOtherKeyName},
-
- value: {presence: required, value [red, white, blue]}
-
- } }
-
-] } }
+ additionalFields: {
+ presence: required, keyValuePairString: {\|, =, keyValuePairs: [
+ keyValuePair: {
+ presence: required, structure: {
+ key: {presence: required, value: someKeyName},
+ value: {presence: required, range: [0, 100]}
+ }
+ },
+ keyValuePair: {
+ presence: optional, structure: {
+ key: {presence: required, value: someOtherKeyName},
+ value: {presence: required, value [red, white, blue]}
+ }
+ }
+ ]}
+ }
Presence
-~~~~~~~~
++++++++++
The ‘presence’ keyword may be defined as ‘required’ or ‘optional’. If
not provided, the element is assumed to be ‘optional’.
-Examples
+Examples:
+
+.. code-block:: yaml
+
+ element: { presence: required } # element must be present
-- element: { presence: required } # element must be present
+.. code-block:: yaml
-- element: { presence: optional } # element is optional
+ element: { presence: optional } # element is optional
-- element: { value: blue } # by omitting a presence definition, the element is assumed to be optional
+.. code-block:: yaml
+
+ element: { value: blue }
+ # by omitting a presence definition, the element is assumed to be optional
Range
-~~~~~
++++++++
The ‘range’ keyword applies to fields (i.e., simpleTypes); indicates the
value of the field is a number within a specified range of values from
Examples:
-- fieldname: { range: [ 1, unbounded ] }
+.. code-block:: yaml
-- fieldname: { range: [ 0, 3.14 ] }
+ fieldname: { range: [ 1, unbounded ] }
+
+.. code-block:: yaml
+
+ fieldname: { range: [ 0, 3.14 ] }
Structure
-~~~~~~~~~
+++++++++++
The ‘structure’ keyword indicates that the element is a complexType
(i.e., an object) and is followed by curly braces containing that
Example:
-- objectName: { structure: {
-
- element1: { },
-
- element2: { },
-
- anotherObject: { structure: {
+.. code-block:: yaml
- element3: { },
-
- element4: { }
-
- } }
-
- } }
+ objectName: {
+ structure: {
+ element1: { },
+ element2: { },
+ anotherObject: {
+ structure: {
+ element3: { },
+ element4: { }
+ }
+ }
+ }
+ }
Units
-~~~~~
++++++++
The ‘units’ qualifier may be applied to values provided in VES Common
Event Format extensible field structures. The ‘units’ qualifier
Example:
-- field: { structure: {
-
- name: { value: pilotNumberPoolSize },
-
- value: { units: megabytes } # the value will be expressed in
- megabytes
+.. code-block:: yaml
- } }
+ field: {
+ structure: {
+ name: { value: pilotNumberPoolSize },
+ value: { units: megabytes } # the value will be expressed in megabytes
+ }
+ }
Value
-~~~~~
++++++++
The ‘value’ keyword applies to fields (i.e., simpleTypes); indicates a
single value or an enumeration of possible values. If not provided, it
Examples:
-- fieldname: { value: x } # the value is ‘x’
+.. code-block:: yaml
+
+ fieldname: { value: x } # the value is ‘x’
+
+.. code-block:: yaml
-- fieldname: { value: [ x, y, z ] } # the value is either ‘x’, ‘y’, or
- ‘z’
+ fieldname: { value: [ x, y, z ] }
+ # the value is either ‘x’, ‘y’, or ‘z’
-- fieldname: { presence: required } # the value will be provided at
- runtime
+.. code-block:: yaml
-- fieldname: { value: ‘error state’ } # the value is the string within
- the single quotes
+ fieldname: { presence: required }
+ # the value will be provided at runtime
+
+.. code-block:: yaml
+
+ fieldname: { value: ‘error state’ }
+ # the value is the string within the single quotes
Rules
------
+~~~~~
Rules Document
-~~~~~~~~~~~~~~
+++++++++++++++
After all events have been defined, the YAML file may conclude with a
final YAML document delimited by ‘---‘ and ‘…’, which defines rules
based on the named ‘conditions’ asserted in action qualifiers in the
preceding event definitions. For example:
+.. code-block:: yaml
+
---
# Event Registration for eventName ‘name1’
- event: {presence: required, action: [any, any, A, null], structure:
- {
-
- # details omitted
-
- }}
-
+ event: {
+ presence: required,
+ action: [any, any, A, null],
+ structure: {# details omitted}
+ }
...
-
---
# Event Registration for eventName ‘name2’
-
- event: {presence: required, structure: {
-
- commonEventHeader: {presence: required, structure: {
-
- # details omitted
-
- }}
-
- measurements: {presence: required, structure: {
-
- cpuUsageArray: {presence: required, array: {
-
- cpuUsage: {presence: required, structure: {
-
- cpuIdentifier: {presence: required},
-
- percentUsage: {presence: required, action: [90, up, B, null]}
-
- }}
-
- }},
-
-# details omitted
-
- }}
-
- }}
-
+ event: {
+ presence: required,
+ structure: {
+ commonEventHeader: {
+ presence: required,
+ structure: {# details omitted}
+ }
+ measurements: {
+ presence: required,
+ structure: {
+ cpuUsageArray: {
+ presence: required,
+ array: {
+ cpuUsage: {
+ presence: required,
+ structure: {
+ cpuIdentifier: {
+ presence: required
+ },
+ percentUsage: {
+ presence: required,
+ action: [90, up, B, null]
+ }
+ }
+ }
+ }
+ }, # details omitted
+ }
+ }
+ }
+ }
...
-
---
# Rules
rules: [
-
- # defined based on conditions ‘A’ and ‘B’ - details omitted
-
+ # defined based on conditions ‘A’ and ‘B’ - details omitted
]
...
Rules Syntax and Semantics
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
The YAML ‘rules’ document begins with the keyword ‘rules’ followed by a
colon and square brackets. Each rule is then defined within the square
Each rule is expressed as follows:
-rule: {
+.. code-block:: text
-trigger: *logical expression in terms of conditions*,
+ rule: {
-microservices: [ *microservice1, microservice2, microservice3…* ]
+ trigger: *logical expression in terms of conditions*,
-alerts: [tcaE*ventName1, tcaEventName2, tcaEventName3…* ],
+ microservices: [ *microservice1, microservice2, microservice3…* ]
-}
+ alerts: [tcaE*ventName1, tcaEventName2, tcaEventName3…* ],
+
+ }
Notes:
microservices and alerts may be specified.
Simple Triggers
-~~~~~~~~~~~~~~~
+++++++++++++++++
The trigger is based on the named ‘conditions’ asserted in the action
qualifiers within the event definitions earlier in the YAML file. The
Example rules definition:
-rules: [
-
- rule: {
-
- trigger: A,
-
- alerts: [tcaEventName1],
-
- microservices: [rebootVm]
-
- },
-
- rule: {
-
- trigger: B \|\| (C & D),
-
- microservices: [scaleOut]
-
- }
+.. code-block:: text
-]
+ rules: [
+ rule: {
+ trigger: A,
+ alerts: [tcaEventName1],
+ microservices: [rebootVm]
+ },
+ rule: {
+ trigger: B \|\| (C & D),
+ microservices: [scaleOut]
+ }
+ ]
Note: when microservices are defined in terms of multiple event
conditions, the designer should take care to consider whether the target
clarity.
Time Based Qualifiers
-~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++
Time based rules may be established by following any named condition
with a colon and curly braces. The time based rule is placed in the
minutes AND condition C is in effect.
PM Dictionary
--------------
+~~~~~~~~~~~~~~
The Performance Management (PM) Dictionary is used by analytics
applications to interpret and process perf3gpp measurement information
Dictionary Schema).
PM Dictionary Schema Keywords
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++++++++
The following is a list of standard PM Dictionary Schema Keywords:
+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
PM Dictionary Schema Example
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
The following is a sample PM Dictionary Schema:
----
# PM Dictionary schema specifying and describing the meta information
used to define perf3gpp measurements in the PM Dictionary
.. code-block:: text
- pmDictionary: { presence: required, structure: {
-
- pmDictionaryHeader: { presence: required, structure: {
-
- nfType: { presence: required, comment: "NF type; should match the string used in the perf3gpp eventName"},
-
- pmDefSchemaVsn: { presence: required, value: 1.0, comment: "PM Dictionary Schema Version"},
-
- pmDefVsn: { presence: required, comment: "vendor-defined PM Dictionary version"},
-
- vendor: { presence: required, comment: "vendor of the NF type"}
-
- }},
-
- pmDictionaryMeasurements: { presence: required, array: [
-
- iMeasInfoId: { presence: required, comment: "vendor-defined integer measurement group identifier"},
-
- iMeasType: { presence: required, comment: "vendor-defined integer identifier for the measType; must be combined with measInfoId to identify a specific measurement."},
-
- measAdditionalFields: { presence: required, comment: "vendor-specific PM Dictionary fields", array: [
-
- keyValuePair: { presence: required, structure: {
-
- key: { presence: required, value: measAggregationLevels, comment:"Nokia-specific field"},
-
- value: { presence: required, value: [NGBTS, NGCELL, IPNO, IPSEC, ETHIF],comment: "list of one or more aggregation levels that Nokia recommends for this measurement; for example, if the value is NGBTS NGCELL, then Nokia recommends this measurement be aggregated on
- the 5G BTS level and the 5G Cell level"}
-
- }}
-
- ]},
-
- measChangeType: { presence: required, value: [added, modified, deleted],
- comment: "indicates the type of change that occurred during measLastChange"},
-
- measCollectionMethod: { presence: required, value: [CC, SI, DER, Gauge,
- Average], comment: "the measurement collection method; CC, SI, DER and Gauge are as defined in 3GPP; average contains the average value of the measurement during the granularity period"},
-
- measCondition: { presence: required, comment: "description of the
- condition causing the measurement"},
-
- measDescription: { presence: required, comment: "description of the
- measurement information and purpose"},
-
- measFamily: { presence: required, comment: "abbreviation for a family of
- measurements, in 3GPP format,or vendor defined"},
-
- measInfoId: { presence: required, comment: "name for a group of related
- measurements in 3GPP format or vendor defined"},
-
- measLastChange: { presence: required, comment: "version of the PM
- Dictionary the last time this measurement was added, modified or deleted"},
-
- measObjClass: { presence: required, value: [NGBTS, NGCELL, IPNO, IPSEC,
- ETHIF], comment: "measurement object class"},
-
- measResultRange: { presence: optional, comment: "range of the
- measurement result; only necessary when the range is smaller than the full range of the data type"},
-
- measResultType: { presence: required, value: [float, unit32, uint64],
- comment: "data type of the measurement result"},
-
- measResultUnits: { presence: required, value: [ seconds, minutes, nanoseconds, microseconds, dB, number, kilobytes, bytes, ethernetFrames, packets, users
- ], comment: "units of measure for the measurement result"},
-
- measType: { presence: required, comment: "measurement name in 3GPP or
- vendor-specific format;
-
- vendor specific names are preceded with VS"}
-
- ]}
-
- }}
+ pmDictionary: {
+ presence: required,
+ structure: {
+ pmDictionaryHeader: {
+ presence: required,
+ structure: {
+ nfType: {
+ presence: required,
+ comment: "NF type; should match the string used in the perf3gpp eventName"
+ },
+ pmDefSchemaVsn: {
+ presence: required,
+ value: 1.0,
+ comment: "PM Dictionary Schema Version"
+ },
+ pmDefVsn: {
+ presence: required,
+ comment: "vendor-defined PM Dictionary version"
+ },
+ vendor: {
+ presence: required,
+ comment: "vendor of the NF type"
+ }
+ }
+ },
+ pmDictionaryMeasurements: {
+ presence: required,
+ array: [
+ iMeasInfoId: {
+ presence: required,
+ comment: "vendor-defined integer measurement group identifier"
+ },
+ iMeasType: {
+ presence: required,
+ comment: "vendor-defined integer identifier for the measType; must be combined with measInfoId to identify a specific measurement."
+ },
+ measAdditionalFields: {
+ presence: required,
+ comment: "vendor-specific PM Dictionary fields",
+ array: [
+ keyValuePair: {
+ presence: required,
+ structure: {
+ key: {
+ presence: required,
+ value: measAggregationLevels,
+ comment:"Nokia-specific field"
+ },
+ value: {
+ presence: required,
+ value: [NGBTS, NGCELL, IPNO, IPSEC, ETHIF],
+ comment: "list of one or more aggregation levels that Nokia recommends for this measurement; for example, if the value is NGBTS NGCELL, then Nokia recommends this measurement be aggregated on the 5G BTS level and the 5G Cell level"
+ }
+ }
+ }
+ ]
+ },
+ measChangeType: {
+ presence: required,
+ value: [added, modified, deleted],
+ comment: "indicates the type of change that occurred during measLastChange"
+ },
+ measCollectionMethod: {
+ presence: required,
+ value: [CC, SI, DER, Gauge, Average],
+ comment: "the measurement collection method; CC, SI, DER and Gauge are as defined in 3GPP; average contains the average value of the measurement during the granularity period"
+ },
+ measCondition: {
+ presence: required,
+ comment: "description of the condition causing the measurement"
+ },
+ measDescription: {
+ presence: required,
+ comment: "description of the measurement information and purpose"
+ },
+ measFamily: {
+ presence: required,
+ comment: "abbreviation for a family of measurements, in 3GPP format,or vendor defined"
+ },
+ measInfoId: {
+ presence: required,
+ comment: "name for a group of related measurements in 3GPP format or vendor defined"
+ },
+ measLastChange: {
+ presence: required,
+ comment: "version of the PM Dictionary the last time this measurement was added, modified or deleted"
+ },
+ measObjClass: {
+ presence: required,
+ value: [NGBTS, NGCELL, IPNO, IPSEC, ETHIF],
+ comment: "measurement object class"
+ },
+ measResultRange: {
+ presence: optional,
+ comment: "range of the measurement result; only necessary when the range is smaller than the full range of the data type"
+ },
+ measResultType: {
+ presence: required,
+ value: [float, unit32, uint64],
+ comment: "data type of the measurement result"
+ },
+ measResultUnits: {
+ presence: required,
+ value: [ seconds, minutes, nanoseconds, microseconds, dB, number, kilobytes, bytes, ethernetFrames, packets, users],
+ comment: "units of measure for the measurement result"
+ },
+ measType: {
+ presence: required,
+ comment: "measurement name in 3GPP or vendor-specific format; vendor specific names are preceded with VS"
+ }
+ ]
+ }
+ }
+ }
...
PM Dictionary Example
-~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++
The following is a sample PM Dictionary in both bracketed and
indent-style YAML formats
----
# PM Dictionary perf3gpp measurements for the Nokia gnb NF (bracket
style yaml)
-.. code-block:: text
+.. code-block:: yaml
+
pmDictionary: {
pmDictionaryHeader: {
-
nfType: gnb,
-
pmDefSchemaVsn: 1.0,
-
pmDefVsn: 5G19\_1906\_002,
-
- vendor: Nokia
-
- },
-
+ vendor: Nokia },
pmDictionaryMeasurements: [
-
{
-
- iMeasInfoId: 2204,
-
- iMeasType: 1,
-
- measAdditionalFields: {
-
- measAggregationLevels: "NGBTS NGCELL",
-
- },
-
- measCollectionMethod: CC,
-
- measCondition: "This measurement is updated when X2AP: SgNB Modification Required message is sent to MeNB with the SCG Change Indication set as PSCellChange.",
-
- measDescription: "This counter indicates the number of intra gNB intra
- frequency PSCell change attempts.",
-
- measFamily: NINFC,
-
- measInfoId: "NR Intra Frequency PSCell Change",
-
- measLastChange: 5G18A\_1807\_003,
-
- measObjClass: NGCELL,
-
- measResultRange: 0..4096,
-
- measResultType: integer,
-
- measResultUnits: number,
-
- measType: VS.NINFC.IntraFrPscelChAttempt
-
- },
-
+ iMeasInfoId: 2204,
+ iMeasType: 1,
+ measAdditionalFields: { measAggregationLevels: "NGBTS NGCELL"},
+ measCollectionMethod: CC,
+ measCondition: "This measurement is updated when X2AP: SgNB Modification Required message is sent to MeNB with the SCG Change Indication set as PSCellChange.",
+ measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change attempts.",
+ measFamily: NINFC,
+ measInfoId: "NR Intra Frequency PSCell Change",
+ measLastChange: 5G18A\_1807\_003,
+ measObjClass: NGCELL,
+ measResultRange: 0..4096,
+ measResultType: integer,
+ measResultUnits: number,
+ measType: VS.NINFC.IntraFrPscelChAttempt},
{
-
- iMeasInfoId: 2204,
-
- iMeasType: 2,
-
- measAdditionalFields: {
-
- measAggregationLevels: "NGBTS NGCELL",
-
- },
-
- measCollectionMethod: CC,
-
- measCondition: "This measurement is updated when the TDCoverall timer
- has elapsed before gNB receives the X2AP: SgNB Modification Confirm
- message.",
-
- measDescription: "This measurement the number of intra gNB intra
- frequency PSCell change failures due to TDCoverall timer expiry.",
-
- measFamily: NINFC,
-
- measInfoId: "NR Intra Frequency PSCell Change",
-
- measLastChange: 5G18A\_1807\_003,
-
- measObjClass: NGCELL,
-
- measResultRange: 0..4096,
-
- measResultType: integer,
-
- measResultUnits: number,
-
- measType: VS.NINFC.IntraFrPscelChFailTdcExp
-
- },
-
+ iMeasInfoId: 2204,
+ iMeasType: 2,
+ measAdditionalFields: {measAggregationLevels: "NGBTS NGCELL"},
+ measCollectionMethod: CC,
+ measCondition: "This measurement is updated when the TDCoverall timer has elapsed before gNB receives the X2AP: SgNB Modification Confirm message.",
+ measDescription: "This measurement the number of intra gNB intra frequency PSCell change failures due to TDCoverall timer expiry.",
+ measFamily: NINFC,
+ measInfoId: "NR Intra Frequency PSCell Change",
+ measLastChange: 5G18A\_1807\_003,
+ measObjClass: NGCELL,
+ measResultRange: 0..4096,
+ measResultType: integer,
+ measResultUnits: number,
+ measType: VS.NINFC.IntraFrPscelChFailTdcExp},
{
-
- iMeasInfoId: 2204,
-
- iMeasType: 3,
-
- measAdditionalFields: {
-
- measAggregationLevels: "NGBTS NGCELL",
-
- },
-
- measCondition: "This measurement is updated when MeNB replies to X2AP:
- SgNB Modification Required message with the X2AP: SgNB Modification
- Refuse message.",
-
- measCollectionMethod: CC,
-
- measDescription: "This counter indicates the number of intra gNB intra
- frequency PSCell change failures due to MeNB refusal.",
-
- measFamily: NINFC,
-
- measInfoId: "NR Intra Frequency PSCell Change",
-
- measLastChange: 5G19\_1906\_002,
-
- measObjClass: NGCELL,
-
- measResultRange: 0..4096,
-
- measResultType: integer,
-
- measResultUnits: number,
-
- measType: VS.NINFC.IntraFrPscelChFailMenbRef
-
- }
-
- ]
-
+ iMeasInfoId: 2204,
+ iMeasType: 3,
+ measAdditionalFields: { measAggregationLevels: "NGBTS NGCELL"},
+ measCondition: "This measurement is updated when MeNB replies to X2AP: SgNB Modification Required message with the X2AP: SgNB Modification Refuse message.",
+ measCollectionMethod: CC,
+ measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change failures due to MeNB refusal.",
+ measFamily: NINFC,
+ measInfoId: "NR Intra Frequency PSCell Change",
+ measLastChange: 5G19\_1906\_002,
+ measObjClass: NGCELL,
+ measResultRange: 0..4096,
+ measResultType: integer,
+ measResultUnits: number,
+ measType: VS.NINFC.IntraFrPscelChFailMenbRef }
+ ]
}
-.. code-block:: text
+.. code-block:: yaml
# PM Dictionary perf3gpp measurements for the Nokia gnb NF (indented
style yaml)
measCondition: "This measurement is updated when X2AP: SgNB Modification Required message is sent to MeNB with the SCG Change Indication set as PSCellChange."
- measDescription: "This counter indicates the number of intra gNB intra
- frequency PSCell change attempts."
+ measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change attempts."
measFamily: NINFC
measCollectionMethod: CC
- measCondition: "This measurement is updated when the TDCoverall timer
- has elapsed before gNB receives the X2AP: SgNB Modification Confirm
- message."
+ measCondition: "This measurement is updated when the TDCoverall timer has elapsed before gNB receives the X2AP: SgNB Modification Confirm message."
- measDescription: "This measurement the number of intra gNB intra
- frequency PSCell change failures due to TDCoverall timer expiry."
+ measDescription: "This measurement the number of intra gNB intra frequency PSCell change failures due to TDCoverall timer expiry."
measFamily: NINFC
measCollectionMethod: CC
- measCondition: "This measurement is updated when MeNB replies to X2AP:
- SgNB Modification Required message with the X2AP: SgNB Modification
- Refuse message."
+ measCondition: "This measurement is updated when MeNB replies to X2AP: SgNB Modification Required message with the X2AP: SgNB Modification Refuse message."
- measDescription: "This counter indicates the number of intra gNB intra
- frequency PSCell change failures due to MeNB refusal."
+ measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change failures due to MeNB refusal."
measFamily: NINFC
FM Meta Data
-------------
+~~~~~~~~~~~~~
FM Meta Data enables vendors to provide meta information about FM events
using a set of standard keywords. FM Meta Data is conveyed in the YAML
make machine processing of FM Meta Data Keywords easier to perform.
Alarm Meta Data Keywords
-~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
The following is a list of standard Alarm Meta Data Keywords. Note: the
keywords are in CAPS so they can be easily found within the YAML
+---------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Fault Meta Data Keywords
-~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++
The following is a list of standard Fault Meta Data Keywords. Note: the
keywords are in CAPS so they can be easily found within the YAML
+---------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
FM Meta Data Example
-~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++
The following is a snippet of a fault event registration showing use of
the FM Meta Data keywords. Note: it is recommended the information be
}
YAML Examples
-=============
+^^^^^^^^^^^^^
An example YAML file is provided below which registers some events for a
hypothetical VNF. Note: some of the lines have been manually
easier to rapidly find examples of different types of events.
Fault
------
+~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for Fault\_vMrf\_alarm003
}}
-.. code-block:: text
+.. code-block:: yaml
# registration for clearing Fault\_vMrf\_alarm003Cleared
}}
Heartbeat
----------
+~~~~~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for Heartbeat\_vMRF
Measurements
-------------
+~~~~~~~~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for Mfvs\_vMRF
Syslog
-------
+~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for Syslog\_vMRF
Mobile Flow
------------
+~~~~~~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for mobileFlow
Sip Signaling
--------------
+~~~~~~~~~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for sipSignaling
Voice Quality
--------------
+~~~~~~~~~~~~~~
-.. code-block:: text
+.. code-block:: yaml
# registration for voiceQuality
Rules
------
+~~~~~~
-.. code-block:: text
+.. code-block:: yaml
#Rules
Appendix: Historical Change Log
-===============================
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For the latest changes, see the Change Block just before the Table of
Contents.
.. Copyright 2017 AT&T Intellectual Property, All rights reserved
.. Copyright 2017-2018 Huawei Technologies Co., Ltd.
-===============================
+.. _ves_event_listener_7_1:
+
Service: VES Event Listener 7.1
-===============================
+-------------------------------
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| **Legal Disclaimer** |
.. contents:: Table of Contents
Introduction
-============
+^^^^^^^^^^^^
This document describes the RESTful interface for the VES Event
Listener. The VES acronym originally stood for Virtual-function Event
of streaming events.
Event Registration
-------------------
+~~~~~~~~~~~~~~~~~~
All events must be compliant with the common event format, but specific
events identified by their eventNames, may require that certain fields,
that should be performed on those eventNames.
Naming Standards for eventName
-------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To prevent naming collisions, eventNames sent as part of the
commonEventHeader, should conform to the following naming convention
- Other\_So:WanBonding\_InstantiationPart1Complete
EventId Use Cases Examples
---------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Author: Alok Gupta]:
.. image:: Use-Case-2.png
Measurement Expansion Fields
-----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When expansion fields are used, the goal is to avoid custom development
by the service provider collecting the fields, since custom development
and isHomogeneous keywords.
Syslogs
--------
+~~~~~~~~
Syslog’s can be classified as either Control or Session/Traffic. They
differ by message content and expected volume:
High volume session logging should use a file-based transport solution.
Support for Protocols Other Than HTTPS
---------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This API specification describes an HTTPS RESTful interface using the
JSON content-type.
Protobuf, websockets, or Apache Avro.
Versioning
-----------
+~~~~~~~~~~~
Three types of version numbers supported by this specification:
to the field descriptions) will increment only the minor number.
Field Block Versions
-~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++
A summary of the latest field block version enums as of this version of
the API spec is provided below:
- voiceQualityFieldsVersion: 4.0
Security
-========
+^^^^^^^^
Event sources must identify themselves to the VES Event Listener.
Examples are provided below.
Sample Request and Response
----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sample Request
-~~~~~~~~~~~~~~
+++++++++++++++
+-----------------------------------------------------------------+
| POST /eventListener/v7 HTTP/1.1 |
+-----------------------------------------------------------------+
Sample Success Response
-~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++
+--------------------------+
| HTTPS/1.1 202 Accepted |
+--------------------------+
Mutual SSL Certificate Authentication
--------------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If service provider VES Event Listener support for Mutual SSL
Certification Authentication is available, event sources must initialize
Authentication must be used as described above.
Resource Structure
-==================
+^^^^^^^^^^^^^^^^^^
REST resources are defined with respect to a ServerRoot:
eventsource when it is instantiated. The {Port} above is typically 8443.
Common Event Format
-===================
+^^^^^^^^^^^^^^^^^^^^
A JSON schema describing the Common Event Format is provided below and
is reproduced in the tables that follow.
capitalized.
Common Event Datatypes
-----------------------
+~~~~~~~~~~~~~~~~~~~~~~~~
Datatype: arrayOfJsonObject
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
The arrayOfJsonObject datatype provides an array of json objects, each
of which is describ ed by name, schema and other meta-information. It
+---------------------+------------------+-------------+-----------------------+
Datatype: arrayOfNamedHashMap
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++
The arrayOfNamedHashMap datatype provides an array of hashMaps, each of
which is associated with a descriptive name. It consists of the
+-----------------------+--------------------+-------------+-------------------------+
Datatype: event
-~~~~~~~~~~~~~~~
+++++++++++++++++
The event datatype consists of the following fields which constitute the
‘root level’ of the common event format:
+--------------------------------+--------------------------------+-------------+------------------------------------------------------+
Datatype: eventList
-~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++
The eventList datatype consists of the following fields:
+-------------+-------------+-------------+-------------------+
Datatype: hashMap
-~~~~~~~~~~~~~~~~~
++++++++++++++++++++
The hashMap datatype is an ‘associative array’, which is an unordered
collection of key-value pairs of the form “key”: “value”, where each key
acronyms; only the first letter of each acronym shall be capitalized.
Datatype: jsonObject
-~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++
The jsonObject datatype provides a json object schema, name and other
meta-information along with one or more object instances that conform to
+--------------------------+--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: jsonObjectInstance
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++
The jsonObjectInstance datatype provides meta-information about an
instance of a jsonObject along with the actual object instance:
+-------------------------------+--------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: key
-~~~~~~~~~~~~~
++++++++++++++++
The key datatype is a tuple which provides the name of a key along with
its value and relative order; it consists of the following fields:
+------------+-----------+-------------+----------------------------------------------------------------------+
Datatype: namedHashMap
-~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++
The namedHashMap datatype is a hashMap which is associated with and
described by a name; it consists of the following fields:
+-----------+-----------+-------------+--------------------------------------------------+
Datatype: requestError
-~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++
The requestError datatype defines the standard request error data
structure:
+-------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: vendorNfNameFields
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++
The vendorNfNameFields provides vendor, nf and nfModule identifying
information:
+----------------+----------+-------------+-----------------------------------------------------+
‘Common Event Header’ Datatypes
--------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Datatype: commonEventHeader
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
The commonEventHeader datatype consists of the following fields common
to all events:
+---------------------------+-------------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: internalHeaderFields
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++
The internalHeaderFields datatype is an undefined object which can
contain arbitrarily complex JSON structures. It is intended to be
Listener.
Technology Independent Datatypes
---------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
‘Fault’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++
Datatype: faultFields
-^^^^^^^^^^^^^^^^^^^^^
+*********************
The faultFields datatype consists of the following fields:
+-------------------------------+-----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Heartbeat’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
Datatype: heartbeatFields
-^^^^^^^^^^^^^^^^^^^^^^^^^
+*************************
The heartbeatFields datatype is an optional field block for fields
specific to heartbeat events; it consists of the following fields:
+--------------------------+-----------+-------------+------------------------------------------------------------------------------------------------------------------+
‘Measurements’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++++
Note: NFs are required to report exactly one Measurement event per
period per sourceName.
Datatype: codecsInUse
-^^^^^^^^^^^^^^^^^^^^^
+*********************
The codecsInUse datatype consists of the following fields describing the
number of times an identified codec was used over the
+------------------+-----------+-------------+--------------------------------+
Datatype: cpuUsage
-^^^^^^^^^^^^^^^^^^
+*******************
The cpuUsage datatype defines the usage of an identifier CPU and
consists of the following fields:
+-------------------------+----------+-------------+-------------------------------------------------------------------------------------------------------------------------------------+
Datatype: diskUsage
-^^^^^^^^^^^^^^^^^^^
+********************
The diskUsage datatype defines the usage of a disk and consists of the
following fields:
+-----------------------------+----------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: filesystemUsage
-^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The filesystemUsage datatype consists of the following fields:
+-----------------------+----------+-------------+--------------------------------------------------------+
Datatype: hugePages
-^^^^^^^^^^^^^^^^^^^
+********************
The hugePages datatype provides metrics on system hugePages; it consists
of the following fields:
+-----------------------+----------+-------------+---------------------------------------+
Datatype: ipmi (Intelligent Platform Management Interface)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+***********************************************************
The ipmi datatype provides intelligent platform management interface
metrics; it consists of the following fields:
+---------------------------------------+--------------------------------------+-------------+---------------------------------------------------+
Datatype: ipmiBaseboardTemperature
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+************************************
The ipmiBaseboardTemperature datatype consists of the following fields
which describe ipmi baseboard temperature metrics:
+-----------------------------------+----------+-------------+--------------------------------------------------------------+
Datatype: ipmiBaseboardVoltageRegulator
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*****************************************
The ipmiBaseboardVoltageRegulator datatype consists of the following
fields which describe ipmi baseboard voltage regulator metrics:
+----------------------------------------+----------+-------------+--------------------------------------------------+
Datatype: ipmiBattery
-^^^^^^^^^^^^^^^^^^^^^
+**********************
The ipmiBattery datatype consists of the following fields which describe
ipmi battery metrics:
+-----------------------+----------+-------------+------------------------------+
Datatype: ipmiFan
-^^^^^^^^^^^^^^^^^
+********************
The ipmiFan datatype consists of the following fields which describe
ipmi fan metrics:
+-----------------+----------+-------------+---------------------------------------------+
Datatype: ipmiGlobalAggregateTemperatureMargin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+***********************************************
The ipmiGlobalAggregateTemperatureMargin datatype consists of the
following fields:
+----------------------------------------------+----------+-------------+-----------------------------------------------------------------------------+
Datatype: ipmiHsbp
-^^^^^^^^^^^^^^^^^^
+*******************
The ipmiHsbp datatype provides ipmi hot swap backplane power metrics; it
consists of the following fields:
+-------------------+----------+-------------+----------------------------------------------------+
Datatype: ipmiNic
-^^^^^^^^^^^^^^^^^
+******************
The ipmiNic datatype provides network interface control care metrics; it
consists of the following fields:
+------------------+----------+-------------+-----------------------------------------------------+
Datatype: ipmiPowerSupply
-^^^^^^^^^^^^^^^^^^^^^^^^^
+**************************
The ipmiPowerSupply datatype provides ipmi power supply metrics; it
consists of the following fields:
+------------------------------------+----------+-------------+------------------------------------------------------------------------+
Datatype: ipmiProcessor
-^^^^^^^^^^^^^^^^^^^^^^^
+************************
The ipmiProcessor datatype provides ipmi processor metrics; it consists
of the following fields:
+---------------------------------------------+---------------------------------------------+-------------+---------------------------------------------------------+
Datatype: latencyBucketMeasure
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*******************************
The latencyBucketMeasure datatype consists of the following fields which
describe the number of counts falling within a defined latency bucket:
+--------------------------+----------+-------------+------------------------------------------------------------+
Datatype: load
-^^^^^^^^^^^^^^
+****************
The load datatype provides metrics on system cpu and io utilization
obtained using /proc/loadavg; it consists of the following fields:
+-------------+----------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: machineCheckException
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+********************************
The machineCheckException datatype describes machine check exceptions;
it consists of the following fields:
+---------------------------------+----------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: measurementFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+****************************
The measurementFields datatype consists of the following fields:
+------------------------------+-----------------------------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: memoryUsage
-^^^^^^^^^^^^^^^^^^^^^
+**********************
The memoryUsage datatype defines the memory usage of a virtual machine
and consists of the following fields:
+------------------------+----------+-------------+-----------------------------------------------------------------------------------------------------------------------------------+
Datatype: nicPerformance
-^^^^^^^^^^^^^^^^^^^^^^^^
+*************************
The nicPerformance datatype consists of the following fields which
describe the performance and errors of an of an identified virtual
+------------------------------------------+----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: processorDimmAggregateThermalMargin
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+**********************************************
The processorDimmAggregateThermalMargin datatype provides intelligent
platform management interface (ipmi) processor dual inline memory module
+--------------------------------------------------+----------+-------------+-------------------------------------------------------------------------------------------------------------------+
Datatype: processStats
-^^^^^^^^^^^^^^^^^^^^^^
+***********************
The processStats datatype provides metrics on system processes; it
consists of the following fields:
+---------------------+----------+-------------+-------------------------------------------------------+
‘Notification’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++++
Datatype: notificationFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+******************************
The notificationFields datatype consists of the following fields:
Other notificationFields are not used for fileReady.
‘Other’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++
Datatype: otherFields
-^^^^^^^^^^^^^^^^^^^^^
+**********************
The otherFields datatype defines fields for events belonging to the
'other' domain of the commonEventHeader domain enumeration; it consists
+-----------------------+-----------------------+-------------+--------------------------------------------------------------------------------------------------------------+
‘perf3gpp’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
Datatype: measDataCollection
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*****************************
The measDataCollection datatype defines a 3GPP measurement collection
structure aligned with the 3GPP PM format; it consists of the following
+---------------------------------+----------------+-------------+------------------------------------------------------------------------------------+
Datatype: measInfo
-^^^^^^^^^^^^^^^^^^
+********************
The measInfo datatype provides measurement information; it consists of
the following fields:
+--------------+-------------------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------+
Datatype: measInfoIdInteger
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+****************************
The measInfoIdInteger datatype provides an integer measurement group
identifier; it consists of the following fields:
+---------------+-----------+-------------+----------------------------------------+
Datatype: measInfoIdString
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The measInfoIdString datatype provides a string measurement group
identifier; it consists of the following fields:
+---------------+-----------+-------------+---------------------------------------+
Datatype: measResultInteger
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+****************************
The measResultInteger datatype provides an integer 3GPP PM measurement
result; it consists of the following fields:
+----------+-----------+-------------+------------------------------------+
Datatype: measResultNull
-^^^^^^^^^^^^^^^^^^^^^^^^
+*************************
The measResultNull datatype provides a null 3GPP PM measurement result;
it consists of the following fields:
+----------+-----------+-------------+------------------------------------+
Datatype: measResultNumber
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The measResultNumber datatype provides a number 3GPP PM measurement
result; it consists of the following fields:
+----------+-----------+-------------+------------------------------------+
Datatype: measResultString
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The measResultString datatype provides a string 3GPP PM measurement
result; it consists of the following fields:
+----------+-----------+-------------+------------------------------------+
Datatype: measTypesInteger
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The measTypesInteger datatype provides an array of integer measurement
identifiers associated with the measurement results; it consists of the
+------------------+---------------+-------------+------------------------------------------------------------------------------------+
Datatype: measTypesString
-^^^^^^^^^^^^^^^^^^^^^^^^^
+**************************
The measTypesString datatype provides an array of string measurement
identifiers associated with the measurement results; it consists of the
+------------------+--------------+-------------+-----------------------------------------------------------------------------------+
Datatype: measValues
-^^^^^^^^^^^^^^^^^^^^
+*********************
The measValues datatype provides 3GPP measurement values; it consists of
the following fields:
+-------------------+---------------------------------------------------------------------------------------------------------------------+-------------+-----------------------------------------------------------------------------------+
Datatype: perf3gppFields
-^^^^^^^^^^^^^^^^^^^^^^^^
+*************************
The perf3gppFields datatype defines fields for 3GPP PM format events,
based on 3GPP TS 28.550, belonging to the 'perf3gpp' domain of the
+-------------------------+----------------------+-------------+-----------------------------------------+
‘pnfRegistration’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++++++++
Datatype: pnfRegistrationFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+********************************
The pnfRegistrationFields datatype defines fields for events belonging
to the 'pnfRegistration' domain of the commonEventHeader domain
+--------------------------------+-----------+-------------+------------------------------------------------------------------------------------------------------------------------+
‘State Change’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++++
Datatype: stateChangeFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*****************************
The stateChangeFields datatype consists of the following fields:
+----------------------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------+
‘Syslog’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++
Datatype: syslogFields
-^^^^^^^^^^^^^^^^^^^^^^
+***********************
The syslogFields datatype consists of the following fields:
https://www.iana.org/assignments/syslog-parameters/syslog-parameters.xhtml
‘Threshold Crossing Alert’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++++++++++++++++
Datatype: counter
-^^^^^^^^^^^^^^^^^
+******************
The counter datatype consists of the following fields:
+---------------------+-----------+-------------+--------------------------------------------------------------------------------+
Datatype: thresholdCrossingAlertFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+****************************************
The thresholdCrossingAlertFields datatype consists of the following
fields:
+-----------------------------------+---------------+-------------+-------------------------------------------------------------------------------------------------------------------------------+
Technology Specific Datatypes
------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mobile Flow’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++++
Datatype: gtpPerFlowMetrics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+****************************
The gtpPerFlowMetrics datatype consists of the following fields:
+------------------------------------+-----------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: mobileFlowFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+***************************
The mobileFlowFields datatype consists of the following fields:
+---------------------------+----------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
‘SipSignaling’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++++
Datatype: sipSignalingFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*****************************
The sipSignalingFields datatype communicates information about sip
signaling messages, parameters and signaling state; it consists of the
+-----------------------------+----------------------+-------------+---------------------------------------------------------------------------------------------------------------------+
‘Voice Quality’ Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++++++
Datatype: endOfCallVqmSummaries
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*********************************
The endOfCallVqmSummaries datatype provides end of call voice quality
metrics; it consists of the following fields:
+---------------------------------+----------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Datatype: voiceQualityFields
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+*****************************
The voiceQualityFields datatype provides statistics related to customer
facing voice products; consists of the following fields:
+-----------------------------+--------------------------+-------------+---------------------------------------------------------------------------------------------------------------------+
Exceptions
-==========
+^^^^^^^^^^^
RESTful Web Services Exceptions
--------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RESTful services generate and send exceptions to clients in response to
invocation errors. Exceptions send HTTP status codes (specified later in
+------------------+----------------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Service Exceptions
-------------------
+~~~~~~~~~~~~~~~~~~~
When a service is not able to process a request, and retrying the
request with the same information will also result in a failure, and
Table - Service Exceptions
Policy Exceptions
------------------
+~~~~~~~~~~~~~~~~~~
When a service is not able to complete because the request fails to
meet a policy criteria, then the service will issue a fault using the
Table - Policy Exceptions
RESTful Web Services Definition
-===============================
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
REST Operation Overview
------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~
REST Operation Summary
-~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++
+------------------------+------------+----------------------------------------------------------------------------+
| **Operation Action** | **HTTP** | **Resource URL relative to {ServerRoot}, which is defined in section 3** |
Table - REST Operation Summary
Api Versioning
-~~~~~~~~~~~~~~
++++++++++++++++
apiVersion is used to describe the major version number of the event
listener API (which is the same as the major version number of this
patch version of 7.1, which is 7.1.0.
Buffering of Events
-~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++
{ServerRoot} is defined in section 3 of this document, which defines the
REST resource URL. One or more FQDNs may be provisioned in an event
oldest events first).
Message Size
-~~~~~~~~~~~~
++++++++++++++++
Message size should be limited to 2 megabytes of uncompressed text sent
as application/json.
Operation: publishAnyEvent
---------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
Functional Behavior
-~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++
Allows authorized clients to publish any single event to the VES event
listener.
messages
Call Flow
-~~~~~~~~~
+++++++++++
.. image:: publish-event-flow.png
Figure - publishAnyEvent Call Flow
Input Parameters
-~~~~~~~~~~~~~~~~
++++++++++++++++++
Header Fields (note: all parameter names shall be treated as
case-insensitive):
+-----------------+-----------------+-----------------+-----------------------------------------------------------+
Output Parameters
-~~~~~~~~~~~~~~~~~
+++++++++++++++++++
Header fields:
+-----------------+-----------------+--------------------+----------------------------------+
HTTP Status Codes
-~~~~~~~~~~~~~~~~~
+++++++++++++++++++
+----------+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| *Code* | *Reason Phrase* | *Description* |
+----------+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Sample Request and Response
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+++++++++++++++++++++++++++++
Sample Request
-^^^^^^^^^^^^^^
+***************
+-------------------------------------------------------------------------------+
| POST /eventListener/v7 HTTP/1.1 |
+-------------------------------------------------------------------------------+
Sample Success Response
-^^^^^^^^^^^^^^^^^^^^^^^
+************************
+--------------------------+
| HTTPS/1.1 202 Accepted |
+--------------------------+
Sample Error Responses
-^^^^^^^^^^^^^^^^^^^^^^
+************************
Sample Policy Exception
-'''''''''''''''''''''''
+""""""""""""""""""""""""
+---------------------------------------------------------------+
| HTTPS/1.1 400 Bad Request |
+---------------------------------------------------------------+
Sample Service Exception
-''''''''''''''''''''''''
+"""""""""""""""""""""""""
+-----------------------------------------------------+
| HTTPS/1.1 400 Bad Request |
+-----------------------------------------------------+
Operation: publishEventBatch
-----------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Functional Behavior
-~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++
Allows authorized clients to publish a batch of events to the VES event
listener.
messages
Call Flow
-~~~~~~~~~
++++++++++++
.. image:: publish-event-flow.png
Figure – publishEventBatch Call Flow
Input Parameters
-~~~~~~~~~~~~~~~~
++++++++++++++++++
Header Fields (note: all parameter names shall be treated as
case-insensitive):
+-----------------+-----------------+-----------------+----------------------------------------------------------+
Output Parameters
-~~~~~~~~~~~~~~~~~
++++++++++++++++++++
Header fields:
+-----------------+-----------------+--------------------+----------------------------------+
HTTP Status Codes
-~~~~~~~~~~~~~~~~~
+++++++++++++++++++
+----------+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| *Code* | *Reason Phrase* | *Description* |
+----------+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Sample Request and Response
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
++++++++++++++++++++++++++++++
Sample Request
-^^^^^^^^^^^^^^
+****************
+-------------------------------------------------------------------------------+
| POST /eventListener/v7/eventBatch HTTP/1.1 |
+-------------------------------------------------------------------------------+
Sample Success Response
-^^^^^^^^^^^^^^^^^^^^^^^
+*************************
+--------------------------+
| HTTPS/1.1 202 Accepted |
+--------------------------+
Sample Error Responses
-^^^^^^^^^^^^^^^^^^^^^^
+************************
Sample Policy Exception
-'''''''''''''''''''''''
+""""""""""""""""""""""""
+---------------------------------------------------------------+
| HTTPS/1.1 400 Bad Request |
+---------------------------------------------------------------+
Sample Service Exception
-''''''''''''''''''''''''
+"""""""""""""""""""""""""
+-----------------------------------------------------+
| HTTPS/1.1 400 Bad Request |
+-----------------------------------------------------+
Terminology
-===========
+^^^^^^^^^^^^
Terminology used in this document is summarized below:
re-usable, and responsible for a single capability.
Appendix: Historical Change Log
-===============================
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For the latest changes, see the Change Block just before the Table of
Contents.