Class: Gcloud::ResourceManager::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/gcloud/resource_manager/connection.rb

Overview

Represents the connection to Resource Manager, as well as expose the API calls.

Constant Summary collapse

API_VERSION =

:nodoc:

"v1beta1"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials) ⇒ Connection

Creates a new Connection instance.



31
32
33
34
35
36
37
# File 'lib/gcloud/resource_manager/connection.rb', line 31

def initialize credentials #:nodoc:
  @credentials = credentials
  @client = Google::APIClient.new application_name:    "gcloud-ruby",
                                  application_version: Gcloud::VERSION
  @client.authorization = @credentials.client
  @res_man = @client.discovered_api "cloudresourcemanager", API_VERSION
end

Instance Attribute Details

#credentialsObject

:nodoc:



27
28
29
# File 'lib/gcloud/resource_manager/connection.rb', line 27

def credentials
  @credentials
end

Instance Method Details

#create_project(project_id, name, labels) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/gcloud/resource_manager/connection.rb', line 58

def create_project project_id, name, labels
  project_gapi = { projectId: project_id, name: name,
                   labels: labels }.delete_if { |_, v| v.nil? }

  @client.execute(
    api_method: @res_man.projects.create,
    body_object: project_gapi
  )
end

#delete_project(project_id) ⇒ Object



82
83
84
85
86
87
# File 'lib/gcloud/resource_manager/connection.rb', line 82

def delete_project project_id
  @client.execute(
    api_method: @res_man.projects.delete,
    parameters: { projectId: project_id }
  )
end

#get_policy(project_id) ⇒ Object



96
97
98
99
100
101
# File 'lib/gcloud/resource_manager/connection.rb', line 96

def get_policy project_id
  @client.execute(
    api_method: @res_man.projects.get_iam_policy,
    parameters: { resource: project_id }
  )
end

#get_project(project_id) ⇒ Object



51
52
53
54
55
56
# File 'lib/gcloud/resource_manager/connection.rb', line 51

def get_project project_id
  @client.execute(
    api_method: @res_man.projects.get,
    parameters: { projectId: project_id }
  )
end

#inspectObject

:nodoc:



119
120
121
# File 'lib/gcloud/resource_manager/connection.rb', line 119

def inspect #:nodoc:
  "#{self.class}(#{@project})"
end

#list_project(options = {}) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/gcloud/resource_manager/connection.rb', line 39

def list_project options = {}
  params = { filter: options.delete(:filter),
             pageToken: options.delete(:token),
             maxResults: options.delete(:max)
           }.delete_if { |_, v| v.nil? }

  @client.execute(
    api_method: @res_man.projects.list,
    parameters: params
  )
end

#set_policy(project_id, new_policy) ⇒ Object



103
104
105
106
107
108
109
# File 'lib/gcloud/resource_manager/connection.rb', line 103

def set_policy project_id, new_policy
  @client.execute(
    api_method: @res_man.projects.set_iam_policy,
    parameters: { resource: project_id },
    body_object: { policy: new_policy }
  )
end

#test_permissions(project_id, permissions) ⇒ Object



111
112
113
114
115
116
117
# File 'lib/gcloud/resource_manager/connection.rb', line 111

def test_permissions project_id, permissions
  @client.execute(
    api_method: @res_man.projects.test_iam_permissions,
    parameters: { resource: project_id },
    body_object: { permissions: permissions }
  )
end

#undelete_project(project_id) ⇒ Object



89
90
91
92
93
94
# File 'lib/gcloud/resource_manager/connection.rb', line 89

def undelete_project project_id
  @client.execute(
    api_method: @res_man.projects.undelete,
    parameters: { projectId: project_id }
  )
end

#update_project(project_gapi) ⇒ Object

Updated the project, given the project Google API Client object/hash. We try not to pass the gapi objects, but there is no PATCH, so we need to pass in a complete Project object.



72
73
74
75
76
77
78
79
80
# File 'lib/gcloud/resource_manager/connection.rb', line 72

def update_project project_gapi
  project_id = project_gapi["projectId"]

  @client.execute(
    api_method: @res_man.projects.update,
    parameters: { projectId: project_id },
    body_object: project_gapi
  )
end