Commit 39b36a07 authored by Jason Song's avatar Jason Song Committed by GitHub

Merge pull request #1565 from JaredTan95/legacy

Support to override meta server url through environment variables.
parents 3743d836 9f7a2a58
package com.ctrip.framework.apollo.core.internals;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import com.ctrip.framework.apollo.core.enums.Env;
import com.ctrip.framework.apollo.core.spi.MetaServerProvider;
import com.ctrip.framework.apollo.core.utils.ResourceUtils;
import com.google.common.base.Strings;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* For legacy meta server configuration use, i.e. apollo-env.properties
*/
public class LegacyMetaServerProvider implements MetaServerProvider {
// make it as lowest as possible, yet not the lowest
public static final int ORDER = MetaServerProvider.LOWEST_PRECEDENCE - 1;
private static final Map<Env, String> domains = new HashMap<>();
......@@ -23,19 +24,27 @@ public class LegacyMetaServerProvider implements MetaServerProvider {
private void initialize() {
Properties prop = new Properties();
prop = ResourceUtils.readConfigFile("apollo-env.properties", prop);
Properties env = System.getProperties();
domains.put(Env.LOCAL,
env.getProperty("local_meta", prop.getProperty("local.meta")));
domains.put(Env.DEV,
env.getProperty("dev_meta", prop.getProperty("dev.meta")));
domains.put(Env.FAT,
env.getProperty("fat_meta", prop.getProperty("fat.meta")));
domains.put(Env.UAT,
env.getProperty("uat_meta", prop.getProperty("uat.meta")));
domains.put(Env.LPT,
env.getProperty("lpt_meta", prop.getProperty("lpt.meta")));
domains.put(Env.PRO,
env.getProperty("pro_meta", prop.getProperty("pro.meta")));
domains.put(Env.LOCAL, getMetaServerAddress(prop, "local_meta", "local.meta"));
domains.put(Env.DEV, getMetaServerAddress(prop, "dev_meta", "dev.meta"));
domains.put(Env.FAT, getMetaServerAddress(prop, "fat_meta", "fat.meta"));
domains.put(Env.UAT, getMetaServerAddress(prop, "uat_meta", "uat.meta"));
domains.put(Env.LPT, getMetaServerAddress(prop, "lpt_meta", "lpt.meta"));
domains.put(Env.PRO, getMetaServerAddress(prop, "pro_meta", "pro.meta"));
}
private String getMetaServerAddress(Properties prop, String sourceName, String propName) {
// 1. Get from System Property.
String metaAddress = System.getProperty(sourceName);
if (Strings.isNullOrEmpty(metaAddress)) {
// 2. Get from OS environment variable, which could not contain dot and is normally in UPPER case,like DEV_META.
metaAddress = System.getenv(sourceName.toUpperCase());
}
if (Strings.isNullOrEmpty(metaAddress)) {
// 3. Get from properties file.
metaAddress = prop.getProperty(propName);
}
return metaAddress;
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment