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 =
"v1beta1"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials) ⇒ Connection

Creates a new Connection instance.



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

def initialize credentials
  @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

Returns the value of attribute credentials.



29
30
31
# File 'lib/gcloud/resource_manager/connection.rb', line 29

def credentials
  @credentials
end

Instance Method Details

#create_project(project_id, name, labels) ⇒ Object



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

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

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

#delete_project(project_id) ⇒ Object



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

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

#get_policy(project_id) ⇒ Object



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

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

#get_project(project_id) ⇒ Object



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

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

#inspectObject



121
122
123
# File 'lib/gcloud/resource_manager/connection.rb', line 121

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

#list_project(filter: nil, token: nil, max: nil) ⇒ Object



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

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

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

#set_policy(project_id, new_policy) ⇒ Object



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

def set_policy project_id, new_policy
  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



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

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

#undelete_project(project_id) ⇒ Object



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

def undelete_project project_id
  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.



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

def update_project project_gapi
  project_id = project_gapi["projectId"]

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