package io.fathom.auto.config;
import io.fathom.auto.config.ConfigStore.ConfigStoreProvider;
import io.fathom.auto.openstack.metadata.Metadata;
import io.fathom.cloud.openstack.client.OpenstackClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OpenstackConfigStoreProvider extends ConfigStoreProvider {
private static final Logger log = LoggerFactory.getLogger(OpenstackConfigStoreProvider.class);
private OpenstackClient client;
private OpenstackConfig config;
@Override
public boolean init() {
try {
log.info("Checking for openstack configuration");
Metadata metadata = getConfig().getMetadata();
assert metadata != null;
this.client = getConfig().getOpenstackClient();
return true;
} catch (Exception e) {
log.warn("Unable to build config for OpenStack", e);
return false;
}
}
private OpenstackConfig getConfig() {
if (this.config == null) {
this.config = new OpenstackConfig();
}
return this.config;
}
@Override
protected ConfigStore build(String clusterKey, String basePath, String serviceKey) {
return new OpenstackConfigStore(this, client, clusterKey, basePath, serviceKey);
}
@Override
public String getInstanceProperty(String key) {
return getConfig().getInstanceProperty(key);
}
}