DCAE Controller documentation DCAEGEN2-213
[dcaegen2.git] / docs / sections / components / component-specification / generated-configuration.rst
diff --git a/docs/sections/components/component-specification/generated-configuration.rst b/docs/sections/components/component-specification/generated-configuration.rst
new file mode 100755 (executable)
index 0000000..ba5ae4a
--- /dev/null
@@ -0,0 +1,114 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+.. http://creativecommons.org/licenses/by/4.0\r
+\r
+.. _generated-configuration:\r
+\r
+Generated configuration\r
+=======================\r
+\r
+The DCAE platform relies on the component specification to generate the\r
+component’s application configuration JSON at deployment time. The\r
+component developer should expect to use this configuration JSON in\r
+their application to provision themselves.\r
+\r
+Pro-tip: As you build your component specification, you can use the\r
+:any:`dcae-cli dev command <walkthrough-dev>` to view what\r
+the resulting application configuration will look like.\r
+\r
+Streams and services\r
+--------------------\r
+\r
+For both Docker and CDAP, when your component is deployed, any\r
+``streams`` and ``services/calls`` you specified will be injected into\r
+your configuration under the following well known structure. Your\r
+component is required to parse this information if you have any\r
+connectivity to DMaaP or are calling another DCAE component.\r
+\r
+More details about the DMaaP connection objects are found\r
+:doc:`here <../dcae-cli/dmaap-connection-objects>`.\r
+\r
+This is best served with an example.\r
+\r
+The following component spec snippet (from String Matching):\r
+\r
+::\r
+\r
+    "streams":{  \r
+        "subscribes": [{\r
+          "format": "VES_specification",  \r
+          "version": "4.27.2",    \r
+          "type": "message_router",\r
+          "config_key" : "mr_input"\r
+        }],\r
+        "publishes": [{\r
+          "format": "VES_specification",  \r
+          "version": "4.27.2",    \r
+          "config_key": "mr_output",\r
+          "type": "message_router"\r
+         }]\r
+      },\r
+      "services":{  \r
+        "calls": [{\r
+          "config_key" : "aai_broker_handle",\r
+          "verb": "GET",\r
+          "request": {\r
+            "format": "get_with_query_params",\r
+            "version": "1.0.0"\r
+          },\r
+          "response": {\r
+            "format": "aai_broker_response",\r
+            "version": "3.0.0"\r
+          } \r
+        }],\r
+        "provides": []\r
+      },\r
+\r
+Will turn into the following top level keys in your configuration (for\r
+CDAP, this will be under AppConfig)\r
+\r
+::\r
+\r
+       "streams_publishes":{  \r
+          "mr_output":{                // notice the config key above\r
+             "aaf_password":"XXX",\r
+             "type":"message_router",\r
+             "dmaap_info":{  \r
+                "client_role": null,\r
+                "client_id": null,\r
+                "location": null,\r
+                "topic_url":"XXX"\r
+             },\r
+             "aaf_username":"XXX"\r
+          }\r
+       },\r
+       "streams_subscribes":{  \r
+          "mr_input":{                 // notice the config key above\r
+             "aaf_password":"XXX",\r
+             "type":"message_router",\r
+             "dmaap_info":{  \r
+                "client_role": null,\r
+                "client_id": null,\r
+                "location": null,\r
+                "topic_url":"XXX"\r
+             },\r
+             "aaf_username":"XXX"\r
+          }\r
+       },\r
+       "services_calls":{  \r
+          "aai_broker_handle":[        // notice the config key above\r
+             "SOME_IP:32768"   // based on deployment time, just an example\r
+          ]\r
+       }\r
+\r
+These keys will always be populated regardless of whether they are\r
+empty. So the minimal you will get, in the case of a component that\r
+provides an HTTP service and does not call any services and has no\r
+streams, is:\r
+\r
+::\r
+\r
+        "streams_publishes":{},\r
+        "streams_subscribes":{},\r
+        "services_calls":{}\r
+\r
+Thus your component should expect these well-known top level keys.\r