/*
* Copyright 2012 Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.netflix.appinfo;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import com.netflix.discovery.CommonConstants;
import com.netflix.discovery.shared.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* An abstract instance info configuration with some defaults to get the users
* started quickly.The users have to override only a few methods to register
* their instance with eureka server.
*
* @author Karthik Ranganathan
*
*/
public abstract class AbstractInstanceConfig implements EurekaInstanceConfig {
private static final Logger logger = LoggerFactory.getLogger(AbstractInstanceConfig.class);
/**
* @deprecated 2016-08-29 use {@link CommonConstants#DEFAULT_CONFIG_NAMESPACE}
*/
@Deprecated
public static final String DEFAULT_NAMESPACE = CommonConstants.DEFAULT_CONFIG_NAMESPACE;
private static final int LEASE_EXPIRATION_DURATION_SECONDS = 90;
private static final int LEASE_RENEWAL_INTERVAL_SECONDS = 30;
private static final boolean SECURE_PORT_ENABLED = false;
private static final boolean NON_SECURE_PORT_ENABLED = true;
private static final int NON_SECURE_PORT = 80;
private static final int SECURE_PORT = 443;
private static final boolean INSTANCE_ENABLED_ON_INIT = false;
private static final Pair<String, String> hostInfo = getHostInfo();
private DataCenterInfo info = new DataCenterInfo() {
@Override
public Name getName() {
return Name.MyOwn;
}
};
protected AbstractInstanceConfig() {
}
protected AbstractInstanceConfig(DataCenterInfo info) {
this.info = info;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#isInstanceEnabledOnit()
*/
@Override
public boolean isInstanceEnabledOnit() {
return INSTANCE_ENABLED_ON_INIT;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getNonSecurePort()
*/
@Override
public int getNonSecurePort() {
return NON_SECURE_PORT;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getSecurePort()
*/
@Override
public int getSecurePort() {
return SECURE_PORT;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#isNonSecurePortEnabled()
*/
@Override
public boolean isNonSecurePortEnabled() {
return NON_SECURE_PORT_ENABLED;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getSecurePortEnabled()
*/
@Override
public boolean getSecurePortEnabled() {
// TODO Auto-generated method stub
return SECURE_PORT_ENABLED;
}
/*
* (non-Javadoc)
*
* @see
* com.netflix.appinfo.InstanceConfig#getLeaseRenewalIntervalInSeconds()
*/
@Override
public int getLeaseRenewalIntervalInSeconds() {
return LEASE_RENEWAL_INTERVAL_SECONDS;
}
/*
* (non-Javadoc)
*
* @see
* com.netflix.appinfo.InstanceConfig#getLeaseExpirationDurationInSeconds()
*/
@Override
public int getLeaseExpirationDurationInSeconds() {
return LEASE_EXPIRATION_DURATION_SECONDS;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getVirtualHostName()
*/
@Override
public String getVirtualHostName() {
return (getHostName(false) + ":" + getNonSecurePort());
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getSecureVirtualHostName()
*/
@Override
public String getSecureVirtualHostName() {
return (getHostName(false) + ":" + getSecurePort());
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getASGName()
*/
@Override
public String getASGName() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getHostName()
*/
@Override
public String getHostName(boolean refresh) {
return hostInfo.second();
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getMetadataMap()
*/
@Override
public Map<String, String> getMetadataMap() {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getDataCenterInfo()
*/
@Override
public DataCenterInfo getDataCenterInfo() {
// TODO Auto-generated method stub
return info;
}
/*
* (non-Javadoc)
*
* @see com.netflix.appinfo.InstanceConfig#getIpAddress()
*/
@Override
public String getIpAddress() {
return hostInfo.first();
}
private static Pair<String, String> getHostInfo() {
Pair<String, String> pair = new Pair<String, String>("", "");
try {
pair.setFirst(InetAddress.getLocalHost().getHostAddress());
pair.setSecond(InetAddress.getLocalHost().getHostName());
} catch (UnknownHostException e) {
logger.error("Cannot get host info", e);
}
return pair;
}
}