From e7b3539e33f94d4844d06b61dc882b21d19b482a Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Mon, 30 Nov 2015 15:32:12 -0800 Subject: [PATCH 1/2] Default spi layer implementation --- .../gcloud/spi/DefaultResourceManagerRpc.java | 59 +++++++++++++++---- .../google/gcloud/spi/ResourceManagerRpc.java | 2 +- 2 files changed, 48 insertions(+), 13 deletions(-) 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..6fbd038a3f8c 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; @@ -20,13 +26,11 @@ 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 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() + .setFilter(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); } } From ebf3aa38cd7c197f9844fa9a5d2ed26eef3dd7a7 Mon Sep 17 00:00:00 2001 From: Ajay Kannan Date: Mon, 30 Nov 2015 16:12:17 -0800 Subject: [PATCH 2/2] Fix typo and remove non-retryable error code --- .../java/com/google/gcloud/spi/DefaultResourceManagerRpc.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 6fbd038a3f8c..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 @@ -24,7 +24,7 @@ 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 Cloudresourcemanager resourceManager; @@ -90,7 +90,7 @@ public Tuple> list(Map options) try { ListProjectsResponse response = resourceManager.projects() .list() - .setFilter(FIELDS.getString(options)) + .setFields(FIELDS.getString(options)) .setFilter(FILTER.getString(options)) .setPageSize(PAGE_SIZE.getInt(options)) .setPageToken(PAGE_TOKEN.getString(options))