Merge "Add RST Files for SNMPTRAP"
diff --git a/docs/sections/services/snmptrap/administration.rst b/docs/sections/services/snmptrap/administration.rst
new file mode 100644
index 0000000..950bada
--- /dev/null
+++ b/docs/sections/services/snmptrap/administration.rst
@@ -0,0 +1,45 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Administration
+==============
+
+Processes
+---------
+
+**SNMPTRAP** runs as a single (python) process inside the container. You can find it using the following commands:
+
+Inside the container
+^^^^^^^^^^^^^^^^^^^^
+.. code-block:: bash
+
+ `ps -ef | grep snmptrap.py | grep -v grep`
+
+
+Outside the container
+^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: bash
+
+ docker exec -it <container name> `ps -ef | grep snmptrap.py | grep -v grep`
+
+
+Actions
+-------
+
+The **SNMPTRAP** container can be monitored for status by running the command:
+
+.. code-block:: bash
+
+ `bin/snmptrapd.sh status`
+
+Output from this command will be two-fold. First will be the textual response:
+
+ `Stopping snmptrap... Stopped.`
+
+Also available is the return code of the command:
+
+ 0 - if command executed successfully
+ 1 - if the command failed, and/or the process is not running
+
+
diff --git a/docs/sections/services/snmptrap/architecture.rst b/docs/sections/services/snmptrap/architecture.rst
new file mode 100644
index 0000000..f50f1d3
--- /dev/null
+++ b/docs/sections/services/snmptrap/architecture.rst
@@ -0,0 +1,85 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Architecture
+============
+
+**SNMPTRAP** (or "trapd", as in trap daemon) is a network facing ONAP platform
+component.
+
+The simple network management protocol (or "SNMP", for short) is a
+standardized communication protocol used between managed devices (physical,
+virtual - or anything in between!) and a management system. It is used to
+relay data that can be valuable in the operation, fault identification and
+planning processes of all networks.
+
+It is the "front line" of management in all environments.
+
+SNMP utilizes a message called a "trap" to inform SNMP managers of abnormal
+or changed conditions on a resource that is running a SNMP agent. These
+agents can run on physical or virtual resources (no difference in reporting)
+and can notify on anything from hardware states, resource utilization,
+software processes or anything else specific to the agent's environment.
+
+
+Capabilities
+------------
+
+**SNMPTRAP** receives simple network management protocol ("SNMP") traps
+and publishes them to a message router (DMAAP/MR) instance based on
+attributes obtained from configuration binding service ("CBS").
+
+.. blockdiag::
+
+ blockdiag layers {
+ orientation = portrait
+ snmp_agent_1 -> SNMPTRAP;
+ snmp_agent_2 -> SNMPTRAP;
+ snmp_agent_n -> SNMPTRAP;
+ config binding service -> SNMPTRAP;
+ SNMPTRAP -> dmaap mr;
+
+ group l1 {
+ color = orange;
+ snmp_agent_1; snmp_agent_2; snmp_agent_n;
+ }
+ group l2 {
+ color = blue;
+ SNMPTRAP;
+ }
+ group l3 {
+ color = orange;
+ dmaap mr;
+ }
+ group l4 {
+ color = gray;
+ config binding service;
+ }
+
+ }
+
+
+Interactions
+------------
+
+
+Traps are published to DMAAP/MR in a json format. Once traps are published
+to a DMAAP/MR instance, they are available to consumers that are
+subscribed to the topic they were published to.
+
+
+Usage Scenarios
+---------------
+
+**SNMPTRAP** can be run on any device (physical, logical, container) that
+is capable of running python 3.6+ and has SNMP traps targeted at it. Running
+an instance of **SNMPTRAP** will result in arriving traps being published
+to the topic specified by config binding services. If CBS is not present,
+SNMPTRAP will look for or a JSON configuration file specified via the
+environment vvariable CBS_SIM_JSON at startup. Note that relative paths
+will be located from the bin (<SNMPTRAP base directory>/bin directory. E.g.
+
+.. code-block:: bash
+
+ CBS_SIM_JSON=../etc/snmptrapd.json
+
diff --git a/docs/sections/services/snmptrap/configuration.rst b/docs/sections/services/snmptrap/configuration.rst
new file mode 100644
index 0000000..2c8afe2
--- /dev/null
+++ b/docs/sections/services/snmptrap/configuration.rst
@@ -0,0 +1,114 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Configuration
+=============
+
+**SNMPTRAP** configuration is controlled via a single JSON 'transaction'.
+This transaction can be:
+
+ - a reply from config binding services
+
+ - a locally hosted JSON file
+
+The format of this message is described in the SNMPTRAP package, under:
+
+ ``<base install dir>/spec/snmptrap-collector-component-spec.json``
+
+There should also be a template JSON file with example/default values found at:
+
+ ``<base install dir>/etc/snmptrapd.json``
+
+If you are going to use a local file, the env variable below must be defined before SNMPTRAP runs. There is a default value set in the SNMPTRAP startup script (bin/snmptrapd.sh):
+
+ ``export CBS_SIM_JSON=../etc/snmptrapd.json``
+
+In either scenario, the format of the config message/transaction is the same. An example is described below.
+
+JSON CONFIG
+^^^^^^^^^^^
+
+The format of the JSON configuration that drives all behavior of SNMPTRAP is probably best described using an example. One can be found below:
+
+.. code-block:: json
+
+ {
+ "snmptrapd": {
+ "version": "1.3.0",
+ "title": "ONAP SNMP Trap Receiver"
+ },
+ "protocols": {
+ "transport": "udp",
+ "ipv4_interface": "0.0.0.0",
+ "ipv4_port": 6162,
+ "ipv6_interface": "::1",
+ "ipv6_port": 6162
+ },
+ "cache": {
+ "dns_cache_ttl_seconds": 60
+ },
+ "publisher": {
+ "http_timeout_milliseconds": 1500,
+ "http_retries": 3,
+ "http_milliseconds_between_retries": 750,
+ "http_primary_publisher": "true",
+ "http_peer_publisher": "unavailable",
+ "max_traps_between_publishes": 10,
+ "max_milliseconds_between_publishes": 10000
+ },
+ "streams_publishes": {
+ "sec_fault_unsecure": {
+ "type": "message_router",
+ "aaf_password": null,
+ "dmaap_info": {
+ "location": "mtl5",
+ "client_id": null,
+ "client_role": null,
+ "topic_url": "http://localhost:3904/events/ONAP-COLLECTOR-SNMPTRAP"
+ },
+ "aaf_username": null
+ }
+ },
+ "files": {
+ "runtime_base_dir": "/opt/app/snmptrap",
+ "log_dir": "logs",
+ "data_dir": "data",
+ "pid_dir": "tmp",
+ "arriving_traps_log": "snmptrapd_arriving_traps.log",
+ "snmptrapd_diag": "snmptrapd_prog_diag.log",
+ "traps_stats_log": "snmptrapd_stats.csv",
+ "perm_status_file": "snmptrapd_status.log",
+ "eelf_base_dir": "/opt/app/snmptrap/logs",
+ "eelf_error": "error.log",
+ "eelf_debug": "debug.log",
+ "eelf_audit": "audit.log",
+ "eelf_metrics": "metrics.log",
+ "roll_frequency": "hour",
+ "minimum_severity_to_log": 2
+ },
+ "trap_config": {
+ "sw_interval_in_seconds": 60,
+ "notify_oids": {
+ ".1.3.6.1.4.1.9.0.1": {
+ "sw_high_water_in_interval": 102,
+ "sw_low_water_in_interval": 7,
+ "category": "logonly"
+ },
+ ".1.3.6.1.4.1.9.0.2": {
+ "sw_high_water_in_interval": 101,
+ "sw_low_water_in_interval": 7,
+ "category": "logonly"
+ },
+ ".1.3.6.1.4.1.9.0.3": {
+ "sw_high_water_in_interval": 102,
+ "sw_low_water_in_interval": 7,
+ "category": "logonly"
+ },
+ ".1.3.6.1.4.1.9.0.4": {
+ "sw_high_water_in_interval": 10,
+ "sw_low_water_in_interval": 3,
+ "category": "logonly"
+ }
+ }
+ }
+ }
diff --git a/docs/sections/services/snmptrap/delivery.rst b/docs/sections/services/snmptrap/delivery.rst
new file mode 100644
index 0000000..fe861b0
--- /dev/null
+++ b/docs/sections/services/snmptrap/delivery.rst
@@ -0,0 +1,18 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Delivery
+========
+
+**SNMPTRAP** is delivered as a docker container. The host or VM that will
+run this container must have the docker application loaded and available
+to the userID that will be running the SNMPTRAP container.
+
+The following command will download the latest SNMPTRAP container from
+nexus and launch it in the container named "SNMPTRAP":
+
+.. code-block:: bash
+
+ docker run --detach -t --rm -p 162:6162/udp -P --name=SNMPTRAP nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap ./bin/snmptrapd.sh start
+
+
diff --git a/docs/sections/services/snmptrap/humaninterfaces.rst b/docs/sections/services/snmptrap/humaninterfaces.rst
new file mode 100644
index 0000000..53f8adc
--- /dev/null
+++ b/docs/sections/services/snmptrap/humaninterfaces.rst
@@ -0,0 +1,31 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Human Interfaces
+================
+
+Graphical
+^^^^^^^^^
+
+There are no graphical interfaces for snmptrap.
+
+Command Line
+^^^^^^^^^^^^
+
+There is a command line interface available, which is a shell script
+that provides all needed interactions with **SNMPTRAP**.
+
+Usage
+"""""
+
+ ``bin/snmptrapd.sh [start|stop|restart|status|reloadCfg]``
+
+ start - start an instance of snmptrapd inside the container
+
+ stop - terminate the snmptrapd process currently running inside container
+
+ restart - start an instance of snmptrapd inside current container
+
+ status - check and display status of snmptrapd inside container
+
+ reloadCfg - signal current instance of snmptrapd to re-request configuration from Config Binding Service
diff --git a/docs/sections/services/snmptrap/index.rst b/docs/sections/services/snmptrap/index.rst
index 5d662e0..0a27cdd 100644
--- a/docs/sections/services/snmptrap/index.rst
+++ b/docs/sections/services/snmptrap/index.rst
@@ -7,5 +7,15 @@
.. Add or remove sections below as appropriate for the platform component.
-Trap collector overview and functions to be listed
+.. toctree::
+ :maxdepth: 1
+ ./architecture.rst
+ ./delivery.rst
+ ./offeredapis.rst
+ ./logging.rst
+ ./installation.rst
+ ./configuration.rst
+ ./administration.rst
+ ./humaninterfaces.rst
+ ./release-notes.rst
diff --git a/docs/sections/services/snmptrap/installation.rst b/docs/sections/services/snmptrap/installation.rst
new file mode 100644
index 0000000..3fbb4cd
--- /dev/null
+++ b/docs/sections/services/snmptrap/installation.rst
@@ -0,0 +1,39 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Installation
+============
+
+**SNMPTRAP** is delivered as a docker container. The host or VM that
+will run this container must have the docker application loaded and
+available to the userID that will be running the SNMPTRAP container.
+
+The instructions below will download and run the latest SNMPTRAP
+container from the NEXUS repository.
+
+Environment
+-----------
+
+An environment suitable for running docker containers is recommended.
+If that is not available, SNMPTRAP source can be downloaded and run
+in a VM or on baremetal.
+
+If running from a docker container, it is assumed that the config
+binding service has been installed and is successfully instantiating
+container configurations as needed.
+
+Also required is a working DMAAP/MR message router environment. SNMPTRAP
+publishes traps to DMAAP/MR as JSON messages, and expect the host
+resources and publishing credentials to be included in the CONFIG
+BINDING SERVICE config.
+
+Steps
+-----
+
+The following command will download the latest snmptrap container
+from nexus and launch it in the container named "snmptrap":
+
+.. code-block:: bash
+
+ docker run --detach -t --rm -p 162:6162/udp -P --name=snmptrap nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.snmptrap ./bin/snmptrapd.sh start
+
diff --git a/docs/sections/services/snmptrap/logging.rst b/docs/sections/services/snmptrap/logging.rst
new file mode 100644
index 0000000..a7109a0
--- /dev/null
+++ b/docs/sections/services/snmptrap/logging.rst
@@ -0,0 +1,261 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Logging
+=======
+
+Logging is controlled by the configuration provided to **SNMPTRAP** by CBS,
+or via the fallback config file specified as the environment
+variable "CBS_SIM_JSON" at startup. The section of that JSON configuration
+that influences the various forms of application logging is referenced
+throughout this document, with examples.
+
+Using the JSON configuration, a base directory is specified for application
+data and EELF log files. Specific filenames (again, from the JSON
+config) are appended to the base directory value to create a full-path
+filename for use by SNMPTRAP.
+
+Also available is the ability to modify how frequently logs are rolled to
+time-stamped versions (and a new empty file is started) as well as what
+severity level to log to program diagnostic logs. Files will be rolled to
+an archived/timestamped version hourly. The actual archival (to a
+timestamped filename) occurs when the first trap is
+received **in a new hour** (or minute, or day - depending
+on "roll_frequency" value).
+
+Defaults are shown below:
+
+.. code-block:: json
+
+ "files": {
+ <other json data>
+ ...
+ "roll_frequency": "hour",
+ "minimum_severity_to_log": 2
+ <other json data>
+ ...
+ },
+
+
+Where to Access Information: APPLICATION DATA (TRAPS)
+-----------------------------------------------------
+
+APPLICATION DATA (TRAPS)
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+**SNMPTRAP** produces application-specific logs (e.g. trap logs/payloads,
+etc) as well as various other statistical and diagnostic logs. The
+location of these logs is controlled by the JSON config, using these
+values:
+
+.. code-block:: json
+
+ "files": {
+ "**runtime_base_dir**": "/opt/app/snmptrap",
+ "log_dir": "logs",
+ "data_dir": "data",
+ "pid_dir": "tmp",
+ "arriving_traps_log": "snmptrapd_arriving_traps.log",
+ "snmptrapd_diag": "snmptrapd_prog_diag.log",
+ "traps_stats_log": "snmptrapd_stats.csv",
+ "perm_status_file": "snmptrapd_status.log",
+ "roll_frequency": "hour",
+ "minimum_severity_to_log": 2
+ <other json data>
+ ...
+ },
+
+The base directory for all data logs is specified with:
+
+ **runtime_base_dir**
+
+Remaining log file references are appended to the *runtime_base_dir*
+value to specify a logfile location. The result using the
+above example would create the files:
+
+.. code-block:: bash
+
+ /opt/app/snmptrap/logs/snmptrapd_arriving_traps.log
+ /opt/app/snmptrap/logs/snmptrapd_prog_diag.log
+ /opt/app/snmptrap/logs/snmptrapd_stats.csv
+ /opt/app/snmptrap/logs/snmptrapd_status.log
+
+
+ARRIVING TRAPS
+^^^^^^^^^^^^^^^
+
+**SNMPTRAP** logs all arriving traps. These traps are saved in a
+filename created by appending *runtime_base_dir*, *log_dir*
+and *arriving_traps_log* from the JSON config. Using the example
+above, the resulting arriving trap log would be:
+
+.. code-block:: bash
+
+ /opt/app/snmptrap/logs/snmptrapd_arriving_traps.log
+
+An example from this log is shown below:
+
+.. code-block:: none
+
+ 1529960544.4896748 Mon Jun 25 17:02:24 2018; Mon Jun 25 17:02:24 2018 com.att.dcae.dmaap.IST3.DCAE-COLLECTOR-UCSNMP 15299605440000 1.3.6.1.4.1.999.0.1 server001 127.0.0.1 server001 v2c 751564798 0f40196a-78bb-11e8-bac7-005056865aac , "varbinds": [{"varbind_oid": "1.3.6.1.4.1.999.0.1.1", "varbind_type": "OctetString", "varbind_value": "TEST TRAP"}]
+
+*(Add: varbind type enumerations)*
+
+PUBLISHED TRAPS
+^^^^^^^^^^^^^^^
+
+SNMPTRAP's first priority is to receive and decode SNMP traps, then
+publish the results to a configured DMAAP/MR message bus. Traps that
+are successfully published (e.g. publish attempt gets a "200/ok"
+response from the DMAAP/MR server) are logged to a file named by
+the technology being used combined with the topic being published to.
+
+If you find a trap in this published log, it has been acknowledged as
+received by DMAAP/MR. If consumers complain of "missing traps", the
+source of the problem will be downstream (*not with SNMPTRAP*) if
+the trap has been logged here.
+
+For example, with a json config of:
+
+.. code-block:: json
+
+ "dmaap_info": {
+ "location": "mtl5",
+ "client_id": null,
+ "client_role": null,
+ "topic_url": "http://172.17.0.1:3904/events/ONAP-COLLECTOR-SNMPTRAP"
+
+and
+
+.. code-block:: json
+
+ "files": {
+ "**runtime_base_dir**": "/opt/app/snmptrap",
+
+result in traps that are confirmed (200/ok) as published logged to the file:
+
+.. code-block:: bash
+
+ /opt/app/snmptrap/logs/DMAAP_ONAP-COLLECTOR-SNMPTRAP.json
+
+An example from this JSON log is shown below:
+
+.. code-block:: json
+
+ {
+ "uuid": "0f40196a-78bb-11e8-bac7-005056865aac",
+ "agent address": "127.0.0.1",
+ "agent name": "server001",
+ "cambria.partition": "server001",
+ "community": "",
+ "community len": 0,
+ "epoch_serno": 15299605440000,
+ "protocol version": "v2c",
+ "time received": 1529960544.4896748,
+ "trap category": "DCAE-COLLECTOR-UCSNMP",
+ "sysUptime": "751564798",
+ "notify OID": "1.3.6.1.4.1.999.0.1",
+ "notify OID len": 9,
+ "varbinds": [
+ {
+ "varbind_oid": "1.3.6.1.4.1.999.0.1.1",
+ "varbind_type": "OctetString",
+ "varbind_value": "TEST TRAP"
+ }
+ ]
+ }
+
+
+
+EELF
+^^^^
+
+For program/operational logging, **SNMPTRAP** follows the EELF logging
+convention. Please be aware that the EELF specification results in
+messages spread across various files. Some work may be required to
+find the right location (file) that contains the message you are
+looking for.
+
+EELF logging is controlled by the configuration provided
+to **SNMPTRAP** by CBS, or via the fallback config file specified
+as an environment variable "CBS_SIM_JSON" at startup. The section
+of that JSON configuration that influences EELF logging is:
+
+.. code-block:: json
+
+ "files": {
+ <other json data>
+ ...
+ "**eelf_base_dir**": "/opt/app/snmptrap/logs",
+ "eelf_error": "error.log",
+ "eelf_debug": "debug.log",
+ "eelf_audit": "audit.log",
+ "eelf_metrics": "metrics.log",
+ "roll_frequency": "hour",
+ },
+ <other json data>
+ ...
+
+
+The base directory for all EELF logs is specified with:
+
+ **eelf_base_dir**
+
+Remaining eelf_<file> references are appended to the eelf_base_dir value
+to specify a logfile location. The result using the above example would
+create the files:
+
+.. code-block:: bash
+
+ /opt/app/snmptrap/logs/error.log
+ /opt/app/snmptrap/logs/debug.log
+ /opt/app/snmptrap/logs/audit.log
+ /opt/app/snmptrap/logs/metrics.log
+
+Again using the above example configuration, these files will be rolled
+to an archived/timestamped version hourly. The actually archival (to a
+timestamped filename) occurs when the first trap is
+received **in a new hour** (or minute, or day - depending
+on "roll_frequency" value).
+
+Error / Warning Messages
+------------------------
+
+Program Diagnostics
+^^^^^^^^^^^^^^^^^^^
+
+Detailed application log messages can be found in "snmptrapd_diag" (JSON
+config reference). These can be very verbose and roll quickly
+depending on trap arrival rates, number of varbinds encountered,
+minimum_severity_to_log setting in JSON config, etc.
+
+In the default config, this file can be found at:
+
+.. code-block:: bash
+
+ /opt/app/snmptrap/logs/snmptrapd_diag.log
+
+Messages will be in the general format of:
+
+.. code-block:: none
+
+ 2018-04-25T17:28:10,305|<module>|snmptrapd||||INFO|100||arriving traps logged to: /opt/app/snmptrap/logs/snmptrapd_arriving_traps.log
+ 2018-04-25T17:28:10,305|<module>|snmptrapd||||INFO|100||published traps logged to: /opt/app/snmptrap/logs/DMAAP_com.att.dcae.dmaap.IST3.DCAE-COLLECTOR-UCSNMP.json
+ 2018-04-25T17:28:10,306|<module>|snmptrapd||||INFO|100||Runtime PID file: /opt/app/snmptrap/tmp/snmptrapd.py.pid
+ 2018-04-25T17:28:48,019|snmp_engine_observer_cb|snmptrapd||||DETAILED|100||snmp trap arrived from 192.168.1.139, assigned uuid: 1cd77e98-48ae-11e8-98e5-005056865aac
+ 2018-04-25T17:28:48,023|snmp_engine_observer_cb|snmptrapd||||DETAILED|100||dns cache expired or missing for 192.168.1.139 - refreshing
+ 2018-04-25T17:28:48,027|snmp_engine_observer_cb|snmptrapd||||DETAILED|100||cache for server001 (192.168.1.139) updated - set to expire at 1524677388
+ 2018-04-25T17:28:48,034|snmp_engine_observer_cb|snmptrapd||||DETAILED|100||snmp trap arrived from 192.168.1.139, assigned uuid: 0f40196a-78bb-11e8-bac7-005056
+ 2018-04-25T17:28:48,036|notif_receiver_cb|snmptrapd||||DETAILED|100||processing varbinds for 0f40196a-78bb-11e8-bac7-005056
+ 2018-04-25T17:28:48,040|notif_receiver_cb|snmptrapd||||DETAILED|100||adding 0f40196a-78bb-11e8-bac7-005056 to buffer
+
+ 2018-06-25T21:02:24,491|notif_receiver_cb|snmptrapd||||DETAILED|100||trap 0f40196a-78bb-11e8-bac7-005056865aac : {"uuid": "0f40196a-78bb-11e8-bac7-005056865aac", "agent address": "192.168.1.139", "agent name": "server001", "cambria.partition": "server001", "community": "", "community len": 0, "epoch_serno": 15299605440000, "protocol version": "v2c", "time received": 1529960544.4896748, "trap category": "com.att.dcae.dmaap.IST3.DCAE-COLLECTOR-UCSNMP", "sysUptime": "751564798", "notify OID": "1.3.6.1.4.1.999.0.1", "notify OID len": 9, "varbinds": [{"varbind_oid": "1.3.6.1.4.1.999.0.1.1", "varbind_type": "OctetString", "varbind_value": "TEST TRAP"}]}
+ 2018-06-25T21:02:24,496|post_dmaap|snmptrapd||||DETAILED|100||post_data_enclosed: {"uuid": "0f40196a-78bb-11e8-bac7-005056865aac", "agent address": "192.168.1.139", "agent name": "server001", "cambria.partition": "server001", "community": "", "community len": 0, "epoch_serno": 15299605440000, "protocol version": "v2c", "time received": 1529960544.4896748, "trap category": "com.att.dcae.dmaap.IST3.DCAE-COLLECTOR-UCSNMP", "sysUptime": "751564798", "notify OID": "1.3.6.1.4.1.999.0.1", "notify OID len": 9, "varbinds": [{"varbind_oid": "1.3.6.1.4.1.999.0.1.1", "varbind_type": "OctetString", "varbind_value": "TEST TRAP"}]}
+
+
+Platform Status
+^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+ "perm_status_file": "snmptrapd_status.log",
diff --git a/docs/sections/services/snmptrap/offeredapis.rst b/docs/sections/services/snmptrap/offeredapis.rst
new file mode 100644
index 0000000..e9a8afe
--- /dev/null
+++ b/docs/sections/services/snmptrap/offeredapis.rst
@@ -0,0 +1,61 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Offered APIs
+============
+
+**SNMPTRAP** supports the Simple Network Management Protocol (SNMP)
+standard. It is a well documented and pervasive protocol,
+used in all networks worldwide.
+
+As an API offering, the only way to interact with **SNMPTRAP** is
+to send traps that conform to the industry standard specification
+(RFC1215 - available at https://tools.ietf.org/html/rfc1215 ) to a
+running instance. To accomplish this, you may:
+
+1. Configure SNMP agents to send native traps to a SNMPTRAP instance.
+ In SNMP agent configurations, this is usually accomplished by
+ setting the "trap target" or "snmp manager" to the IP address
+ of the running VM/container hosting SNMPTRAP.
+
+2. Mimic a SNMP trap using various freely available utilities. Two
+ examples are provided below, be sure to change the target
+ ("localhost") and port ("162") to applicable values in your
+ environment.
+
+Net-SNMP
+--------
+
+.. code-block:: bash
+
+ snmptrap -d -v 1 -c public ${to_ip_address}:${to_portt} .1.3.6.1.4.1.99999 localhost 6 1 '55' .1.11.12.13.14.15 s "test trap"
+
+.. note::
+
+ This will display some "read_config_store open failure" errors;
+ they can be ignored, the trap has successfully been sent to the
+ specified destination.
+
+pysnmp
+------
+
+.. code-block:: python
+
+ from pysnmp.hlapi import *
+ from pysnmp import debug
+
+ # debug.setLogger(debug.Debug('msgproc'))
+
+ errorIndication, errorStatus, errorIndex, varbinds = next(sendNotification(SnmpEngine(),
+ CommunityData('not_public'),
+ UdpTransportTarget(('localhost', 162)),
+ ContextData(),
+ 'trap',
+ [ObjectType(ObjectIdentity('.1.3.6.1.4.1.999.1'), OctetString('test trap - ignore')),
+ ObjectType(ObjectIdentity('.1.3.6.1.4.1.999.2'), OctetString('ONAP pytest trap'))])
+ )
+
+ if errorIndication:
+ print(errorIndication)
+ else:
+ print("successfully sent first trap example, number %d" % i)
diff --git a/docs/sections/services/snmptrap/release-notes.rst b/docs/sections/services/snmptrap/release-notes.rst
new file mode 100644
index 0000000..45a0f15
--- /dev/null
+++ b/docs/sections/services/snmptrap/release-notes.rst
@@ -0,0 +1,45 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+Release Notes
+=============
+
+.. note::
+ * This Release Notes must be updated each time the team decides to Release new artifacts.
+ * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes.
+ * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes.
+ * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release.
+ * This note must be removed after content has been added.
+
+
+Version: 1.3.0
+--------------
+
+
+:Release Date: 2018-05-02
+
+
+**New Features**
+
+Support for config binding services.
+
+**Bug Fixes**
+ - `https://jira.onap.org/browse/DCAEGEN2-465`
+**Known Issues**
+ - `https://jira.onap.org/browse/DCAEGEN2-465`
+ Default config causes standalone instance startup failure.
+
+**Security Issues**
+ - None
+
+
+**Upgrade Notes**
+
+**Deprecation Notes**
+
+**Other**
+
+===========
+
+End of Release Notes