Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into contrib/jersey2-com…
Browse files Browse the repository at this point in the history
…patibility
  • Loading branch information
qiangdavidliu committed Sep 30, 2016
2 parents 717643e + c7d4238 commit 7cb2e47
Show file tree
Hide file tree
Showing 24 changed files with 642 additions and 167 deletions.
11 changes: 9 additions & 2 deletions eureka-client-archaius2/build.gradle
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
apply plugin: 'nebula.test-jar'

def archaius2Version = '2.1.5'
def archaius2Version = '2.1.7'

sourceSets {
test {
resources.srcDir file('src/main/resources')
}
}

dependencies {
compile project(':eureka-client')

// archaius2
compile "com.netflix.archaius:archaius2-core:${archaius2Version}"
compile "com.netflix.archaius:archaius2-guice:${archaius2Version}"

testCompile project(':eureka-test-utils')

testCompile "junit:junit:${junit_version}"
testCompile 'org.mortbay.jetty:jetty:6.1H.22'
testCompile "org.mockito:mockito-core:${mockitoVersion}"
testCompile "org.mock-server:mockserver-netty:${mockserverVersion}"
testCompile "com.netflix.archaius:archaius2-guice:${archaius2Version}"

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.internal.util.InternalPrefixedConfig;

import javax.inject.Inject;
import javax.inject.Singleton;
Expand All @@ -16,18 +17,20 @@
@ConfigurationSource(CommonConstants.CONFIG_FILE_NAME)
public class Archaius2AmazonInfoConfig implements AmazonInfoConfig {

private final Config config;
private final Config configInstance;
private final InternalPrefixedConfig prefixedConfig;
private final String namespace;

@Inject
public Archaius2AmazonInfoConfig(Config config) {
this(config, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
public Archaius2AmazonInfoConfig(Config configInstance) {
this(configInstance, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
}


public Archaius2AmazonInfoConfig(Config config, String namespace) {
public Archaius2AmazonInfoConfig(Config configInstance, String namespace) {
this.namespace = namespace;
this.config = config.getPrefixedView(namespace);
this.configInstance = configInstance;
this.prefixedConfig = new InternalPrefixedConfig(configInstance, namespace);
}


Expand All @@ -38,31 +41,31 @@ public String getNamespace() {

@Override
public boolean shouldLogAmazonMetadataErrors() {
return config.getBoolean(LOG_METADATA_ERROR_KEY, false);
return prefixedConfig.getBoolean(LOG_METADATA_ERROR_KEY, false);
}

@Override
public int getReadTimeout() {
return config.getInteger(READ_TIMEOUT_KEY, Values.DEFAULT_READ_TIMEOUT);
return prefixedConfig.getInteger(READ_TIMEOUT_KEY, Values.DEFAULT_READ_TIMEOUT);
}

@Override
public int getConnectTimeout() {
return config.getInteger(CONNECT_TIMEOUT_KEY, Values.DEFAULT_CONNECT_TIMEOUT);
return prefixedConfig.getInteger(CONNECT_TIMEOUT_KEY, Values.DEFAULT_CONNECT_TIMEOUT);
}

@Override
public int getNumRetries() {
return config.getInteger(NUM_RETRIES_KEY, Values.DEFAULT_NUM_RETRIES);
return prefixedConfig.getInteger(NUM_RETRIES_KEY, Values.DEFAULT_NUM_RETRIES);
}

@Override
public boolean shouldFailFastOnFirstLoad() {
return config.getBoolean(FAIL_FAST_ON_FIRST_LOAD_KEY, true);
return prefixedConfig.getBoolean(FAIL_FAST_ON_FIRST_LOAD_KEY, true);
}

@Override
public boolean shouldValidateInstanceId() {
return config.getBoolean(SHOULD_VALIDATE_INSTANCE_ID_KEY, true);
return prefixedConfig.getBoolean(SHOULD_VALIDATE_INSTANCE_ID_KEY, true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
*
*/
@Singleton
public class Ec2EurekaArchaius2InstanceConfig extends EurekaArchaius2InstanceConfig {
public class Ec2EurekaArchaius2InstanceConfig extends EurekaArchaius2InstanceConfig implements RefreshableInstanceConfig {
private static final Logger LOG = LoggerFactory.getLogger(Ec2EurekaArchaius2InstanceConfig.class);

private static final String[] DEFAULT_AWS_ADDRESS_RESOLUTION_ORDER = new String[] {
Expand All @@ -32,27 +32,43 @@ public class Ec2EurekaArchaius2InstanceConfig extends EurekaArchaius2InstanceCon
private final RefreshableAmazonInfoProvider amazonInfoHolder;

@Inject
public Ec2EurekaArchaius2InstanceConfig(Config config, AmazonInfoConfig amazonInfoConfig) {
this(config, amazonInfoConfig, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
public Ec2EurekaArchaius2InstanceConfig(Config configInstance, AmazonInfoConfig amazonInfoConfig) {
this(configInstance, amazonInfoConfig, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
}

public Ec2EurekaArchaius2InstanceConfig(Config config, AmazonInfoConfig amazonInfoConfig, String namespace) {
super(config, namespace);
/* visible for testing */ Ec2EurekaArchaius2InstanceConfig(Config configInstance, AmazonInfo info) {
this(configInstance, new Archaius2AmazonInfoConfig(configInstance), CommonConstants.DEFAULT_CONFIG_NAMESPACE, info, false);
}

public Ec2EurekaArchaius2InstanceConfig(Config configInstance, AmazonInfoConfig amazonInfoConfig, String namespace) {
this(configInstance, amazonInfoConfig, namespace, null, true);
}

/* visible for testing */ Ec2EurekaArchaius2InstanceConfig(Config configInstance,
AmazonInfoConfig amazonInfoConfig,
String namespace,
AmazonInfo initialInfo,
boolean eagerInit) {
super(configInstance, namespace);
this.amazonInfoConfig = amazonInfoConfig;

RefreshableAmazonInfoProvider.FallbackAddressProvider fallbackAddressProvider =
new RefreshableAmazonInfoProvider.FallbackAddressProvider() {
@Override
public String getFallbackIp() {
return Ec2EurekaArchaius2InstanceConfig.super.getIpAddress();
}

@Override
public String getFallbackHostname() {
return Ec2EurekaArchaius2InstanceConfig.super.getHostName(false);
}
};
this.amazonInfoHolder = new RefreshableAmazonInfoProvider(amazonInfoConfig, fallbackAddressProvider);
if (eagerInit) {
RefreshableAmazonInfoProvider.FallbackAddressProvider fallbackAddressProvider =
new RefreshableAmazonInfoProvider.FallbackAddressProvider() {
@Override
public String getFallbackIp() {
return Ec2EurekaArchaius2InstanceConfig.super.getIpAddress();
}

@Override
public String getFallbackHostname() {
return Ec2EurekaArchaius2InstanceConfig.super.getHostName(false);
}
};
this.amazonInfoHolder = new RefreshableAmazonInfoProvider(amazonInfoConfig, fallbackAddressProvider);
} else {
this.amazonInfoHolder = new RefreshableAmazonInfoProvider(initialInfo, amazonInfoConfig);
}
}

@Override
Expand Down Expand Up @@ -84,4 +100,25 @@ public String[] getDefaultAddressResolutionOrder() {
public synchronized void refreshAmazonInfo() {
amazonInfoHolder.refresh();
}

@Override
public String resolveDefaultAddress(boolean refresh) {
// In this method invocation data center info will be refreshed.
String result = getHostName(refresh);

for (String name : getDefaultAddressResolutionOrder()) {
try {
AmazonInfo.MetaDataKey key = AmazonInfo.MetaDataKey.valueOf(name);
String address = amazonInfoHolder.get().get(key);
if (address != null && !address.isEmpty()) {
result = address;
break;
}
} catch (Exception e) {
LOG.error("failed to resolve default address for key {}, skipping", name, e);
}
}

return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.internal.util.InternalPrefixedConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -22,111 +23,113 @@ public class EurekaArchaius2InstanceConfig extends AbstractInstanceConfig {

protected String namespace;

private Config config;
private final Config configInstance;
private final InternalPrefixedConfig prefixedConfig;
private final DataCenterInfo dcInfo;

private final String defaultAppGroup;

@Inject
public EurekaArchaius2InstanceConfig(Config config) {
this(config, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
public EurekaArchaius2InstanceConfig(Config configInstance) {
this(configInstance, CommonConstants.DEFAULT_CONFIG_NAMESPACE);
}

public EurekaArchaius2InstanceConfig(Config config, String namespace) {
this(config, namespace, new DataCenterInfo() {
public EurekaArchaius2InstanceConfig(Config configInstance, String namespace) {
this(configInstance, namespace, new DataCenterInfo() {
@Override
public Name getName() {
return Name.MyOwn;
}
});
}

public EurekaArchaius2InstanceConfig(Config config, String namespace, DataCenterInfo dcInfo) {
this.defaultAppGroup = config.getString(FALLBACK_APP_GROUP_KEY, Values.UNKNOWN_APPLICATION);
public EurekaArchaius2InstanceConfig(Config configInstance, String namespace, DataCenterInfo dcInfo) {
this.defaultAppGroup = configInstance.getString(FALLBACK_APP_GROUP_KEY, Values.UNKNOWN_APPLICATION);
this.namespace = namespace;
this.config = config.getPrefixedView(namespace);
this.configInstance = configInstance;
this.prefixedConfig = new InternalPrefixedConfig(configInstance, namespace);
this.dcInfo = dcInfo;
}

@Override
public String getInstanceId() {
String result = config.getString(INSTANCE_ID_KEY, null);
String result = prefixedConfig.getString(INSTANCE_ID_KEY, null);
return result == null ? null : result.trim();
}

@Override
public String getAppname() {
return config.getString(APP_NAME_KEY, Values.UNKNOWN_APPLICATION).trim();
return prefixedConfig.getString(APP_NAME_KEY, Values.UNKNOWN_APPLICATION).trim();
}

@Override
public String getAppGroupName() {
return config.getString(APP_GROUP_KEY, defaultAppGroup).trim();
return prefixedConfig.getString(APP_GROUP_KEY, defaultAppGroup).trim();
}

@Override
public boolean isInstanceEnabledOnit() {
return config.getBoolean(TRAFFIC_ENABLED_ON_INIT_KEY, super.isInstanceEnabledOnit());
return prefixedConfig.getBoolean(TRAFFIC_ENABLED_ON_INIT_KEY, super.isInstanceEnabledOnit());
}

@Override
public int getNonSecurePort() {
return config.getInteger(PORT_KEY, super.getNonSecurePort());
return prefixedConfig.getInteger(PORT_KEY, super.getNonSecurePort());
}

@Override
public int getSecurePort() {
return config.getInteger(SECURE_PORT_KEY, super.getSecurePort());
return prefixedConfig.getInteger(SECURE_PORT_KEY, super.getSecurePort());
}

@Override
public boolean isNonSecurePortEnabled() {
return config.getBoolean(PORT_ENABLED_KEY, super.isNonSecurePortEnabled());
return prefixedConfig.getBoolean(PORT_ENABLED_KEY, super.isNonSecurePortEnabled());
}

@Override
public boolean getSecurePortEnabled() {
return config.getBoolean(SECURE_PORT_ENABLED_KEY, super.getSecurePortEnabled());
return prefixedConfig.getBoolean(SECURE_PORT_ENABLED_KEY, super.getSecurePortEnabled());
}

@Override
public int getLeaseRenewalIntervalInSeconds() {
return config.getInteger(LEASE_RENEWAL_INTERVAL_KEY, super.getLeaseRenewalIntervalInSeconds());
return prefixedConfig.getInteger(LEASE_RENEWAL_INTERVAL_KEY, super.getLeaseRenewalIntervalInSeconds());
}

@Override
public int getLeaseExpirationDurationInSeconds() {
return config.getInteger(LEASE_EXPIRATION_DURATION_KEY, super.getLeaseExpirationDurationInSeconds());
return prefixedConfig.getInteger(LEASE_EXPIRATION_DURATION_KEY, super.getLeaseExpirationDurationInSeconds());
}

@Override
public String getVirtualHostName() {
return this.isNonSecurePortEnabled()
? config.getString(VIRTUAL_HOSTNAME_KEY, super.getVirtualHostName())
? prefixedConfig.getString(VIRTUAL_HOSTNAME_KEY, super.getVirtualHostName())
: null;
}

@Override
public String getSecureVirtualHostName() {
return this.getSecurePortEnabled()
? config.getString(SECURE_VIRTUAL_HOSTNAME_KEY, super.getSecureVirtualHostName())
? prefixedConfig.getString(SECURE_VIRTUAL_HOSTNAME_KEY, super.getSecureVirtualHostName())
: null;
}

@Override
public String getASGName() {
return config.getString(ASG_NAME_KEY, super.getASGName());
return prefixedConfig.getString(ASG_NAME_KEY, super.getASGName());
}

@Override
public Map<String, String> getMetadataMap() {
Map<String, String> meta = new HashMap<>();
Config config = this.config.getPrefixedView(INSTANCE_METADATA_PREFIX);
for (String key : Sets.newHashSet(config.getKeys())) {
String value = config.getString(key);
Map<String, String> meta = new HashMap<>();
InternalPrefixedConfig metadataConfig = new InternalPrefixedConfig(configInstance, namespace, INSTANCE_METADATA_PREFIX);
for (String key : Sets.newHashSet(metadataConfig.getKeys())) {
String value = metadataConfig.getString(key, null);
// only add the metadata if the value is present
if (value != null && !value.isEmpty()) {
meta.put(key, config.getString(key));
meta.put(key, value);
} else {
logger.warn("Not adding metadata with key \"{}\" as it has null or empty value", key);
}
Expand All @@ -141,42 +144,42 @@ public DataCenterInfo getDataCenterInfo() {

@Override
public String getStatusPageUrlPath() {
return config.getString(STATUS_PAGE_URL_PATH_KEY, Values.DEFAULT_STATUSPAGE_URLPATH);
return prefixedConfig.getString(STATUS_PAGE_URL_PATH_KEY, Values.DEFAULT_STATUSPAGE_URLPATH);
}

@Override
public String getStatusPageUrl() {
return config.getString(STATUS_PAGE_URL_KEY, null);
return prefixedConfig.getString(STATUS_PAGE_URL_KEY, null);
}

@Override
public String getHomePageUrlPath() {
return config.getString(HOME_PAGE_URL_PATH_KEY, Values.DEFAULT_HOMEPAGE_URLPATH);
return prefixedConfig.getString(HOME_PAGE_URL_PATH_KEY, Values.DEFAULT_HOMEPAGE_URLPATH);
}

@Override
public String getHomePageUrl() {
return config.getString(HOME_PAGE_URL_KEY, null);
return prefixedConfig.getString(HOME_PAGE_URL_KEY, null);
}

@Override
public String getHealthCheckUrlPath() {
return config.getString(HEALTHCHECK_URL_PATH_KEY, Values.DEFAULT_HEALTHCHECK_URLPATH);
return prefixedConfig.getString(HEALTHCHECK_URL_PATH_KEY, Values.DEFAULT_HEALTHCHECK_URLPATH);
}

@Override
public String getHealthCheckUrl() {
return config.getString(HEALTHCHECK_URL_KEY, null);
return prefixedConfig.getString(HEALTHCHECK_URL_KEY, null);
}

@Override
public String getSecureHealthCheckUrl() {
return config.getString(SECURE_HEALTHCHECK_URL_KEY, null);
return prefixedConfig.getString(SECURE_HEALTHCHECK_URL_KEY, null);
}

@Override
public String[] getDefaultAddressResolutionOrder() {
String result = config.getString(DEFAULT_ADDRESS_RESOLUTION_ORDER_KEY, null);
String result = prefixedConfig.getString(DEFAULT_ADDRESS_RESOLUTION_ORDER_KEY, null);
return result == null ? new String[0] : result.split(",");
}

Expand Down
Loading

0 comments on commit 7cb2e47

Please sign in to comment.