11package com .google .gcloud .spi ;
22
3+ import static com .google .gcloud .spi .ResourceManagerRpc .Option .FIELDS ;
4+ import static com .google .gcloud .spi .ResourceManagerRpc .Option .FILTER ;
5+ import static com .google .gcloud .spi .ResourceManagerRpc .Option .PAGE_SIZE ;
6+ import static com .google .gcloud .spi .ResourceManagerRpc .Option .PAGE_TOKEN ;
7+
38import com .google .api .client .googleapis .json .GoogleJsonError ;
49import com .google .api .client .googleapis .json .GoogleJsonResponseException ;
510import com .google .api .client .http .HttpRequestInitializer ;
611import com .google .api .client .http .HttpTransport ;
712import com .google .api .client .json .jackson .JacksonFactory ;
813import com .google .api .services .cloudresourcemanager .Cloudresourcemanager ;
14+ import com .google .api .services .cloudresourcemanager .model .ListProjectsResponse ;
915import com .google .api .services .cloudresourcemanager .model .Project ;
1016import com .google .common .collect .ImmutableSet ;
1117import com .google .gcloud .resourcemanager .ResourceManagerException ;
@@ -20,13 +26,11 @@ public class DefaultResourceManagerRpc implements ResourceManagerRpc {
2026 // see https://cloud.google.com/resource-manager/v1/errors/core_errors
2127 private static final Set <Integer > RETRYABLE_CODES = ImmutableSet .of (503 , 500 , 429 , 417 );
2228
23- private final ResourceManagerOptions options ;
2429 private final Cloudresourcemanager resourceManager ;
2530
2631 public DefaultResourceManagerRpc (ResourceManagerOptions options ) {
2732 HttpTransport transport = options .httpTransportFactory ().create ();
2833 HttpRequestInitializer initializer = options .httpRequestInitializer ();
29- this .options = options ;
3034 resourceManager =
3135 new Cloudresourcemanager .Builder (transport , new JacksonFactory (), initializer )
3236 .setRootUrl (options .host ())
@@ -52,37 +56,68 @@ private static ResourceManagerException translate(GoogleJsonError exception) {
5256
5357 @ Override
5458 public Project create (Project project ) throws ResourceManagerException {
55- // TODO(ajaykannan): fix me!
56- return null ;
59+ try {
60+ return resourceManager .projects ().create (project ).execute ();
61+ } catch (IOException ex ) {
62+ throw translate (ex );
63+ }
5764 }
5865
5966 @ Override
6067 public void delete (String projectId ) throws ResourceManagerException {
61- // TODO(ajaykannan): fix me!
68+ try {
69+ resourceManager .projects ().delete (projectId ).execute ();
70+ } catch (IOException ex ) {
71+ throw translate (ex );
72+ }
6273 }
6374
6475 @ Override
6576 public Project get (String projectId , Map <Option , ?> options ) throws ResourceManagerException {
66- // TODO(ajaykannan): fix me!
67- return null ;
77+ try {
78+ return resourceManager .projects ()
79+ .get (projectId )
80+ .setFields (FIELDS .getString (options ))
81+ .execute ();
82+ } catch (IOException ex ) {
83+ throw translate (ex );
84+ }
6885 }
6986
7087 @ Override
7188 public Tuple <String , Iterable <Project >> list (Map <Option , ?> options )
7289 throws ResourceManagerException {
73- // TODO(ajaykannan): fix me!
74- return null ;
90+ try {
91+ ListProjectsResponse response = resourceManager .projects ()
92+ .list ()
93+ .setFilter (FIELDS .getString (options ))
94+ .setFilter (FILTER .getString (options ))
95+ .setPageSize (PAGE_SIZE .getInt (options ))
96+ .setPageToken (PAGE_TOKEN .getString (options ))
97+ .execute ();
98+ return Tuple .<String , Iterable <Project >>of (
99+ response .getNextPageToken (), response .getProjects ());
100+ } catch (IOException ex ) {
101+ throw translate (ex );
102+ }
75103 }
76104
77105 @ Override
78106 public void undelete (String projectId ) throws ResourceManagerException {
79- // TODO(ajaykannan): fix me!
107+ try {
108+ resourceManager .projects ().undelete (projectId ).execute ();
109+ } catch (IOException ex ) {
110+ throw translate (ex );
111+ }
80112 }
81113
82114 @ Override
83115 public Project replace (Project project ) throws ResourceManagerException {
84- // TODO(ajaykannan): fix me!
85- return null ;
116+ try {
117+ return resourceManager .projects ().update (project .getProjectId (), project ).execute ();
118+ } catch (IOException ex ) {
119+ throw translate (ex );
120+ }
86121 }
87122}
88123
0 commit comments