.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

Configuration
=============

**datafile** configuration is controlled via a single JSON file called datafile_endpoints.json.
This is located under datafile-app-server/config.

Compiling DFC
=============

Whole project (top level of DFC directory) and each module (sub module directory) can be compiled using
`mvn clean install` command.

Configuration file: Config/datafile_endpoints.json



JSON CONFIGURATION EXPLAINED
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Variables of interest (e.g. variables that should be inspected/modifed for a specific runtime environment) are listed below for convenience.  The entire file is provided later in this page for reference.

dmaapConsumerConfiguration
""""""""""""""""""""""""""

.. code-block:: json

  "dmaapHostName": <name of DMaaP/MR host>
  "dmaapPortNumber": <DMaaP/MR host port>
  "dmaapTopicName": "/events/unauthenticated.VES_NOTIFICATION_OUTPUT"
  "dmaapProtocol": "http"
  "dmaapUserName": ""
  "dmaapUserPassword": ""
  "dmaapContentType": "application/json"
  "consumerId": "C12"
  "consumerGroup": "OpenDcae-c12"
  "timeoutMS": -1
  "messageLimit": 1

dmaapProducerConfiguration
""""""""""""""""""""""""""

.. code-block:: json

  "dmaapHostName": <name of DMaaP/DR host>
  "dmaapPortNumber": <DMaaP/DR host port>
  "dmaapTopicName": "publish"
  "dmaapProtocol": "httpa"
  "dmaapUserName": "dradmin"
  "dmaapUserPassword": "dradmin"
  "dmaapContentType": "application/octet-stream"

ftpesConfiguration
""""""""""""""""""

.. code-block:: json

  "keyCert": <path to DFC certificate>
  "keyPassword": <password for DFC certificate>
  "trustedCa": <path to xNF certificate>
  "trustedCaPassword": <password for xNF certificate>

securityConfiguration
"""""""""""""""""""""

.. code-block:: json

  "trustStorePath": <path to trust store>
  "trustStorePasswordPath": <path to trsust store password>
  "keyStorePath": <path to key store>
  "keyStorePasswordPath": <path to key store password>
  "enableDmaapCertAuth": <boolean>. If false, all information above are ignored.



Sample JSON configuration
"""""""""""""""""""""""""

The format of the JSON configuration that drives all behavior of DFC is probably best described using an example:

.. code-block:: json

  {
    "configs": {
      "dmaap": {
        "dmaapConsumerConfiguration": {
          "dmaapHostName": "localhost",
          "dmaapPortNumber": 2222,
          "dmaapTopicName": "/events/unauthenticated.VES_NOTIFICATION_OUTPUT",
          "dmaapProtocol": "http",
          "dmaapUserName": "",
          "dmaapUserPassword": "",
          "dmaapContentType": "application/json",
          "consumerId": "C12",
          "consumerGroup": "OpenDcae-c12",
          "timeoutMS": -1,
          "messageLimit": 1
        },
        "dmaapProducerConfiguration": {
          "dmaapHostName": "localhost",
          "dmaapPortNumber": 3907,
          "dmaapTopicName": "publish",
          "dmaapProtocol": "https",
          "dmaapUserName": "dradmin",
          "dmaapUserPassword": "dradmin",
          "dmaapContentType": "application/octet-stream"
        }
      },
      "ftp": {
            "ftpesConfiguration": {
                "keyCert": "config/dfc.jks",
                "keyPassword": "secret",
                "trustedCa": "config/ftp.jks",
                "trustedCaPassword": "secret"
            }
      },
        "security": {
            "trustStorePath" : "change it",
            "trustStorePasswordPath" : "change it",
            "keyStorePath" : "change it",
            "keyStorePasswordPath" : "change it",
            "enableDmaapCertAuth" : "false"
        }
    }
  }
