Automation adds dcaegen2-offeredapis.rst 33/105533/2
authorLF Jenkins CI <releng+lf-jobbuilder@linuxfoundation.org>
Wed, 8 Apr 2020 19:37:35 +0000 (19:37 +0000)
committerLF Jenkins CI <releng+lf-jobbuilder@linuxfoundation.org>
Wed, 8 Apr 2020 19:37:40 +0000 (19:37 +0000)
Issue-ID: CIMAN-376

Change-Id: I9e6c2bfe083a2c5d3cab33eb2323ece76e3dde3c
Signed-off-by: lf-jobbuilder <releng+lf-jobbuilder@linuxfoundation.org>
docs/sections/offeredapis.rst

index f98c5d8..33a2c82 100644 (file)
@@ -1,18 +1,83 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. _offeredapis:
+
 Offered APIs
 ============
 
-.. toctree::
-   :maxdepth: 1
-   :titlesonly:
-
-   apis/configbinding.rst
-   apis/deployment-handler.rst
-   apis/inventory.rst
-   apis/ves.rst
-   apis/ves-hv/index.rst
-   apis/PRH.rst
-   apis/DFC.rst
-   apis/PNDA.rst
-   apis/pmmapper.rst
-   apis/SDK.rst
-   apis/mod-onboardingapi.rst
+**trapd** 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 **trapd** 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. Simulate 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.*
+
+NetSNMP snmptrap
+----------------
+
+One way to simulate an arriving SNMP trap is to use the Net-SNMP utility/command snmptrap.  
+This command can send V1, V2c or V3 traps to a manager based on the parameters provided.
+
+The example below sends a SNMP V1 trap to the specified host.  Prior to running this command, export 
+the values of *to_ip_address* (set it to the IP of the VM hosting the ONAP trapd container) and *to_port* (typically
+set to "162"):
+
+   ``export to_ip_address=192.168.1.1``
+
+   ``export to_port=162``
+
+Then run the Net-SNMP command/utility:
+
+   ``snmptrap -d -v 1 -c not_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.
+
+python using pysnmp
+-------------------
+
+Another way to simulate an arriving SNMP trap is to send one with the python *pysnmp* module.  (Note that this
+is the same module that ONAP trapd is based on).  
+
+To do this, create a python script called "send_trap.py" with the following contents.  You'll need to change the 
+target (from "localhost" to whatever the destination IP/hostname of the trap receiver is) before saving:
+
+.. 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 trap")
+
+To run the pysnmp example:
+
+   ``python ./send_trap.py``