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; 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.enums.Env;
import com.ctrip.framework.apollo.core.spi.MetaServerProvider; import com.ctrip.framework.apollo.core.spi.MetaServerProvider;
import com.ctrip.framework.apollo.core.utils.ResourceUtils; 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 * For legacy meta server configuration use, i.e. apollo-env.properties
*/ */
public class LegacyMetaServerProvider implements MetaServerProvider { public class LegacyMetaServerProvider implements MetaServerProvider {
// make it as lowest as possible, yet not the lowest // make it as lowest as possible, yet not the lowest
public static final int ORDER = MetaServerProvider.LOWEST_PRECEDENCE - 1; public static final int ORDER = MetaServerProvider.LOWEST_PRECEDENCE - 1;
private static final Map<Env, String> domains = new HashMap<>(); private static final Map<Env, String> domains = new HashMap<>();
...@@ -23,19 +24,27 @@ public class LegacyMetaServerProvider implements MetaServerProvider { ...@@ -23,19 +24,27 @@ public class LegacyMetaServerProvider implements MetaServerProvider {
private void initialize() { private void initialize() {
Properties prop = new Properties(); Properties prop = new Properties();
prop = ResourceUtils.readConfigFile("apollo-env.properties", prop); prop = ResourceUtils.readConfigFile("apollo-env.properties", prop);
Properties env = System.getProperties();
domains.put(Env.LOCAL, domains.put(Env.LOCAL, getMetaServerAddress(prop, "local_meta", "local.meta"));
env.getProperty("local_meta", prop.getProperty("local.meta"))); domains.put(Env.DEV, getMetaServerAddress(prop, "dev_meta", "dev.meta"));
domains.put(Env.DEV, domains.put(Env.FAT, getMetaServerAddress(prop, "fat_meta", "fat.meta"));
env.getProperty("dev_meta", prop.getProperty("dev.meta"))); domains.put(Env.UAT, getMetaServerAddress(prop, "uat_meta", "uat.meta"));
domains.put(Env.FAT, domains.put(Env.LPT, getMetaServerAddress(prop, "lpt_meta", "lpt.meta"));
env.getProperty("fat_meta", prop.getProperty("fat.meta"))); domains.put(Env.PRO, getMetaServerAddress(prop, "pro_meta", "pro.meta"));
domains.put(Env.UAT, }
env.getProperty("uat_meta", prop.getProperty("uat.meta")));
domains.put(Env.LPT, private String getMetaServerAddress(Properties prop, String sourceName, String propName) {
env.getProperty("lpt_meta", prop.getProperty("lpt.meta"))); // 1. Get from System Property.
domains.put(Env.PRO, String metaAddress = System.getProperty(sourceName);
env.getProperty("pro_meta", prop.getProperty("pro.meta"))); 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 @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