Include basic configuration in Docker image 00/82900/2
authorPiotr Jaszczyk <piotr.jaszczyk@nokia.com>
Thu, 21 Mar 2019 08:10:11 +0000 (09:10 +0100)
committerPiotr Jaszczyk <piotr.jaszczyk@nokia.com>
Thu, 21 Mar 2019 08:13:51 +0000 (09:13 +0100)
Makes the collector start out of the box, even without valid CBS
configuration.

Note: the basic configuration will need to be changed later.

Issue-ID: DCAEGEN2-1340
Change-Id: I3c2b502f253677e78a4f4990002e683613b8869e
Signed-off-by: Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
development/configuration/base.json [moved from development/configuration/configuration.json with 96% similarity]
development/docker-compose.yml
sources/hv-collector-configuration/src/main/kotlin/org/onap/dcae/collectors/veshv/config/api/ConfigurationModule.kt
sources/hv-collector-configuration/src/main/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidator.kt
sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidatorTest.kt
sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/FileConfigurationReaderTest.kt
sources/hv-collector-main/Dockerfile
sources/hv-collector-main/src/main/docker/base.json [new file with mode: 0644]
sources/hv-collector-main/src/main/docker/entry.sh [moved from sources/hv-collector-main/src/main/scripts/entry.sh with 100% similarity]
sources/hv-collector-main/src/main/docker/healthcheck.sh [moved from sources/hv-collector-main/src/main/scripts/healthcheck.sh with 100% similarity]

similarity index 96%
rename from development/configuration/configuration.json
rename to development/configuration/base.json
index 8e55cf3..5233f02 100644 (file)
@@ -10,7 +10,6 @@
     "requestIntervalSec": 5
   },
   "security": {
-    "sslDisable": false,
     "keys": {
       "keyStoreFile": "/etc/ves-hv/ssl/server.p12",
       "keyStorePassword": "onaponap",
index 85500cb..df00dcd 100644 (file)
@@ -73,7 +73,6 @@ services:
     ports:
       - "6060:6060"
       - "6061:6061/tcp"
-    command: ["--configuration-file /etc/ves-hv/configuration/configuration.json"]
     environment:
       JAVA_OPTS: "-Dio.netty.leakDetection.level=paranoid -Dlogback.configurationFile=/etc/ONAP/dcae-hv-ves-collector/logback.xml"
       CONSUL_HOST: "consul-server"
index 5b547a2..9f8c552 100644 (file)
@@ -37,7 +37,7 @@ class ConfigurationModule {
     fun hvVesConfigurationUpdates(args: Array<String>): Flux<HvVesConfiguration> =
             Flux.just(cmd.parse(args))
                     .throwOnLeft { MissingArgumentException(it.message, it.cause) }
-                    .map { configReader.loadConfig(it.reader()) }
+                    .map { it.reader().use(configReader::loadConfig) }
                     .map { configValidator.validate(it) }
                     .throwOnLeft { ValidationException(it.message) }
 }
index 6c74c33..83f5692 100644 (file)
@@ -53,7 +53,7 @@ internal class ConfigurationValidator {
                 .let { createCbsConfiguration(it).bind() }
 
         val securityConfiguration = partialConfig.security.bind()
-                .let { createSecurityConfiguration(it).bind() }
+                .let { createSecurityConfiguration(it) }
 
         val collectorConfiguration = partialConfig.collector.bind()
                 .let { createCollectorConfig(it).bind() }
@@ -94,7 +94,11 @@ internal class ConfigurationValidator {
             }
 
     private fun createSecurityConfiguration(partial: PartialSecurityConfig) =
-            partial.keys.map { SecurityConfiguration(Some(it)) }
+            partial.keys
+                    .fold(
+                            { SecurityConfiguration(None) },
+                            { SecurityConfiguration(Some(it)) }
+                    )
 
     private fun createCollectorConfig(partial: PartialCollectorConfig) =
             partial.mapBinding {
index 12396d2..beb5df6 100644 (file)
@@ -20,6 +20,7 @@
 package org.onap.dcae.collectors.veshv.config.impl
 
 import arrow.core.None
+import arrow.core.Option
 import arrow.core.Some
 import com.nhaarman.mockitokotlin2.mock
 import org.assertj.core.api.Assertions.assertThat
@@ -134,5 +135,57 @@ internal object ConfigurationValidatorTest : Spek({
                 )
             }
         }
+
+        describe("validating configuration with security disabled") {
+            val idleTimeoutSec = 10
+            val firstReqDelaySec = 10
+            val securityKeys: Option<SecurityKeys> = None
+            val routing = routing { }.build()
+
+            val config = PartialConfiguration(
+                    Some(PartialServerConfig(
+                            Some(1),
+                            Some(idleTimeoutSec),
+                            Some(2)
+                    )),
+                    Some(PartialCbsConfig(
+                            Some(firstReqDelaySec),
+                            Some(3)
+                    )),
+                    Some(PartialSecurityConfig(
+                            securityKeys
+                    )),
+                    Some(PartialCollectorConfig(
+                            Some(true),
+                            Some(4),
+                            Some(emptyList()),
+                            Some(routing)
+                    )),
+                    Some(LogLevel.INFO)
+            )
+
+            it("should create valid configuration") {
+                val result = cut.validate(config)
+                result.fold(
+                        {
+                            fail("Configuration should have been created successfully but was $it")
+                        },
+                        {
+                            assertThat(it.server.idleTimeout)
+                                    .isEqualTo(Duration.ofSeconds(idleTimeoutSec.toLong()))
+
+                            assertThat(it.security.keys)
+                                    .isEqualTo(securityKeys)
+
+                            assertThat(it.cbs.firstRequestDelay)
+                                    .isEqualTo(Duration.ofSeconds(firstReqDelaySec.toLong()))
+
+                            assertThat(it.collector.routing)
+                                    .isEqualTo(routing)
+                        }
+                )
+            }
+        }
+
     }
 })
index ab99f13..8267e30 100644 (file)
@@ -103,6 +103,18 @@ internal object FileConfigurationReaderTest : Spek({
                 }
             }
 
+            it("parses disabled security configuration") {
+                val input = """{
+                    "security": {
+                    }
+                }""".trimIndent()
+                val config = cut.loadConfig(StringReader(input))
+
+                assertThat(config.security.nonEmpty()).isTrue()
+                val security = config.security.orNull() as PartialSecurityConfig
+                assertThat(security.keys.nonEmpty()).isFalse()
+            }
+
             it("parses invalid log level string to empty option") {
                 val input = """{
                     "logLevel": something
index 3322059..a1e89a7 100644 (file)
@@ -12,8 +12,11 @@ RUN apt-get update \
 WORKDIR /opt/ves-hv-collector
 
 ENTRYPOINT ["./entry.sh"]
+CMD ["--configuration-file /etc/ves-hv/configuration/base.json"]
 
 COPY target/libs/external/* ./
 COPY target/libs/internal/* ./
-COPY src/main/scripts/*.sh ./
+COPY src/main/docker/*.sh ./
+COPY src/main/docker/base.json /etc/ves-hv/configuration/base.json
+
 COPY target/hv-collector-main-*.jar ./
diff --git a/sources/hv-collector-main/src/main/docker/base.json b/sources/hv-collector-main/src/main/docker/base.json
new file mode 100644 (file)
index 0000000..7f88cb6
--- /dev/null
@@ -0,0 +1,27 @@
+{
+  "logLevel": "INFO",
+  "server": {
+    "listenPort": 6061,
+    "idleTimeoutSec": 60,
+    "maxPayloadSizeBytes": 1048576
+  },
+  "cbs": {
+    "firstRequestDelaySec": 10,
+    "requestIntervalSec": 5
+  },
+  "security": {
+  },
+  "collector": {
+    "dummyMode": false,
+    "maxRequestSizeBytes": 1048576,
+    "kafkaServers": [
+      "message-router-kafka:9092"
+    ],
+    "routing": [
+      {
+        "fromDomain": "perf3gpp",
+        "toTopic": "HV_VES_PERF3GPP"
+      }
+    ]
+  }
+}