diff options
Diffstat (limited to 'src/main/java/org/onap/dcae/controller')
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 |