.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2018 Tech Mahindra Ltd.


Mapper
=====================

| **Problem:** Different VNF vendors generate event and telemetry data in different formats. Out of the box, all VNF vendors may not support VES format. 
| **Solution**: A generic adapter which can convert different formats of event and telemetry data to VES format can be of use here. 
| *Note*: Currently support snmp trap telemetry data

There are 2 micro services in the mapper functionality.

**Universal VES Adapter** - It converts the telemetry data into the required ves format and publishes to the dmaap for further action to be taken. 
 *Note*: Currently it supports conversion of snmp traps generated by SNMP TRAP Collector. With some work, it can support other collectors as well.


**SnmpMapper** - It provides web UI to upload mapping files which are then stored into the postgres database. VES adapter refers to these mapping files at the time of converting the events into VES events.



.. toctree::
   :maxdepth: 1

   ./flow.rst
   ./delivery.rst
   ./installation.rst
   ./MappingFile.rst
  ./SampleSnmpTrapConversion
