package org.cloudfoundry.community.servicebroker.brooklyn.repository; import javax.ws.rs.core.Response; import org.apache.brooklyn.rest.client.BrooklynApi; import org.apache.brooklyn.rest.domain.ApplicationSummary; import org.apache.brooklyn.rest.domain.TaskSummary; import org.slf4j.Logger; import org.slf4j.LoggerFactory; // TODO Consider using @Async on calls to the REST api public class Repositories { private static final Logger LOG = LoggerFactory.getLogger(Repositories.class); public static void createRepositories(BrooklynApi brooklynApi) { String name = "service-broker-records"; String bindingRepoName = "service-instance-binding-repository"; String instanceRepoName = "service-instance-repository"; if(!repositoryExists(brooklynApi, name)){ Response response = brooklynApi.getApplicationApi().createFromForm( String.format("{ \"name\": \"%s\"," + "\"services\": [{" + "\"type\": \"org.apache.brooklyn.entity.stock.BasicApplication\"," + "\"brooklyn.children\":[{\"name\": \"%s\", \"type\": \"org.apache.brooklyn.entity.stock.BasicEntity\"}," + "{\"name\": \"%s\", \"type\": \"org.apache.brooklyn.entity.stock.BasicEntity\"}]" + "}]" + "}", name, bindingRepoName, instanceRepoName)); TaskSummary entity = BrooklynApi.getEntity(response, TaskSummary.class); LOG.info("[entity={}]", entity); } } private static boolean repositoryExists(BrooklynApi brooklynApi, String name) { try { ApplicationSummary repo = brooklynApi.getApplicationApi().get(name); LOG.info("Got repo [name={}, status={}]", name, repo.getStatus()); return true; } catch (Exception e) { LOG.error("Could not find repo: {}", name); return false; } } }