Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into contrib/jersey2
Browse files Browse the repository at this point in the history
  • Loading branch information
qiangdavidliu committed Sep 14, 2016
2 parents e7062d2 + 5e462f7 commit fed8381
Show file tree
Hide file tree
Showing 57 changed files with 1,908 additions and 1,137 deletions.
8 changes: 3 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,22 @@ if (JavaVersion.current().isJava8Compatible()) {
allprojects {
ext {
githubProjectName = 'eureka'
awsVersion = '1.9.3'
awsVersion = '1.11.9'
servletVersion = '2.5'
jerseyVersion = '1.19'
jerseyVersion = '1.19.1'
jettisonVersion = '1.3.7'
apacheHttpClientVersion = '4.3.4'
guiceVersion = '4.0'
guiceVersion = '4.1.0'
servoVersion = '0.10.1'
governatorVersion = '1.12.10'
archaiusVersion = '0.7.3'
archaius2Version = '2.0.0'
blitzVersion = '1.34'
mockitoVersion = '1.10.19'
junit_version = '4.11'
mockserverVersion = '3.9.2'
jetty_version = '7.2.0.v20101020'
jacksonVersion = '2.5.4'
woodstoxVersion = '4.4.1'
karyon3Version = '3.0.1-rc.23'
}
}

Expand Down
1 change: 1 addition & 0 deletions eureka-client-archaius2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is a version of eureka-client that has been ported to use Archaius 2.x as the backing configuration system. Please note that this client is still work in progress. This client is also only java8 compatible (as Archaius 2.x is only java8 compatible).
4 changes: 4 additions & 0 deletions eureka-client-archaius2/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
apply plugin: 'nebula.test-jar'

def archaius2Version = '2.1.5'

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.netflix.appinfo;

import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;
import com.netflix.discovery.CommonConstants;

import javax.inject.Inject;
import javax.inject.Singleton;

import static com.netflix.appinfo.PropertyBasedAmazonInfoConfigConstants.*;

/**
* @author David Liu
*/
@Singleton
@ConfigurationSource(CommonConstants.CONFIG_FILE_NAME)
public class Archaius2AmazonInfoConfig implements AmazonInfoConfig {

private final Config config;
private final String namespace;

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


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


@Override
public String getNamespace() {
return namespace;
}

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

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

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

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

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

@Override
public boolean shouldValidateInstanceId() {
return config.getBoolean(SHOULD_VALIDATE_INSTANCE_ID_KEY, true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.netflix.appinfo;

import javax.inject.Inject;
import javax.inject.Singleton;

import com.netflix.discovery.CommonConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.appinfo.AmazonInfo.MetaDataKey;
import com.netflix.archaius.api.Config;

/**
* When running in EC2 add the following override binding.
*
* bind(EurekaInstanceConfig.class).to(KaryonEc2EurekaInstanceConfig.class);
*
*
* @author elandau
*
*/
@Singleton
public class Ec2EurekaArchaius2InstanceConfig extends EurekaArchaius2InstanceConfig {
private static final Logger LOG = LoggerFactory.getLogger(Ec2EurekaArchaius2InstanceConfig.class);

private static final String[] DEFAULT_AWS_ADDRESS_RESOLUTION_ORDER = new String[] {
MetaDataKey.publicHostname.name(),
MetaDataKey.localIpv4.name()
};

private final AmazonInfoConfig amazonInfoConfig;
private final RefreshableAmazonInfoProvider amazonInfoHolder;

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

public Ec2EurekaArchaius2InstanceConfig(Config config, AmazonInfoConfig amazonInfoConfig, String namespace) {
super(config, 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);
}

@Override
public String getHostName(boolean refresh) {
if (refresh) {
amazonInfoHolder.refresh();
}
return amazonInfoHolder.get().get(MetaDataKey.publicHostname);
}

@Override
public DataCenterInfo getDataCenterInfo() {
return amazonInfoHolder.get();
}

@Override
public String[] getDefaultAddressResolutionOrder() {
String[] order = super.getDefaultAddressResolutionOrder();
return (order.length == 0) ? DEFAULT_AWS_ADDRESS_RESOLUTION_ORDER : order;
}

/**
* @deprecated 2016-09-07
*
* Refresh instance info - currently only used when in AWS cloud
* as a public ip can change whenever an EIP is associated or dissociated.
*/
@Deprecated
public synchronized void refreshAmazonInfo() {
amazonInfoHolder.refresh();
}
}
Loading

0 comments on commit fed8381

Please sign in to comment.