package io.fathom.auto;
import io.fathom.auto.config.ConfigStore;
import io.fathom.auto.config.SecretKeys;
import io.fathom.auto.haproxy.HaproxyInstance;
import io.fathom.auto.openstack.horizon.HorizonInstance;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AutonomousHorizonMain {
private static final Logger log = LoggerFactory.getLogger(AutonomousHorizonMain.class);
private final ConfigStore configStore;
AutonomousHorizonMain(ConfigStore configStore) {
this.configStore = configStore;
}
public static void main(String[] args) throws InterruptedException {
ConfigStore configStore = ConfigStore.get("openstack-horizon");
AutonomousHorizonMain horizon = new AutonomousHorizonMain(configStore);
try {
horizon.run();
} catch (Exception e) {
log.error("Error during horizon run; forcing exit", e);
System.exit(1);
}
}
public void run() throws IOException, InterruptedException {
final SecretKeys secretKeys = configStore.getSecretKeys();
final String defaultHost = configStore.getInstanceProperty(ConfigStore.KEY_DNS_HOST);
log.info("default host = {}", defaultHost);
Thread haproxyThread = new Thread(new Runnable() {
@Override
public void run() {
SimpleHaproxyConfig config = new SimpleHaproxyConfig(secretKeys, defaultHost);
HaproxyInstance instance = new HaproxyInstance(config);
try {
instance.run();
} catch (Exception e) {
log.error("Error during haproxy run; forcing exit", e);
System.exit(1);
}
}
});
haproxyThread.start();
Thread horizonThread = new Thread(new Runnable() {
@Override
public void run() {
HorizonInstance instance = new HorizonInstance(configStore);
try {
instance.run();
} catch (Exception e) {
log.error("Error during horizon run; forcing exit", e);
System.exit(1);
}
}
});
horizonThread.start();
}
}