Skip to content

Commit

Permalink
Merge pull request #1376 from fiibbb/lingy/export-config-ns
Browse files Browse the repository at this point in the history
Make eureka instance config namespace configurable
  • Loading branch information
fiibbb committed Jan 14, 2021
2 parents 1749af9 + dda7f4c commit 51188ce
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ public Ec2EurekaArchaius2InstanceConfig(Config configInstance, Provider<AmazonIn
this.amazonInfoHolder = amazonInfoProvider;
}

public Ec2EurekaArchaius2InstanceConfig(Config configInstance, Provider<AmazonInfo> amazonInfoProvider, String namespace) {
super(configInstance, namespace);
this.amazonInfoConfig = null;
this.amazonInfoHolder = amazonInfoProvider;
}

public Ec2EurekaArchaius2InstanceConfig(Config configInstance, AmazonInfoConfig amazonInfoConfig, String namespace) {
this(configInstance, amazonInfoConfig, namespace, null, true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
import com.netflix.appinfo.Ec2EurekaArchaius2InstanceConfig;
import com.netflix.appinfo.EurekaInstanceConfig;
import com.netflix.archaius.api.Config;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.DiscoveryManager;

import javax.inject.Inject;
import com.google.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;

Expand All @@ -17,6 +19,14 @@ public class CustomAmazonInfoProviderInstanceConfigFactory implements EurekaInst
private final Provider<AmazonInfo> amazonInfoProvider;
private EurekaInstanceConfig eurekaInstanceConfig;

@Inject(optional = true)
@Named(CommonConstants.INSTANCE_CONFIG_NAMESPACE_KEY)
String instanceConfigNamespace;

String getInstanceConfigNamespace() {
return instanceConfigNamespace == null ? "eureka" : instanceConfigNamespace;
}

@Inject
public CustomAmazonInfoProviderInstanceConfigFactory(Config configInstance, AmazonInfoProviderFactory amazonInfoProviderFactory) {
this.configInstance = configInstance;
Expand All @@ -26,7 +36,7 @@ public CustomAmazonInfoProviderInstanceConfigFactory(Config configInstance, Amaz
@Override
public EurekaInstanceConfig get() {
if (eurekaInstanceConfig == null) {
eurekaInstanceConfig = new Ec2EurekaArchaius2InstanceConfig(configInstance, amazonInfoProvider);
eurekaInstanceConfig = new Ec2EurekaArchaius2InstanceConfig(configInstance, amazonInfoProvider, getInstanceConfigNamespace());

// Copied from CompositeInstanceConfigFactory.get
DiscoveryManager.getInstance().setEurekaInstanceConfig(eurekaInstanceConfig);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.name.Names;
import com.netflix.appinfo.providers.EurekaInstanceConfigFactory;
import com.netflix.discovery.CommonConstants;

/**
* How to use:
Expand Down Expand Up @@ -39,11 +40,11 @@
public class EurekaClientModule extends AbstractModule {

protected LinkedBindingBuilder<String> bindEurekaInstanceConfigNamespace() {
return bind(String.class).annotatedWith(Names.named(InternalEurekaClientModule.INSTANCE_CONFIG_NAMESPACE_KEY));
return bind(String.class).annotatedWith(Names.named(CommonConstants.INSTANCE_CONFIG_NAMESPACE_KEY));
}

protected LinkedBindingBuilder<String> bindEurekaClientConfigNamespace() {
return bind(String.class).annotatedWith(Names.named(InternalEurekaClientModule.CLIENT_CONFIG_NAMESPACE_KEY));
return bind(String.class).annotatedWith(Names.named(CommonConstants.CLIENT_CONFIG_NAMESPACE_KEY));
}

protected LinkedBindingBuilder<EurekaInstanceConfigFactory> bindEurekaInstanceConfigFactory() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,17 @@

final class InternalEurekaClientModule extends AbstractModule {

static final String INSTANCE_CONFIG_NAMESPACE_KEY = "eureka.instance.config.namespace";
static final String CLIENT_CONFIG_NAMESPACE_KEY = "eureka.client.config.namespace";

@Singleton
static class ModuleConfig {
@Inject
Config config;

@Inject(optional = true)
@Named(InternalEurekaClientModule.INSTANCE_CONFIG_NAMESPACE_KEY)
@Named(CommonConstants.INSTANCE_CONFIG_NAMESPACE_KEY)
String instanceConfigNamespace;

@Inject(optional = true)
@Named(InternalEurekaClientModule.CLIENT_CONFIG_NAMESPACE_KEY)
@Named(CommonConstants.CLIENT_CONFIG_NAMESPACE_KEY)
String clientConfigNamespace;

@Inject(optional = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
public final class CommonConstants {
public static final String CONFIG_FILE_NAME = "eureka-client";
public static final String DEFAULT_CONFIG_NAMESPACE = "eureka";

public static final String INSTANCE_CONFIG_NAMESPACE_KEY = "eureka.instance.config.namespace";
public static final String CLIENT_CONFIG_NAMESPACE_KEY = "eureka.client.config.namespace";
}

0 comments on commit 51188ce

Please sign in to comment.