package com.hubspot.blazar.guice;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.hubspot.blazar.config.BlazarConfiguration;
import com.hubspot.singularity.client.SingularityClient;
import com.hubspot.singularity.client.SingularityClientProvider;
@Singleton
public class SingularityClusterClientsProvider implements Provider<Map<String, SingularityClient>> {
private final Map<String, SingularityClient> singularityClients;
@Inject
public SingularityClusterClientsProvider(SingularityClientProvider singularityClientProvider, BlazarConfiguration blazarConfiguration) {
ImmutableMap.Builder<String, SingularityClient> sigularityClientsBuilder = ImmutableMap.builder();
blazarConfiguration.getSingularityClusterConfigurations().entrySet().forEach(clusterConfigurationEntry -> {
singularityClientProvider.setHosts(clusterConfigurationEntry.getValue().getHost());
if (clusterConfigurationEntry.getValue().getPath().isPresent()) {
singularityClientProvider.setContextPath(clusterConfigurationEntry.getValue().getPath().get());
}
if (clusterConfigurationEntry.getValue().getCredentials().isPresent()) {
singularityClientProvider.setCredentials(clusterConfigurationEntry.getValue().getCredentials().get());
}
sigularityClientsBuilder.put(clusterConfigurationEntry.getKey(), singularityClientProvider.get());
});
singularityClients = sigularityClientsBuilder.build();
}
@Override
public Map<String, SingularityClient> get() {
return singularityClients;
}
}