diff options
author | lukai <lukai@chinamobile.com> | 2019-12-27 10:02:14 +0800 |
---|---|---|
committer | LUKAI <lukai@chinamobile.com> | 2020-01-08 02:50:27 +0000 |
commit | 22400a9e86aba3aece2ad21dc6f74fa1a14aab42 (patch) | |
tree | 1e0c333b382a0badc4dd098c5cae2a81cc784423 /dcae-analytics/dcae-analytics-model | |
parent | eac44564ef6a4ca8e7fb9ad05eb76e49f6cf7a7a (diff) |
add periodic fetch configuration
Issue-ID: DCAEGEN2-2007
Signed-off-by: Kai Lu <lukai@chinamobile.com>
Change-Id: Iab1c329534e37323eb7d0f1227b2d5c16e1cb50c
Diffstat (limited to 'dcae-analytics/dcae-analytics-model')
3 files changed, 51 insertions, 133 deletions
diff --git a/dcae-analytics/dcae-analytics-model/pom.xml b/dcae-analytics/dcae-analytics-model/pom.xml index b16958a..337dcb4 100644 --- a/dcae-analytics/dcae-analytics-model/pom.xml +++ b/dcae-analytics/dcae-analytics-model/pom.xml @@ -38,9 +38,11 @@ <name>DCAE Analytics Model</name> <description>Contains models (e.g. Common Event Format) which are common to DCAE Analytics</description> - <properties> - <main.basedir>${project.parent.basedir}</main.basedir> - </properties> + <properties> + <main.basedir>${project.parent.basedir}</main.basedir> + <sdk.version>1.1.6</sdk.version> + <immutable.version>2.7.1</immutable.version> + </properties> <dependencies> @@ -75,6 +77,48 @@ <artifactId>dcae-analytics-test</artifactId> </dependency> - </dependencies> + <dependency> + <groupId>org.onap.dcaegen2.services.sdk.rest.services</groupId> + <artifactId>cbs-client</artifactId> + <version>${sdk.version}</version> + </dependency> + <dependency> + <groupId>org.onap.dcaegen2.services.sdk.rest.services</groupId> + <artifactId>dmaap-client</artifactId> + <version>${sdk.version}</version> + </dependency> + <dependency> + <groupId>org.onap.dcaegen2.services.sdk.rest.services</groupId> + <artifactId>common-dependency</artifactId> + <version>${sdk.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-webflux</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-autoconfigure</artifactId> + </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + </dependency> + <dependency> + <groupId>org.immutables</groupId> + <artifactId>value</artifactId> + <version>${immutable.version}</version> + <scope>provided</scope> + </dependency> + + </dependencies> </project> diff --git a/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/configbindingservice/ConfigBindingServiceConstants.java b/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/configbindingservice/ConfigBindingServiceConstants.java index 786765f..9776d70 100644 --- a/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/configbindingservice/ConfigBindingServiceConstants.java +++ b/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/configbindingservice/ConfigBindingServiceConstants.java @@ -34,6 +34,7 @@ public abstract class ConfigBindingServiceConstants { // ================== CONFIG SERVICE CONSTANTS ============================== // public static final String CONSUL_HOST_ENV_VARIABLE_KEY = "CONSUL_HOST"; + public static final Integer DEFAULT_CONSUL_PORT_ENV_VARIABLE_VALUE = 8500; public static final String CONSUL_HOST_ENV_VARIABLE_VALUE = System.getenv(CONSUL_HOST_ENV_VARIABLE_KEY); public static final String CONFIG_BINDING_SERVICE_ENV_VARIABLE_KEY = "CONFIG_BINDING_SERVICE"; public static final String CONFIG_BINDING_SERVICE_ENV_VARIABLE_VALUE = @@ -47,12 +48,13 @@ public abstract class ConfigBindingServiceConstants { public static final String CONFIG_BINDING_SERVICE_PROPERTIES_KEY = "config-binding-service"; - public static final Set<String> SPRING_RESERVED_PROPERTIES_KEY_PREFIXES = Stream.of("spring", "endpoints", "server", "logging", "management").collect(Collectors.toSet()); public static final String CONFIG_SERVICE_MESSAGE_ROUTER_VALUE = "message_router"; // CONVERT JSON TO MAP public static final String KEY_SEPARATOR = "."; + public static final String CONFIG = "config"; + public static final int CONFIG_SERVICE_REFRESHPERIOD = 1; // ============== CONFIG BINDING SERVICE UTILS ========================= // /** diff --git a/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/util/supplier/ConfigBindingServiceJsonSupplier.java b/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/util/supplier/ConfigBindingServiceJsonSupplier.java deleted file mode 100644 index b882bb0..0000000 --- a/dcae-analytics/dcae-analytics-model/src/main/java/org/onap/dcae/analytics/model/util/supplier/ConfigBindingServiceJsonSupplier.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * ================================================================================ - * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - * - */ - -package org.onap.dcae.analytics.model.util.supplier; - - -import java.util.List; -import java.util.Optional; -import java.util.function.Function; -import java.util.function.Supplier; - -import org.onap.dcae.analytics.model.configbindingservice.ConfigBindingServiceConstants; -import org.onap.dcae.analytics.model.configbindingservice.ConsulConfigBindingServiceQueryResponse; -import org.onap.dcae.analytics.model.util.function.StringToURLFunction; -import org.onap.dcae.analytics.model.util.function.URLToHttpGetFunction; -import org.onap.dcae.analytics.model.util.json.AnalyticsModelJsonConversion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A Function which fetches ApplicationProperties configuration from - * Config Binding Service when deployed via docker, typically during application startup time. - * - * @author Rajiv Singla - */ -public class ConfigBindingServiceJsonSupplier implements Supplier<Optional<String>> { - - private static final Logger logger = LoggerFactory.getLogger(ConfigBindingServiceJsonSupplier.class); - - private final Function<String, Optional<String>> fetchUrlContentFunction; - - public ConfigBindingServiceJsonSupplier(final Function<String, Optional<String>> fetchUrlContentFunction) { - this.fetchUrlContentFunction = fetchUrlContentFunction; - } - - public ConfigBindingServiceJsonSupplier() { - fetchUrlContentFunction = (String s) -> new StringToURLFunction().apply(s).flatMap(new URLToHttpGetFunction()); - } - - @Override - public Optional<String> get() { - - logger.info("Consul Host Environment Variable: {}", - ConfigBindingServiceConstants.CONSUL_HOST_ENV_VARIABLE_VALUE); - logger.info("Config Binding Service Environment Variable: {}", - ConfigBindingServiceConstants.CONFIG_BINDING_SERVICE_ENV_VARIABLE_VALUE); - logger.info("Service Name Environment Variable: {}", - ConfigBindingServiceConstants.SERVICE_NAME_ENV_VARIABLE_VALUE); - - if (ConfigBindingServiceConstants.CONSUL_HOST_ENV_VARIABLE_VALUE == null || - ConfigBindingServiceConstants.CONFIG_BINDING_SERVICE_ENV_VARIABLE_VALUE == null || - ConfigBindingServiceConstants.SERVICE_NAME_ENV_VARIABLE_VALUE == null) { - logger.error("Environment variables required to query Config Binding Service are not present"); - return Optional.empty(); - } - - return Optional.of(ConfigBindingServiceConstants.CONSUL_QUERY_URL_STRING) - // Step 1: Query CONSUL to get the IP/PORT of CONFIG BINDING SERVICE - .flatMap(fetchUrlContentFunction) - // Step 2: Fetch the generated configurations from CONFIG BINDING SERVICE - .flatMap(ConfigBindingServiceJsonSupplier::parseConsulConfigBindingServiceQueryResponseJson) - // Step 3: create url from service address and service port - .flatMap(ConfigBindingServiceJsonSupplier::createConfigServiceURL) - // Step 4: Fetch final config binding service generated application configuration json string - .flatMap(fetchUrlContentFunction); - } - - /** - * Creates URL using config binding service ip address and port - * - * @param consulConfigBindingServiceQueryResponse consul config binding service query response containing config - * binding service address and service port - * - * @return config service url to fetch service configuration - */ - private static Optional<String> createConfigServiceURL(final ConsulConfigBindingServiceQueryResponse - consulConfigBindingServiceQueryResponse) { - final String configBindingServiceAddress = consulConfigBindingServiceQueryResponse.getServiceAddress(); - final Integer configServicePort = consulConfigBindingServiceQueryResponse.getServicePort(); - - if (configBindingServiceAddress == null && configServicePort == null) { - logger.error("Config Binding Service Address & Port are not present."); - return Optional.empty(); - } - - return Optional.of(String.format(ConfigBindingServiceConstants.CONFIG_SERVICE_QUERY_URL_STRING, - configBindingServiceAddress, configServicePort, - ConfigBindingServiceConstants.SERVICE_NAME_ENV_VARIABLE_VALUE)); - - } - - private static Optional<ConsulConfigBindingServiceQueryResponse> - parseConsulConfigBindingServiceQueryResponseJson(final String configBindingServiceQueryResponseJson) { - // parse json - final Optional<List<ConsulConfigBindingServiceQueryResponse>> configBindingServiceQueryResponseOptional = - AnalyticsModelJsonConversion.CONFIG_BINDING_SERVICE_LIST_JSON_FUNCTION - .apply(configBindingServiceQueryResponseJson); - - // check parsing is successful and at least 1 config binding query response is present - if (!configBindingServiceQueryResponseOptional.isPresent() || - configBindingServiceQueryResponseOptional.get().isEmpty()) { - logger.error("No Consul config binding service information found in JSON: {} ", - configBindingServiceQueryResponseJson); - return Optional.empty(); - } - - // return first consul query response - return Optional.of(configBindingServiceQueryResponseOptional.get().get(0)); - } - - -} |