aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java446
1 files changed, 446 insertions, 0 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java
new file mode 100644
index 0000000..80f99f4
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/util/ConfigUtil.java
@@ -0,0 +1,446 @@
+package org.onap.msb.apiroute.wrapper.util;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.onap.msb.apiroute.ApiRouteAppConfig;
+import org.onap.msb.apiroute.api.DiscoverInfo;
+import org.onap.msb.apiroute.wrapper.InitRouteServiceWrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@SuppressWarnings("unchecked")
+public class ConfigUtil {
+ private final static ConfigUtil instance = new ConfigUtil();
+
+
+ private ConfigUtil() {}
+
+ public static ConfigUtil getInstance() {
+ return instance;
+ }
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConfigUtil.class);
+
+ private String serverPort="80";
+
+ private String IUI_ROOT_PATH="iui";
+
+ private String API_ROOT_PATH="api";
+
+ private String namespaceMatches="all";
+
+ private String visualRangeMatches="0";
+
+ private String nodeMetaQueryParam="";
+
+ private String network_plane_typeMatches="";
+
+ private String[] routeWay={"ip"};
+
+ private Map<String,String> labelMapMatches;
+
+ private DiscoverInfo discoverInfo=new DiscoverInfo();
+
+ private String consul_ip="";
+
+ private String metricsUrl = "http://127.0.0.1:8066/admin/metrics";
+
+ public void initRootPath() {
+ String apiRootPathConfSource="Default";
+ String iuiRootPathConfSource="Default";
+
+ try {
+
+ URL urlRootPath =
+ ConfigUtil.class.getResource("/ext/initUrlRootPath/initUrlRootPath.json");
+ if (urlRootPath != null) {
+ String path = urlRootPath.getPath();
+
+ LOGGER.warn("read initUrlRootPath:" + path);
+
+ String fileContent = FileUtil.readFile(path);
+ ObjectMapper mapper = new ObjectMapper();
+
+ Map<String, String> map = mapper.readValue(fileContent, HashMap.class);
+ if (map.get("iuiRootPath") != null) {
+ IUI_ROOT_PATH = map.get("iuiRootPath");
+ iuiRootPathConfSource="initUrlRootPath.json";
+ }
+ if (map.get("apiRootPath") != null) {
+ API_ROOT_PATH = map.get("apiRootPath");
+ apiRootPathConfSource="initUrlRootPath.json";
+ }
+
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ LOGGER.error("init UrlRootPath throw exception", e);
+ }
+
+ LOGGER.warn("init IUI_ROOT_PATH from ["+iuiRootPathConfSource+"]:"+IUI_ROOT_PATH);
+ LOGGER.warn("init API_ROOT_PATH from ["+apiRootPathConfSource+"]:"+API_ROOT_PATH);
+
+ }
+
+ public void initApiGatewayPort() {
+
+ String env_APIGATEWAY_EXPOSE_PORT=System.getenv("APIGATEWAY_EXPOSE_PORT");
+ String httpExposePortConfSource="Default";
+ try {
+ // read initApiGatewayConfig
+ if (StringUtils.isBlank(env_APIGATEWAY_EXPOSE_PORT)) {
+ URL apiGatewayConfigPath =
+ ConfigUtil.class
+ .getResource("/ext/initApiGatewayConfig/initApiGatewayConfig.json");
+ if (apiGatewayConfigPath != null) {
+ String path = apiGatewayConfigPath.getPath();
+
+ LOGGER.warn("read initApiGatewayConfig:" + path);
+
+ String fileContent = FileUtil.readFile(path);
+ ObjectMapper mapper = new ObjectMapper();
+
+ Map<String, Object> labelMap = mapper.readValue(fileContent, Map.class);
+ if (labelMap.get("port") != null) {
+ serverPort = (String) labelMap.get("port");
+ httpExposePortConfSource="initApiGatewayConfig.json";
+ }
+ }
+ } else {
+ serverPort = env_APIGATEWAY_EXPOSE_PORT;
+ httpExposePortConfSource="env:APIGATEWAY_EXPOSE_PORT";
+ }
+ LOGGER.warn("init APIGATEWAY http publish Port from ["+httpExposePortConfSource+"]:"+serverPort);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ LOGGER.error(
+ "read initApiGatewayConfig Files or env(APIGATEWAY_EXPOSE_PORT) throw exception", e);
+ }
+
+
+ }
+
+ public void initConsulIp() {
+ String sys_consulIp=System.getenv("CONSUL_IP");
+ if (StringUtils.isNotBlank(sys_consulIp)) {
+ consul_ip=sys_consulIp;
+ LOGGER.warn("init consul_Ip from [env:CONSUL_IP]:" + sys_consulIp);
+ }
+ else{
+ LOGGER.warn("init consul_Ip from [env:CONSUL_IP] is blank");
+ }
+
+
+ }
+
+ public void initRouteNameSpaceMatches() {
+ String env_NAMESPACE=System.getenv("NAMESPACE");
+ String namespaceConfSource="Default";
+ try {
+ // read NAMESPACE
+ if (StringUtils.isBlank(env_NAMESPACE)) {
+ URL routeLabelsPath =
+ InitRouteServiceWrapper.class
+ .getResource("/ext/initRouteLabels/initRouteLabelsMatches.json");
+ if (routeLabelsPath != null) {
+ String path = routeLabelsPath.getPath();
+
+ String fileContent = FileUtil.readFile(path);
+ ObjectMapper mapper = new ObjectMapper();
+
+ Map<String, Object> labelMap = mapper.readValue(fileContent, Map.class);
+ if (labelMap.get("namespace") != null) {
+ namespaceMatches = (String) labelMap.get("namespace");
+ namespaceConfSource="initRouteLabelsMatches.json";
+ }
+ }
+ } else {
+ namespaceMatches =env_NAMESPACE;
+ namespaceConfSource="env:NAMESPACE";
+ }
+ LOGGER.warn("init namespace Filter from ["+namespaceConfSource+"]:" + namespaceMatches);
+ }
+ catch (Exception e) {
+ // TODO Auto-generated catch block
+ LOGGER.error("read initRouteNameSpaceMatches Files or env(NAMESPACE) throw exception",
+ e);
+ }
+
+
+
+ }
+ /**
+ * @Title: initRouteLabelsMatches
+ * @Description: TODO(According to the environment variable or a JSON file configuration
+ * initialization Route filter conditions)
+ * @return: void
+ */
+ public void initRouteLabelsMatches() {
+ String env_ROUTE_LABELS=System.getenv("ROUTE_LABELS");
+ String visualRangeConfSource="Default";
+ String networkPlaneConfSource="Default";
+ String labelConfSource="Default";
+ try {
+
+ // read ROUTE_LABELS
+ if (StringUtils.isBlank(env_ROUTE_LABELS)) {
+ URL routeLabelsPath =
+ InitRouteServiceWrapper.class
+ .getResource("/ext/initRouteLabels/initRouteLabelsMatches.json");
+ if (routeLabelsPath != null) {
+ String path = routeLabelsPath.getPath();
+
+ String fileContent = FileUtil.readFile(path);
+ ObjectMapper mapper = new ObjectMapper();
+
+ Map<?, ?> labelMap = mapper.readValue(fileContent, Map.class);
+ if (labelMap.get("predefineLabels") != null) {
+ Map<String, String> predefineLabelMapMatches =
+ (Map<String, String>) labelMap.get("predefineLabels");
+ if (predefineLabelMapMatches.get("visualRange") != null) {
+ visualRangeMatches = predefineLabelMapMatches.get("visualRange");
+ visualRangeConfSource="initRouteLabelsMatches.json";
+ }
+ if (predefineLabelMapMatches.get("network_plane_type") != null) {
+ network_plane_typeMatches =
+ predefineLabelMapMatches.get("network_plane_type");
+ networkPlaneConfSource="initRouteLabelsMatches.json";
+ }
+ }
+
+ if (labelMap.get("customLabels") != null) {
+ labelMapMatches = (Map<String, String>) labelMap.get("customLabels");
+ labelConfSource="initRouteLabelsMatches.json";
+ }
+
+ }
+ } else {
+ String[] env_routeLabels = StringUtils.split(env_ROUTE_LABELS, ",");
+ Map<String, String> labelMap = new HashMap<String, String>();
+
+ for (int i = 0; i < env_routeLabels.length; i++) {
+ String[] labels = StringUtils.split(env_routeLabels[i], ":");
+
+ if ("visualRange".equals(labels[0])) {
+ visualRangeMatches = labels[1];
+ visualRangeConfSource="env:ROUTE_LABELS";
+ } else if ("network_plane_type".equals(labels[0])) {
+ network_plane_typeMatches = labels[1];
+ networkPlaneConfSource="env:ROUTE_LABELS";
+ } else {
+ labelMap.put(labels[0], labels[1]);
+ }
+
+ }
+
+ labelConfSource="env:ROUTE_LABELS";
+ labelMapMatches = labelMap;
+
+ }
+ LOGGER.warn("init visualRange Filter from [ "+visualRangeConfSource+" ]:" + visualRangeMatches);
+ LOGGER.warn("init network_plane_type Filter from [ "+networkPlaneConfSource+" ]:" + network_plane_typeMatches);
+ LOGGER.warn("init customLabels Filter from [ "+labelConfSource+" ]:" + labelMapMatches);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ LOGGER.error(
+ "read initRouteLabelsPathMatches Files or env(ROUTE_LABELS) throw exception",
+ e);
+ }
+ }
+
+ public void initRouteWay() {
+ String env_ROUTE_WAY=System.getenv("ROUTE_WAY");
+ try {
+ // read NAMESPACE
+ if (StringUtils.isBlank(env_ROUTE_WAY)) {
+ URL routeLabelsPath =
+ InitRouteServiceWrapper.class.getResource("/ext/initRouteWay/initRouteWay.json");
+ if (routeLabelsPath != null) {
+ String path = routeLabelsPath.getPath();
+
+ String fileContent = FileUtil.readFile(path);
+ ObjectMapper mapper = new ObjectMapper();
+
+ Map<String, Object> routeWayMap = mapper.readValue(fileContent, Map.class);
+ String routeWayFromConfig=(String)routeWayMap.get("routeWay");
+ if (StringUtils.isNotBlank(routeWayFromConfig)) {
+ routeWay =
+ StringUtils.split(routeWayFromConfig, RouteUtil.SPLIT_LINE);
+ LOGGER.warn("init RouteWay from [initRouteWay.json]:" + routeWayFromConfig);
+ }
+ }
+ } else {
+ routeWay = StringUtils.split(env_ROUTE_WAY, RouteUtil.SPLIT_LINE);
+ LOGGER.warn("read initRouteWay from [env:ROUTE_WAY]:" + env_ROUTE_WAY);
+ }
+
+
+
+
+
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ LOGGER.error("read initRouteWay Files or env(ROUTE_WAY) throw exception", e);
+ }
+ }
+
+
+ public void initDiscoverInfo(ApiRouteAppConfig configuration){
+ DiscoverInfo config_discoverInfo = configuration.getDiscoverInfo();
+
+
+ discoverInfo.setEnabled(config_discoverInfo.isEnabled());
+
+ String discoverInfoConfSource="yaml config";
+
+ if (config_discoverInfo.isEnabled()) {
+
+ String discoverIP;
+ String env_SDCLIENT_IP=System.getenv("SDCLIENT_IP");
+
+ if (StringUtils.isBlank(env_SDCLIENT_IP)) {
+ // yml
+ discoverIP = config_discoverInfo.getIp();
+ } else {
+ discoverIP = env_SDCLIENT_IP;
+ discoverInfoConfSource="env:SDCLIENT_IP";
+ }
+
+ discoverInfo.setIp(discoverIP.trim());
+ discoverInfo.setPort(config_discoverInfo.getPort());
+ }
+
+ LOGGER.warn("init DiscoverInfo from ["+discoverInfoConfSource+"]--" + discoverInfo.toString()+" Enabled:"+discoverInfo.isEnabled());
+ }
+
+ public void initNodeMetaQueryParam() {
+ // judge consul register node:caltalog
+ String env_CONSUL_REGISTER_MODE = System.getenv("CONSUL_REGISTER_MODE");
+
+ if (env_CONSUL_REGISTER_MODE == null
+ || !env_CONSUL_REGISTER_MODE.trim().equals("catalog")) {
+ nodeMetaQueryParam = "";
+ return;
+ }
+
+ // visual range
+ String nodemeta_visualrange = nodemeta_visualrange(visualRangeMatches);
+
+ LOGGER.warn("calc nodemeta_visualrange from [" + visualRangeMatches
+ + "]:" + nodemeta_visualrange);
+
+ nodeMetaQueryParam = nodemeta_visualrange;
+
+ // name space
+ String nodemeta_namespace = nodemeta_namespace(namespaceMatches);
+ LOGGER.warn("calc nodemeta_namespace from [" + namespaceMatches + "]:"
+ + nodemeta_namespace);
+
+ if (!nodeMetaQueryParam.isEmpty() && !nodemeta_namespace.isEmpty()) {
+ nodeMetaQueryParam += "&";
+ }
+ nodeMetaQueryParam += nodemeta_namespace;
+
+ /*
+ * // nodemeta = (!nodemeta_visualrange.isEmpty() && !nodemeta_namespace
+ * .isEmpty()) ? nodemeta_visualrange + "&" + nodemeta_namespace :
+ * nodemeta_visualrange + nodemeta_namespace;
+ */
+
+ }
+
+ private String nodemeta_visualrange(final String visualRangeMatches) {
+
+ if (visualRangeMatches == null || visualRangeMatches.isEmpty()) {
+ return "";
+ }
+
+ // external:0
+ if (visualRangeMatches.trim().equals("0")) {
+ return "node-meta=external:true";
+ }
+
+ // internal:1
+ if (visualRangeMatches.trim().equals("1")) {
+ return "node-meta=internal:true";
+ }
+
+ return "";
+ }
+
+
+ private String nodemeta_namespace(final String namespaceMatches) {
+
+ // exclude null,"",all,&,|,!
+ if (namespaceMatches == null || namespaceMatches.isEmpty()
+ || namespaceMatches.contains("all")
+ || namespaceMatches.contains("&")
+ || namespaceMatches.contains("|")
+ || namespaceMatches.contains("!")) {
+ return "";
+ }
+
+ return "node-meta=ns:" + namespaceMatches;
+ }
+
+ public String getServerPort() {
+ return serverPort;
+ }
+
+ public String getIUI_ROOT_PATH() {
+ return IUI_ROOT_PATH;
+ }
+
+ public String getAPI_ROOT_PATH() {
+ return API_ROOT_PATH;
+ }
+
+ public String getNamespaceMatches() {
+ return namespaceMatches;
+ }
+
+ public String getVisualRangeMatches() {
+ return visualRangeMatches;
+ }
+
+ public String getNetwork_plane_typeMatches() {
+ return network_plane_typeMatches;
+ }
+
+ public String[] getRouteWay() {
+ return routeWay.clone();
+ }
+
+ public Map<String, String> getLabelMapMatches() {
+ return labelMapMatches;
+ }
+
+ public DiscoverInfo getDiscoverInfo() {
+ return discoverInfo;
+ }
+
+ public String getMetricsUrl() {
+ return metricsUrl;
+ }
+
+ public void setMetricsUrl(String metricsUrl) {
+ this.metricsUrl = metricsUrl;
+ }
+
+ public String getNodeMetaQueryParam() {
+ return nodeMetaQueryParam;
+ }
+
+ public String getConsul_ip() {
+ return consul_ip;
+ }
+
+
+
+}