diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/DefaultResourceManagerRpc.java b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/DefaultResourceManagerRpc.java index d73c6ae4015c..44893ade2e95 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/DefaultResourceManagerRpc.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/DefaultResourceManagerRpc.java @@ -1,11 +1,17 @@ package com.google.gcloud.spi; +import static com.google.gcloud.spi.ResourceManagerRpc.Option.FIELDS; +import static com.google.gcloud.spi.ResourceManagerRpc.Option.FILTER; +import static com.google.gcloud.spi.ResourceManagerRpc.Option.PAGE_SIZE; +import static com.google.gcloud.spi.ResourceManagerRpc.Option.PAGE_TOKEN; + import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson.JacksonFactory; import com.google.api.services.cloudresourcemanager.Cloudresourcemanager; +import com.google.api.services.cloudresourcemanager.model.ListProjectsResponse; import com.google.api.services.cloudresourcemanager.model.Project; import com.google.common.collect.ImmutableSet; import com.google.gcloud.resourcemanager.ResourceManagerException; @@ -18,15 +24,13 @@ public class DefaultResourceManagerRpc implements ResourceManagerRpc { // see https://cloud.google.com/resource-manager/v1/errors/core_errors - private static final Set RETRYABLE_CODES = ImmutableSet.of(503, 500, 429, 417); + private static final Set RETRYABLE_CODES = ImmutableSet.of(503, 500, 429); - private final ResourceManagerOptions options; private final Cloudresourcemanager resourceManager; public DefaultResourceManagerRpc(ResourceManagerOptions options) { HttpTransport transport = options.httpTransportFactory().create(); HttpRequestInitializer initializer = options.httpRequestInitializer(); - this.options = options; resourceManager = new Cloudresourcemanager.Builder(transport, new JacksonFactory(), initializer) .setRootUrl(options.host()) @@ -52,37 +56,68 @@ private static ResourceManagerException translate(GoogleJsonError exception) { @Override public Project create(Project project) throws ResourceManagerException { - // TODO(ajaykannan): fix me! - return null; + try { + return resourceManager.projects().create(project).execute(); + } catch (IOException ex) { + throw translate(ex); + } } @Override public void delete(String projectId) throws ResourceManagerException { - // TODO(ajaykannan): fix me! + try { + resourceManager.projects().delete(projectId).execute(); + } catch (IOException ex) { + throw translate(ex); + } } @Override public Project get(String projectId, Map options) throws ResourceManagerException { - // TODO(ajaykannan): fix me! - return null; + try { + return resourceManager.projects() + .get(projectId) + .setFields(FIELDS.getString(options)) + .execute(); + } catch (IOException ex) { + throw translate(ex); + } } @Override public Tuple> list(Map options) throws ResourceManagerException { - // TODO(ajaykannan): fix me! - return null; + try { + ListProjectsResponse response = resourceManager.projects() + .list() + .setFields(FIELDS.getString(options)) + .setFilter(FILTER.getString(options)) + .setPageSize(PAGE_SIZE.getInt(options)) + .setPageToken(PAGE_TOKEN.getString(options)) + .execute(); + return Tuple.>of( + response.getNextPageToken(), response.getProjects()); + } catch (IOException ex) { + throw translate(ex); + } } @Override public void undelete(String projectId) throws ResourceManagerException { - // TODO(ajaykannan): fix me! + try { + resourceManager.projects().undelete(projectId).execute(); + } catch (IOException ex) { + throw translate(ex); + } } @Override public Project replace(Project project) throws ResourceManagerException { - // TODO(ajaykannan): fix me! - return null; + try { + return resourceManager.projects().update(project.getProjectId(), project).execute(); + } catch (IOException ex) { + throw translate(ex); + } } } diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/ResourceManagerRpc.java b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/ResourceManagerRpc.java index 3302b3571efa..52dfc2d2368e 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/ResourceManagerRpc.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/spi/ResourceManagerRpc.java @@ -48,7 +48,7 @@ String getString(Map options) { return get(options); } - Long getInt(Map options) { + Integer getInt(Map options) { return get(options); } }