aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/dcae/controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/dcae/controller')
-rw-r--r--src/main/java/org/onap/dcae/controller/ConfigFilesFacade.java30
-rw-r--r--src/main/java/org/onap/dcae/controller/ConfigSource.java10
-rw-r--r--src/main/java/org/onap/dcae/controller/EnvPropertiesReader.java27
-rw-r--r--src/main/java/org/onap/dcae/controller/EnvProps.java14
4 files changed, 58 insertions, 23 deletions
diff --git a/src/main/java/org/onap/dcae/controller/ConfigFilesFacade.java b/src/main/java/org/onap/dcae/controller/ConfigFilesFacade.java
index 42155eda..9338bf62 100644
--- a/src/main/java/org/onap/dcae/controller/ConfigFilesFacade.java
+++ b/src/main/java/org/onap/dcae/controller/ConfigFilesFacade.java
@@ -20,26 +20,25 @@
*/
package org.onap.dcae.controller;
-import static io.vavr.API.Try;
-import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.enhanceError;
-import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.f;
-import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.logError;
-import static org.onap.dcae.controller.Conversions.toList;
-
import io.vavr.CheckedRunnable;
import io.vavr.Tuple2;
import io.vavr.collection.Map;
import io.vavr.control.Try;
-import java.io.FileNotFoundException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.FileNotFoundException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static io.vavr.API.Try;
+import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.*;
+import static org.onap.dcae.controller.Conversions.toList;
+
class ConfigFilesFacade {
private static Logger log = LoggerFactory.getLogger(ConfigFilesFacade.class);
@@ -100,6 +99,7 @@ class ConfigFilesFacade {
private PropertiesConfiguration readProperties() throws ConfigurationException {
PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration();
+ propertiesConfiguration.setDelimiterParsingDisabled(true);
propertiesConfiguration.load(propertiesPath.toFile());
return propertiesConfiguration;
}
@@ -109,12 +109,20 @@ class ConfigFilesFacade {
PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration(propertiesPath.toFile());
propertiesConfiguration.setEncoding(null);
for (Tuple2<String, String> property : properties) {
- propertiesConfiguration.addProperty(property._1, property._2);
+ updateProperty(propertiesConfiguration, property);
}
propertiesConfiguration.save();
};
}
+ private void updateProperty(PropertiesConfiguration propertiesConfiguration, Tuple2<String, String> property) {
+ if (propertiesConfiguration.containsKey(property._1)) {
+ propertiesConfiguration.setProperty(property._1, property._2);
+ } else {
+ propertiesConfiguration.addProperty(property._1, property._2);
+ }
+ }
+
private String indentConfiguration(String configuration) {
return new JSONObject(configuration).toString(4);
}
diff --git a/src/main/java/org/onap/dcae/controller/ConfigSource.java b/src/main/java/org/onap/dcae/controller/ConfigSource.java
index 7e6a9fc8..c20a22a2 100644
--- a/src/main/java/org/onap/dcae/controller/ConfigSource.java
+++ b/src/main/java/org/onap/dcae/controller/ConfigSource.java
@@ -43,7 +43,7 @@ final class ConfigSource {
.peek(strBody -> log.info(f("Received following CBS configuration from Consul '%s'", strBody)))
.flatMap(strBody -> toJsonArray(strBody))
.flatMap(json -> withdrawCatalog(json))
- .flatMap(json -> constructFullCBSUrl(json))
+ .flatMap(json -> constructFullCBSUrl(envProps, json))
.flatMap(cbsUrl -> callCBSForAppConfig(envProps, cbsUrl))
.flatMap(strBody -> toJson(strBody))
.peek(jsonNode -> log.info(f("Received app configuration: '%s'", jsonNode)))
@@ -51,12 +51,14 @@ final class ConfigSource {
}
private static Try<String> callConsulForCBSConfiguration(EnvProps envProps) {
- return executeGet(envProps.consulHost + ":" + envProps.consulPort + "/v1/catalog/service/" + envProps.cbsName)
+ return executeGet(envProps.consulProtocol + "://" + envProps.consulHost + ":" +
+ envProps.consulPort + "/v1/catalog/service/" + envProps.cbsName)
.mapFailure(enhanceError("Unable to retrieve CBS configuration from Consul"));
}
- private static Try<String> constructFullCBSUrl(JSONObject json) {
- return Try(() -> json.get("ServiceAddress").toString() + ":" + json.get("ServicePort").toString())
+ private static Try<String> constructFullCBSUrl(EnvProps envProps, JSONObject json) {
+ return Try(() -> envProps.cbsProtocol + "://" + json.get("ServiceAddress").toString() + ":" +
+ json.get("ServicePort").toString())
.mapFailure(enhanceError("ServiceAddress / ServicePort missing from CBS conf: '%s'", json));
}
diff --git a/src/main/java/org/onap/dcae/controller/EnvPropertiesReader.java b/src/main/java/org/onap/dcae/controller/EnvPropertiesReader.java
index 23bcbda8..5f7a2fbd 100644
--- a/src/main/java/org/onap/dcae/controller/EnvPropertiesReader.java
+++ b/src/main/java/org/onap/dcae/controller/EnvPropertiesReader.java
@@ -20,15 +20,15 @@
*/
package org.onap.dcae.controller;
-import static io.vavr.API.List;
-import static io.vavr.API.Try;
-import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.f;
-
import io.vavr.collection.Map;
import io.vavr.control.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static io.vavr.API.List;
+import static io.vavr.API.Try;
+import static org.onap.dcae.commonFunction.event.publishing.VavrUtils.f;
+
final class EnvPropertiesReader {
private final static Logger log = LoggerFactory.getLogger(EnvPropertiesReader.class);
@@ -36,11 +36,13 @@ final class EnvPropertiesReader {
static Option<EnvProps> readEnvProps(Map<String, String> environmentVariables) {
log.info("Loading necessary environment variables for dynamic configuration update");
int consulPort = getConsulPort(environmentVariables);
+ String consulProtocol = getConsulProtocol(environmentVariables);
+ String cbsProtocol = getCbsProtocol(environmentVariables);
Option<String> consulHost = getConsulHost(environmentVariables);
Option<String> cbsServiceName = getCBSName(environmentVariables);
Option<String> vesCollectorAppName = getAppName(environmentVariables);
return Option.sequence(List(consulHost, cbsServiceName, vesCollectorAppName))
- .map(e -> new EnvProps(e.get(0), consulPort, e.get(1), e.get(2)))
+ .map(e -> new EnvProps(consulProtocol, e.get(0), consulPort, cbsProtocol, e.get(1), e.get(2)))
.onEmpty(() -> log.warn("Some required environment variables are missing"))
.peek(props -> log.info(f("Discovered following environment variables: '%s'", props)));
}
@@ -74,4 +76,19 @@ final class EnvPropertiesReader {
+ "is missing from environment variables."));
}
+ private static String getConsulProtocol(Map<String, String> environmentVariables) {
+ return getProtocolFrom("CONSUL_PROTOCOL", environmentVariables);
+ }
+
+ private static String getCbsProtocol(Map<String, String> environmentVariables) {
+ return getProtocolFrom("CBS_PROTOCOL", environmentVariables);
+ }
+
+ private static String getProtocolFrom(String variableName, Map<String, String> environmentVariables) {
+ return environmentVariables.get(variableName)
+ .onEmpty(() -> log.warn("Consul protocol (env var: '" + variableName + "') is missing "
+ + "from environment variables."))
+ .getOrElse("http");
+ }
+
}
diff --git a/src/main/java/org/onap/dcae/controller/EnvProps.java b/src/main/java/org/onap/dcae/controller/EnvProps.java
index 2ee41cc6..5f7d08d5 100644
--- a/src/main/java/org/onap/dcae/controller/EnvProps.java
+++ b/src/main/java/org/onap/dcae/controller/EnvProps.java
@@ -26,14 +26,18 @@ import java.util.Objects;
*/
final class EnvProps {
+ final String consulProtocol;
final String consulHost;
final int consulPort;
final String cbsName;
+ final String cbsProtocol;
final String appName;
- EnvProps(String consulHost, int consulPort, String cbsName, String appName) {
+ EnvProps(String consulProtocol, String consulHost, int consulPort, String cbsProtocol, String cbsName, String appName) {
+ this.consulProtocol = consulProtocol;
this.consulHost = consulHost;
this.consulPort = consulPort;
+ this.cbsProtocol = cbsProtocol;
this.cbsName = cbsName;
this.appName = appName;
}
@@ -41,8 +45,10 @@ final class EnvProps {
@Override
public String toString() {
return "EnvProps{" +
- "consulHost='" + consulHost + '\'' +
+ "consulProtocol='" + consulProtocol + '\'' +
+ ", consulHost='" + consulHost + '\'' +
", consulPort=" + consulPort +
+ ", cbsProtocol='" + cbsProtocol + '\'' +
", cbsName='" + cbsName + '\'' +
", appName='" + appName + '\'' +
'}';
@@ -58,13 +64,15 @@ final class EnvProps {
}
EnvProps envProps = (EnvProps) o;
return consulPort == envProps.consulPort &&
+ Objects.equals(consulProtocol, envProps.consulProtocol) &&
Objects.equals(consulHost, envProps.consulHost) &&
+ Objects.equals(cbsProtocol, envProps.cbsProtocol) &&
Objects.equals(cbsName, envProps.cbsName) &&
Objects.equals(appName, envProps.appName);
}
@Override
public int hashCode() {
- return Objects.hash(consulHost, consulPort, cbsName, appName);
+ return Objects.hash(consulProtocol, consulHost, consulPort, cbsProtocol, cbsName, appName);
}
} \ No newline at end of file