diff options
author | Vijay Venkatesh Kumar <vv770d@att.com> | 2019-04-24 21:14:04 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-04-24 21:14:04 +0000 |
commit | 701110ba1719151a20393ced327e4e935d991ad9 (patch) | |
tree | c8a54647c0eb85949b7373cf3d616a9288ef45c6 | |
parent | 868412ab66dac01e94b32d9d2761e214480e2473 (diff) | |
parent | 566342c6cd7380a675604358452f161e55673dad (diff) |
Merge "Update dynamic configuration info"
5 files changed, 84 insertions, 39 deletions
diff --git a/docs/sections/apis/ves-hv/index.rst b/docs/sections/apis/ves-hv/index.rst index d87d1aa0..c61c1e16 100644 --- a/docs/sections/apis/ves-hv/index.rst +++ b/docs/sections/apis/ves-hv/index.rst @@ -58,6 +58,9 @@ By default, **HV-VES** will use routing defined in **k8s-hv-ves.yaml-template** - perf3gpp -> HV_VES_PERF3GPP + +.. _supported_domains: + Supported domains ================= @@ -65,7 +68,7 @@ Domains supported by **HV-VES**: - perf3gpp -For domains descriptions, see :ref:`supported_domains` +For domains descriptions, see :ref:`domains_supported_by_hvves` .. _hv_ves_behaviors: diff --git a/docs/sections/apis/ves-hv/supported-domains.rst b/docs/sections/apis/ves-hv/supported-domains.rst index d1badaa6..68d5d226 100644 --- a/docs/sections/apis/ves-hv/supported-domains.rst +++ b/docs/sections/apis/ves-hv/supported-domains.rst @@ -1,7 +1,7 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 -.. _supported_domains: +.. _domains_supported_by_hvves: Domains supported by HV-VES =========================== diff --git a/docs/sections/services/ves-hv/resources/blueprint-snippet.yaml b/docs/sections/services/ves-hv/resources/blueprint-snippet.yaml new file mode 100644 index 00000000..912c0c5a --- /dev/null +++ b/docs/sections/services/ves-hv/resources/blueprint-snippet.yaml @@ -0,0 +1,24 @@ +node_templates: + hv-ves: + properties: + application_config: + logLevel: "INFO" + server.listenPort: 6061 + server.idleTimeoutSec: 60 + cbs.requestIntervalSec: 5 + security.sslDisable: false + security.keys.keyStoreFile: "/etc/ves-hv/ssl/cert.jks" + security.keys.keyStorePasswordFile: "/etc/ves-hv/ssl/jks.pass" + security.keys.trustStoreFile: "/etc/ves-hv/ssl/trust.jks" + security.keys.trustStorePasswordFile: "/etc/ves-hv/ssl/trust.pass" + stream_publishes: + perf3gpp: + type: "kafka" + kafka_info: + bootstrap_servers: "message-router-kafka:9092" + topic_name: "HV_VES_PERF3GPP" + heartbeat: + type: "kafka" + kafka_info: + bootstrap_servers: "message-router-kafka:9092" + topic_name: "HV_VES_HEARTBEAT" diff --git a/docs/sections/services/ves-hv/resources/dynamic-configuration.json b/docs/sections/services/ves-hv/resources/dynamic-configuration.json new file mode 100644 index 00000000..0a1cd89d --- /dev/null +++ b/docs/sections/services/ves-hv/resources/dynamic-configuration.json @@ -0,0 +1,28 @@ +{ + "logLevel": "INFO", + "server.listenPort": 6061, + "server.idleTimeoutSec": 60, + "cbs.requestIntervalSec": 5, + "security.sslDisable": false, + "security.keys.keyStoreFile": "/etc/ves-hv/ssl/cert.jks", + "security.keys.keyStorePasswordFile": "/etc/ves-hv/ssl/jks.pass", + "security.keys.trustStoreFile": "/etc/ves-hv/ssl/trust.jks", + "security.keys.trustStorePasswordFile": "/etc/ves-hv/ssl/trust.pass", + "streams_publishes": { + "perf3gpp": { + "type": "kafka", + "kafka_info": { + "bootstrap_servers": "message-router-kafka:9092", + "topic_name": "HV_VES_PERF3GPP" + } + }, + "heartbeat": { + "type": "kafka", + "kafka_info": { + "bootstrap_servers": "message-router-kafka:9092", + "topic_name": "HV_VES_HEARTBEAT" + } + } + } +} + diff --git a/docs/sections/services/ves-hv/run-time-configuration.rst b/docs/sections/services/ves-hv/run-time-configuration.rst index 5efc6e31..95bad674 100644 --- a/docs/sections/services/ves-hv/run-time-configuration.rst +++ b/docs/sections/services/ves-hv/run-time-configuration.rst @@ -6,52 +6,42 @@ Run-Time configuration ====================== -(see :ref:`deployment`) +HV-VES dynamic configuration is primarily meant to provide DMaaP Connection Objects (see :ref:`dmaap-connection-objects`). +These objects contain information necessary to route received VES Events to correct Kafka topic. This metadata will be later referred to as Routing definition. -HV-VES fetches configuration from Config Binding Service in the following JSON format: +Collector internally uses DCAE-SDK to fetch configuration from Config Binding Service. -.. code-block:: json +HV-VES waits 10 seconds (default, configurable during deployment with **firstRequestDelay** option, see :ref:`configuration_file`) before the first attempt to retrieve configuration from CBS. This is to prevent possible synchronization issues. During that time HV-VES declines any connection attempts from xNF (VNF/PNF). - { - "dmaap.kafkaBootstrapServers": "message-router-kafka:9093", - "collector.routing": [ - { - "fromDomain": "perf3gpp", - "toTopic": "HV_VES_PERF3GPP" - }, - { - "fromDomain": "heartbeat", - "toTopic": "HV_VES_HEARTBEAT" - }, - ... - ] - } +After first request, HV-VES asks for configuration in fixed intervals, configurable from file configuration (**requestInterval**). By default interval is set to 5 seconds. -HV-VES does not verify the correctness of configuration data and uses them as is, in particular: +In case of failing to retrieve configuration, collector retries the action. After five unsuccessful attempts, container becomes unhealthy and cannot recover. HV-VES in this state is unusable and the container should be restarted. -- **KafkaBootstrapServers** is used as host name and port for publishing events to Kafka service. -- Every **routing** array object specifies one event publishing route. - - **fromDomain** node should be a case-sensitive string of single domain taken from VES Common Event Header specification. - - **toTopic** should be a case-sensitive string of Kafka topic. - - When HV-VES receives VES Event, it checks the domain contained in it. If the route from that domain to any topic exists in configuration, then HV-VES publishes that event to topic in that route. - - If there are two routes from the same domain to different topics, then it is undefined which route will be used. +Configuration format +-------------------- -The configuration is created from HV-VES Cloudify blueprint by specifying **application_config** node during ONAP OOM/Kubernetes deployment. Example of the node specification: +Following JSON format presents dynamic configuration options recognized by HV-VES Collector. +Note that there is no verification of the data correctness (e.g. if specified security files are present on machine) and thus invalid data can result in service malfunctioning or even container shutdown. -.. code-block:: YAML +.. literalinclude:: resources/dynamic-configuration.json + :language: json - node_templates: - hv-ves: - properties: - application_config: - dmaap.kafkaBootstrapServers: message-router-kafka:9092 - collector.routing: - fromDomain: perf3gpp - toTopic: HV_VES_PERF3GPP +Fields have same meaning as in file configuration with only difference being Routing definition. -HV-VES waits 10 seconds (default, configurable during deployment with **firstRequestDelay** option, see :ref:`configuration_file`) before the first attempt to retrieve configuration from CBS. This is to prevent possible synchronization issues. During that time HV-VES declines any connection attempts from xNF (VNF/PNF). +Routing +------- -After first request, HV-VES asks for configuration in fixed intervals, configurable from file configuration (**requestInterval**). By default interval is set to 5 seconds. +For every JSON key-object pair defined in **"stream_publishes"**, the key is used as domain and related object is used to setup Kafka's bootstrap servers and Kafka topic **for this domain**. -In case of failing to retrieve configuration, collector retries the action. After five unsuccessful attempts, container becomes unhealthy and cannot recover. HV-VES in this state is unusable and the container should be restarted. +Collector when receiving VES Event from client checks if domain from the event corresponds to any from Routing and publishes this event onto related topic. If there is no match, the event is dropped. If there are two routes from the same domain to different topics, then it is undefined which route will be used. + +For more informations see :ref:`supported_domains` + +Providing configuration during OOM deployment +--------------------------------------------- + +The configuration is created from HV-VES Cloudify blueprint by specifying **application_config** node during ONAP OOM/Kubernetes deployment. Example of the node specification: + +.. literalinclude:: resources/blueprint-snippet.yaml + :language: yaml
\ No newline at end of file |