All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.discovery.EurekaArchaius2InstanceConfig Maven / Gradle / Ivy

There is a newer version: 2.0.4
Show newest version
package com.netflix.discovery;

import java.util.HashMap;
import java.util.Map;

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

import com.google.common.collect.Sets;
import com.netflix.appinfo.AbstractInstanceConfig;
import com.netflix.appinfo.DataCenterInfo;
import com.netflix.archaius.api.Config;
import com.netflix.archaius.api.annotations.ConfigurationSource;

@Singleton
@ConfigurationSource("eureka-client")
public class EurekaArchaius2InstanceConfig extends AbstractInstanceConfig {
    private static final String UNKNOWN_APPLICATION = "unknown";

    private Config config;
    private String namespace;
    private final DataCenterInfo dcInfo;

    private final String defaultAppGroup;
    
    @Inject
    public EurekaArchaius2InstanceConfig(Config config) {
        this(config, DEFAULT_NAMESPACE);
    }
    
    public EurekaArchaius2InstanceConfig(Config config, String namespace) {
        this(config, namespace, new DataCenterInfo() {
            @Override
            public Name getName() {
                return Name.MyOwn;
            }
        });
    }
    
    public EurekaArchaius2InstanceConfig(Config config, String namespace, DataCenterInfo dcInfo) {
        this.defaultAppGroup = config.getString("NETFLIX_APP_GROUP", null);
        
        this.namespace = namespace;
        this.config = config.getPrefixedView(namespace);
        this.dcInfo = dcInfo;
        
        // TODO: archaius.deployment.environment=${env}?
    }

    @Override
    public String getInstanceId() {
        return config.getString("instanceId", null);
    }

    @Override
    public String getAppname() {
        return config.getString("name", UNKNOWN_APPLICATION);
    }

    @Override
    public String getAppGroupName() {
        return config.getString("appGroup", defaultAppGroup);
    }

    @Override
    public boolean isInstanceEnabledOnit() {
        return config.getBoolean("traffic.enabled", super.isInstanceEnabledOnit());
    }

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

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

    @Override
    public boolean isNonSecurePortEnabled() {
        return config.getBoolean("port.enabled", super.isNonSecurePortEnabled());
    }

    @Override
    public boolean getSecurePortEnabled() {
        return config.getBoolean("securePort.enabled", super.getSecurePortEnabled());
    }

    @Override
    public int getLeaseRenewalIntervalInSeconds() {
        return config.getInteger("lease.renewalInterval", super.getLeaseRenewalIntervalInSeconds());
    }

    @Override
    public int getLeaseExpirationDurationInSeconds() {
        return config.getInteger("lease.duration", super.getLeaseExpirationDurationInSeconds());
    }

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

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

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

    @Override
    public Map getMetadataMap() {
        Map meta = new HashMap<>(); 
        Config config = this.config.getPrefixedView("metadata");
        for (String key : Sets.newHashSet(config.getKeys())) {
            meta.put(key, config.getString(key));
        }
        return meta;
    }

    @Override
    public DataCenterInfo getDataCenterInfo() {
        return dcInfo;
    }

    @Override
    public String getStatusPageUrlPath() {
        return config.getString("statusPageUrlPath", "/Status");
    }

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

    @Override
    public String getHomePageUrlPath() {
        return config.getString("homePageUrlPath", "/");
    }

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

    @Override
    public String getHealthCheckUrlPath() {
        return config.getString("healthCheckUrlPath", "/healthcheck");
    }

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

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

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy