package org.springframework.cloud.heroku;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import org.springframework.cloud.app.ApplicationInstanceInfo;
import org.springframework.cloud.app.BasicApplicationInstanceInfo;
import org.springframework.cloud.util.EnvironmentAccessor;
/**
* Application instance info creator.
* <p>
* Relies on SPRING_CLOUD_APP_NAME environment being set (using commands such as
* <code>heroku config:add SPRING_CLOUD_APP_NAME=myappname --app myappname</code>
*
* @author Ramnivas Laddad
*
*/
public class ApplicationInstanceInfoCreator {
private static Logger logger = Logger.getLogger(ApplicationInstanceInfoCreator.class.getName());
private EnvironmentAccessor environment;
public ApplicationInstanceInfoCreator(EnvironmentAccessor environmentAccessor) {
this.environment = environmentAccessor;
}
public ApplicationInstanceInfo createApplicationInstanceInfo() {
String appname = environment.getEnvValue("SPRING_CLOUD_APP_NAME");
if (appname == null) {
logger.warning("Environment variable SPRING_CLOUD_APP_NAME not set. App name set to <unknown>");
appname = "<unknown>";
}
String dyno = environment.getEnvValue("DYNO");
Map<String,Object> appProperties = new HashMap<String, Object>();
appProperties.put("port", environment.getEnvValue("PORT"));
appProperties.put("host", environment.getHost());
return new BasicApplicationInstanceInfo(dyno, appname, appProperties);
}
}