package com.hubspot.singularity.client; import java.util.List; import org.apache.curator.framework.CuratorFramework; import org.apache.zookeeper.KeeperException; import com.google.inject.Inject; import com.google.inject.name.Named; public class SingularityClusterManager { private final CuratorFramework curator; private final String contextPath; private final SingularityClientProvider clientProvider; static final String LEADER_PATH = "/leader"; @Inject public SingularityClusterManager(@Named(SingularityClientModule.CONTEXT_PATH) String contextPath, @Named(SingularityClientModule.CURATOR_NAME) CuratorFramework curator, SingularityClientProvider clientProvider) { this.contextPath = contextPath; this.curator = curator; this.clientProvider = clientProvider; } public List<String> getClusterNames() { try { return curator.getChildren().forPath(""); } catch (KeeperException.NoNodeException e) { throw new RuntimeException("Singularity cluster not set up yet?"); } catch (Exception e) { throw new RuntimeException(e); } } public String getClusterMembers(String cluster) { return SingularityClientProvider.getClusterMembers(curator); } @SuppressWarnings("deprecation") public SingularityClient getClusterClient(String cluster) { return clientProvider.buildClient(contextPath, getClusterMembers(cluster)); } }