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.



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

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.



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

def credentials
  @credentials
end

Instance Method Details

#create_project(project_id, name, labels) ⇒ Object



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

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



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

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

#get_policy(project_id) ⇒ Object



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

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



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

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

#inspectObject



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

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

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



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

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

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

#set_policy(project_id, new_policy) ⇒ Object



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

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



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

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



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

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.



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

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