DCAE Controller documentation DCAEGEN2-213
[dcaegen2.git] / docs / sections / components / dcae-cli / dmaap-connection-objects.rst
diff --git a/docs/sections/components/dcae-cli/dmaap-connection-objects.rst b/docs/sections/components/dcae-cli/dmaap-connection-objects.rst
new file mode 100755 (executable)
index 0000000..cad3b0c
--- /dev/null
@@ -0,0 +1,415 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+.. http://creativecommons.org/licenses/by/4.0\r
+\r
+DMaaP connection objects\r
+========================\r
+\r
+DMaaP connection objects are JSON objects that:\r
+\r
+1. Components should expect at runtime in their application\r
+   configuration and is to be used to connect to the appropriate DMaaP\r
+   feed or topic.\r
+2. Developers must provide through the command-line argument\r
+   ``--dmaap-file`` to test their component with manually provisioned\r
+   feeds and topics.\r
+\r
+This page is a reference to the specific structure that each type of\r
+DMaaP stream requires.\r
+\r
+Note for #1 that components should expect the entire object with all\r
+properties at runtime where the default will be ``null`` unless\r
+specified otherwise.\r
+\r
+Note for #2 that developers are not required to provide the entire\r
+object. The required properties will be labeled with “*required as\r
+input*”.\r
+\r
+.. _dmaap-message-router:\r
+\r
+Message router\r
+--------------\r
+\r
+Publishers and subscribers both have the same JSON object structure.\r
+Here’s an example:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "message_router",\r
+        "aaf_username": "some-user",\r
+        "aaf_password": "some-password",\r
+        "dmaap_info": {\r
+            "client_role": "com.dcae.member",\r
+            "client_id": "1500462518108",\r
+            "location": "mtc00",\r
+            "topic_url": "https://we-are-message-router.us:3905/events/some-topic"\r
+        }\r
+    }\r
+\r
+\r
+At the top-level:\r
+\r
++-------------+----+--------------------+\r
+| Property    | Ty\| Descript\          |\r
+| Name        | pe | ion                |\r
++=============+====+====================+\r
+| type        | st\| *Require\          |\r
+|             | ri\| d \                |\r
+|             | ng | as \               |\r
+|             |    | input*.            |\r
+|             |    | Must be            |\r
+|             |    | ``message_router`` |\r
+|             |    | for                |\r
+|             |    | message            |\r
+|             |    | router             |\r
+|             |    | topics             |\r
++-------------+----+--------------------+\r
+| aaf_usernam\| st\| AAF                |\r
+| e           | ri\| username           |\r
+|             | ng | message            |\r
+|             |    | router             |\r
+|             |    | clients            |\r
+|             |    | use to             |\r
+|             |    | authenti\          |\r
+|             |    | cate               |\r
+|             |    | with               |\r
+|             |    | secure             |\r
+|             |    | topics             |\r
++-------------+----+--------------------+\r
+| aaf_passwor\| st\| AAF                |\r
+| d           | ri\| password           |\r
+|             | ng | message            |\r
+|             |    | router             |\r
+|             |    | clients            |\r
+|             |    | use to             |\r
+|             |    | authenti\          |\r
+|             |    | cate               |\r
+|             |    | with               |\r
+|             |    | secure             |\r
+|             |    | topics             |\r
++-------------+----+--------------------+\r
+| dmaap_info  | JS\| *Require\          |\r
+|             | ON | d \                |\r
+|             | ob\| as \               |\r
+|             | je\| input*.            |\r
+|             | ct | Contains           |\r
+|             |    | the                |\r
+|             |    | topic              |\r
+|             |    | connecti\          |\r
+|             |    | on                 |\r
+|             |    | details            |\r
++-------------+----+--------------------+\r
+\r
+The ``dmaap_info`` object contains:\r
+\r
++-------------+----+----------+\r
+| Property    | Ty\| Descript\|\r
+| Name        | pe | ion      |\r
++=============+====+==========+\r
+| client_role | st\| AAF      |\r
+|             | ri\| client   |\r
+|             | ng | role     |\r
+|             |    | that’s   |\r
+|             |    | requesti\|\r
+|             |    | ng       |\r
+|             |    | publish  |\r
+|             |    | or       |\r
+|             |    | subscrib\|\r
+|             |    | e        |\r
+|             |    | access   |\r
+|             |    | to the   |\r
+|             |    | topic    |\r
++-------------+----+----------+\r
+| client_id   | st\| Client   |\r
+|             | ri\| id for   |\r
+|             | ng | given    |\r
+|             |    | AAF      |\r
+|             |    | client   |\r
++-------------+----+----------+\r
+| location    | st\| DCAE     |\r
+|             | ri\| location |\r
+|             | ng | for the  |\r
+|             |    | publishe\|\r
+|             |    | r        |\r
+|             |    | or       |\r
+|             |    | subscrib\|\r
+|             |    | er,      |\r
+|             |    | used to  |\r
+|             |    | set up   |\r
+|             |    | routing  |\r
++-------------+----+----------+\r
+| topic_url   | st\| *Require\|\r
+|             | ri\| d \      |\r
+|             | ng | as \     |\r
+|             |    | input*.  |\r
+|             |    | URL for  |\r
+|             |    | accessin\|\r
+|             |    | g        |\r
+|             |    | the      |\r
+|             |    | topic to |\r
+|             |    | publish  |\r
+|             |    | or       |\r
+|             |    | receive  |\r
+|             |    | events   |\r
++-------------+----+----------+\r
+\r
+Here’s an example of the minimal JSON that must be provided as an input:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "message_router",\r
+        "dmaap_info": {\r
+            "topic_url": "https://we-are-message-router.us:3905/events/some-topic"\r
+        }\r
+    }\r
+\r
+.. _dmaap-data-router:\r
+\r
+Data router\r
+-----------\r
+\r
+Publisher\r
+~~~~~~~~~\r
+\r
+Here’s an example of what the JSON object connection for data router\r
+publisher looks like:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "data_router",\r
+        "dmaap_info": {\r
+            "location": "mtc00",\r
+            "publish_url": "https://we-are-data-router.us/feed/xyz",\r
+            "log_url": "https://we-are-data-router.us/feed/xyz/logs",\r
+            "username": "some-user",\r
+            "password": "some-password",\r
+            "publisher_id": "123456"\r
+        } \r
+    }\r
+\r
+At the top-level:\r
+\r
++-------------+----+----------------+\r
+| Property    | Ty\| Descript\      |\r
+| Name        | pe | ion            |\r
++=============+====+================+\r
+| type        | st\| *Require\      |\r
+|             | ri\| d \            |\r
+|             | ng | as \           |\r
+|             |    | input*.        |\r
+|             |    | Must be        |\r
+|             |    | ``data_router``|\r
+|             |    | for data       |\r
+|             |    | router         |\r
+|             |    | feeds          |\r
++-------------+----+----------------+\r
+| dmaap_info  | JS\| *Require\      |\r
+|             | ON | d \            |\r
+|             | ob\| as \           |\r
+|             | je\| input*.        |\r
+|             | ct | Contains       |\r
+|             |    | the            |\r
+|             |    | topic          |\r
+|             |    | connecti\      |\r
+|             |    | on             |\r
+|             |    | details        |\r
++-------------+----+----------------+\r
+\r
+The ``dmaap_info`` object contains:\r
+\r
++-------------+----+----------+\r
+| Property    | Ty\| Descript\|\r
+| Name        | pe | ion      |\r
++=============+====+==========+\r
+| location    | st\| DCAE     |\r
+|             | ri\| location |\r
+|             | ng | for the  |\r
+|             |    | publishe\|\r
+|             |    | r,       |\r
+|             |    | used to  |\r
+|             |    | set up   |\r
+|             |    | routing  |\r
++-------------+----+----------+\r
+| publish_url | st\| *Require\|\r
+|             | ri\| d \      |\r
+|             | ng | as \     |\r
+|             |    | input*.  |\r
+|             |    | URL to   |\r
+|             |    | which    |\r
+|             |    | the      |\r
+|             |    | publishe\|\r
+|             |    | r        |\r
+|             |    | makes    |\r
+|             |    | Data     |\r
+|             |    | Router   |\r
+|             |    | publish  |\r
+|             |    | requests |\r
++-------------+----+----------+\r
+| log_url     | st\| URL from |\r
+|             | ri\| which    |\r
+|             | ng | log data |\r
+|             |    | for the  |\r
+|             |    | feed can |\r
+|             |    | be       |\r
+|             |    | obtained |\r
++-------------+----+----------+\r
+| username    | st\| Username |\r
+|             | ri\| the      |\r
+|             | ng | publishe\|\r
+|             |    | r        |\r
+|             |    | uses to  |\r
+|             |    | authenti\|\r
+|             |    | cate     |\r
+|             |    | to Data  |\r
+|             |    | Router   |\r
++-------------+----+----------+\r
+| password    | st\| Password |\r
+|             | ri\| the      |\r
+|             | ng | publishe\|\r
+|             |    | r        |\r
+|             |    | uses to  |\r
+|             |    | authenti\|\r
+|             |    | cate     |\r
+|             |    | to Data  |\r
+|             |    | Router   |\r
++-------------+----+----------+\r
+| publisher_i | st\| Publishe\|\r
+| d           | ri\| r        |\r
+|             | ng | id in    |\r
+|             |    | Data     |\r
+|             |    | Router   |\r
++-------------+----+----------+\r
+\r
+Here’s an example of the minimal JSON that must be provided as an input:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "data_router",\r
+        "dmaap_info": {\r
+            "publish_url": "https://we-are-data-router.us/feed/xyz"\r
+        }\r
+    }\r
+\r
+Subscriber\r
+~~~~~~~~~~\r
+\r
+Here’s an example of what the JSON object connection for data router\r
+subscriber looks like:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "data_router",\r
+        "dmaap_info": {\r
+            "location": "mtc00",\r
+            "delivery_url": "https://my-subscriber-app.dcae:8080/target-path",\r
+            "username": "some-user",\r
+            "password": "some-password",\r
+            "subscriber_id": "789012"\r
+        } \r
+    }\r
+\r
+At the top-level:\r
+\r
++-------------+----+----------------+\r
+| Property    | Ty\| Descript\      |\r
+| Name        | pe | ion            |\r
++=============+====+================+\r
+| type        | st\| *Require\      |\r
+|             | ri\| d              |\r
+|             | ng | as \           |\r
+|             |    | input*.        |\r
+|             |    | Must be        |\r
+|             |    | ``data_router``|\r
+|             |    | for data       |\r
+|             |    | router         |\r
+|             |    | feeds          |\r
++-------------+----+----------------+\r
+| dmaap_info  | JS\| *Require\      |\r
+|             | ON | d \            |\r
+|             | ob\| as \           |\r
+|             | je\| input*.        |\r
+|             | ct | Contains       |\r
+|             |    | the            |\r
+|             |    | topic          |\r
+|             |    | connecti\      |\r
+|             |    | on             |\r
+|             |    | details        |\r
++-------------+----+----------------+\r
+\r
+The ``dmaap_info`` object contains:\r
+\r
++--------------+----+----------+\r
+| Property     | Ty\| Descript\|\r
+| Name         | pe | ion      |\r
++==============+====+==========+\r
+| location     | st\| DCAE     |\r
+|              | ri\| location |\r
+|              | ng | for the  |\r
+|              |    | publishe\|\r
+|              |    | r,       |\r
+|              |    | used to  |\r
+|              |    | set up   |\r
+|              |    | routing  |\r
++--------------+----+----------+\r
+| delivery_ur\ | st\| URL to   |\r
+| l            | ri\| which    |\r
+|              | ng | the Data |\r
+|              |    | Router   |\r
+|              |    | should   |\r
+|              |    | deliver  |\r
+|              |    | files    |\r
++--------------+----+----------+\r
+| username     | st\| Username |\r
+|              | ri\| Data     |\r
+|              | ng | Router   |\r
+|              |    | uses to  |\r
+|              |    | authenti\|\r
+|              |    | cate     |\r
+|              |    | to the   |\r
+|              |    | subscrib\|\r
+|              |    | er       |\r
+|              |    | when     |\r
+|              |    | deliveri\|\r
+|              |    | ng       |\r
+|              |    | files    |\r
++--------------+----+----------+\r
+| password     | st\| Password |\r
+|              | ri\| Data     |\r
+|              | ng | Router   |\r
+|              |    | uses to  |\r
+|              |    | authenti\|\r
+|              |    | cate     |\r
+|              |    | to the   |\r
+|              |    | subscrib\|\r
+|              |    | er       |\r
+|              |    | when     |\r
+|              |    | deliveri\|\r
+|              |    | ng       |\r
+|              |    | files    |\r
++--------------+----+----------+\r
+| subscriber_i\| st | Subscrib\|\r
+| d            | ri | er       |\r
+|              | ng | id in    |\r
+|              |    | Data     |\r
+|              |    | Router   |\r
++--------------+----+----------+\r
+\r
+Here’s an example of the minimal JSON that must be provided as an input:\r
+\r
+.. code:: json\r
+\r
+    {\r
+        "type": "data_router",\r
+        "dmaap_info": {\r
+        }\r
+    }\r
+\r
+Developers are recommended to use ``username`` and ``password`` since\r
+this is the recommended security practice.\r
+\r
+Note that the dcae-cli will construct the ``delivery_url`` when\r
+deploying the component since this can only be known at deployment time.\r