From 553154ae42e5362dacab6c190b8cf1e1388f5b87 Mon Sep 17 00:00:00 2001 From: Jakub Dudycz Date: Fri, 15 Jun 2018 16:09:41 +0200 Subject: Change Consul configuration update policy - At startup default config is applied - Configuration is updated in intervals given at VES-HV service startup to allow dynamic changes - Included consul service startup in docker-compose file - VES-HV now exits when fails to acquire confguration from consul Closes ONAP-229 Change-Id: I896cfd177fa45381f9822278c2dffc113dd3df72 Signed-off-by: jakub.dudycz@nokia.com Issue-ID: DCAEGEN2-601 --- .../veshv/main/ArgBasedServerConfiguration.kt | 15 ++++++++---- .../org/onap/dcae/collectors/veshv/main/main.kt | 27 ++-------------------- 2 files changed, 13 insertions(+), 29 deletions(-) (limited to 'hv-collector-main/src/main/kotlin') diff --git a/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/ArgBasedServerConfiguration.kt b/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/ArgBasedServerConfiguration.kt index f3e97be2..63de270e 100644 --- a/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/ArgBasedServerConfiguration.kt +++ b/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/ArgBasedServerConfiguration.kt @@ -24,17 +24,21 @@ import org.apache.commons.cli.DefaultParser import org.onap.dcae.collectors.veshv.domain.SecurityConfiguration import org.onap.dcae.collectors.veshv.model.ServerConfiguration import org.onap.dcae.collectors.veshv.utils.commandline.ArgBasedConfiguration -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.CERT_FILE -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.CONSUL_CONFIG_URL -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.DUMMY_MODE -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.IDLE_TIMEOUT_SEC +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.LISTEN_PORT +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.UPDATE_INTERVAL +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.CONSUL_CONFIG_URL import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.PRIVATE_KEY_FILE +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.CERT_FILE import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.TRUST_CERT_FILE +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.IDLE_TIMEOUT_SEC +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.DUMMY_MODE + import java.time.Duration internal object DefaultValues { const val PORT = 6061 + const val UPDATE_INTERVAL = 300L const val CONFIG_URL = "" const val PRIVATE_KEY_FILE = "/etc/ves-hv/server.key" const val CERT_FILE = "/etc/ves-hv/server.crt" @@ -45,6 +49,7 @@ internal object DefaultValues { internal class ArgBasedServerConfiguration : ArgBasedConfiguration(DefaultParser()) { override val cmdLineOptionsList = listOf( LISTEN_PORT, + UPDATE_INTERVAL, CONSUL_CONFIG_URL, PRIVATE_KEY_FILE, CERT_FILE, @@ -56,12 +61,14 @@ internal class ArgBasedServerConfiguration : ArgBasedConfiguration) { private fun createServer(config: ServerConfiguration): Server { val sink = if (config.dummyMode) AdapterFactory.loggingSink() else AdapterFactory.kafkaSink() val collectorProvider = CollectorFactory( - resolveConfigurationProvider(config), + AdapterFactory.consulConfigurationProvider( + config.configurationUrl, config.configurationUpdateInterval), sink, MicrometerMetrics() ).createVesHvCollectorProvider() @@ -63,23 +60,3 @@ private fun createServer(config: ServerConfiguration): Server { return ServerFactory.createNettyTcpServer(config, collectorProvider) } -private fun resolveConfigurationProvider(serverConfiguration: ServerConfiguration): ConfigurationProvider { - - if (serverConfiguration.configurationUrl.isEmpty()) { - logger.info("Configuration url not specified - using default config") - val sampleConfig = CollectorConfiguration( - kafkaBootstrapServers = "kafka:9092", - routing = routing { - defineRoute { - fromDomain(Domain.HVRANMEAS) - toTopic("ves_hvRanMeas") - withFixedPartitioning() - } - }.build() - ) - return AdapterFactory.staticConfigurationProvider(sampleConfig) - } - - logger.info("Using configuration url: ${serverConfiguration.configurationUrl}") - return AdapterFactory.consulConfigurationProvider(serverConfiguration.configurationUrl) -} -- cgit 1.2.3-korg