--- /dev/null
+.. 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