.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

Configuration
=============

VES expects to be able to fetch configuration directly from consul service in following JSON format:

.. code-block:: json

        {
        "collector.dynamic.config.update.frequency": "5",
        "event.transform.flag": "0",
        "collector.schema.checkflag": "1",
        "collector.dmaap.streamid": "fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling|notification=ves-notification|pnfRegistration=ves-pnfRegistration",
        "collector.service.port": "8080",
        "collector.schema.file": "{\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.4.1.json\",\"v7\":\"./etc/CommonEventFormat_30.0.1.json\"}",
        "collector.keystore.passwordfile": "/opt/app/VESCollector/etc/passwordfile",
        "collector.inputQueue.maxPending": "8096",
        "streams_publishes": {
            "ves-measurement": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT/"
                }
            },
            "ves-fault": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.SEC_FAULT_OUTPUT/"
                }
            },
            "ves-pnfRegistration": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.VES_PNFREG_OUTPUT/"
                }
            },
            "ves-other": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.SEC_OTHER_OUTPUT/"
                }
            },
            "ves-heartbeat": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.SEC_HEARTBEAT_OUTPUT/"
                }
            },
            "ves-notification": {
                "type": "message_router",
                "dmaap_info": {
                    "topic_url": "http://message-router:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT/"
                }
            }
        },
        "collector.service.secure.port": "8443",
        "header.authflag": "0",
        "collector.keystore.file.location": "/opt/app/VESCollector/etc/keystore",
        "collector.keystore.alias": "dynamically generated",
        "services_calls": [],
        "header.authlist": "sample1,c2FtcGxlMQ=="
    }


During ONAP OOM/Kubernetes deployment this configuration is created from VES cloudify blueprint.
