Class: Gcloud::ResourceManager::Service

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

Overview

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

Constant Summary collapse

API =

Alias to the Google Client API module

Google::Apis::CloudresourcemanagerV1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(credentials, retries: nil, timeout: nil) ⇒ Service

Creates a new Service instance.



35
36
37
38
39
40
41
42
43
# File 'lib/gcloud/resource_manager/service.rb', line 35

def initialize credentials, retries: nil, timeout: nil
  @credentials = credentials
  @service = API::CloudResourceManagerService.new
  @service.client_options.application_name    = "gcloud-ruby"
  @service.client_options.application_version = Gcloud::VERSION
  @service.request_options.retries = retries || 3
  @service.request_options.timeout_sec = timeout if timeout
  @service.authorization = @credentials.client
end

Instance Attribute Details

#credentialsObject

Returns the value of attribute credentials.



31
32
33
# File 'lib/gcloud/resource_manager/service.rb', line 31

def credentials
  @credentials
end

#mocked_serviceObject

Returns the value of attribute mocked_service.



49
50
51
# File 'lib/gcloud/resource_manager/service.rb', line 49

def mocked_service
  @mocked_service
end

Instance Method Details

#create_project(project_id, name, labels) ⇒ Object

Returns API::Project



67
68
69
70
71
72
73
# File 'lib/gcloud/resource_manager/service.rb', line 67

def create_project project_id, name, labels
  project_attrs = { projectId: project_id, name: name,
                    labels: labels }.delete_if { |_, v| v.nil? }
  service.create_project API::Project.new(project_attrs)
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#delete_project(project_id) ⇒ Object



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

def delete_project project_id
  service.delete_project project_id
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#get_policy(project_id) ⇒ Object

Returns API::Policy



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

def get_policy project_id
  service.get_project_iam_policy "projects/#{project_id}"
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#get_project(project_id) ⇒ Object

Returns API::Project



59
60
61
62
63
# File 'lib/gcloud/resource_manager/service.rb', line 59

def get_project project_id
  service.get_project project_id
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#inspectObject



122
123
124
# File 'lib/gcloud/resource_manager/service.rb', line 122

def inspect
  "#{self.class}"
end

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

Returns API::ListProjectsResponse



53
54
55
# File 'lib/gcloud/resource_manager/service.rb', line 53

def list_project filter: nil, token: nil, max: nil
  service.list_projects page_token: token, page_size: max, filter: filter
end

#serviceObject



45
46
47
48
# File 'lib/gcloud/resource_manager/service.rb', line 45

def service
  return mocked_service if mocked_service
  @service
end

#set_policy(project_id, new_policy) ⇒ Object

Returns API::Policy



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

def set_policy project_id, new_policy
  req = API::SetIamPolicyRequest.new policy: new_policy
  service.set_project_iam_policy "projects/#{project_id}", req
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#test_permissions(project_id, permissions) ⇒ Object

Returns API::TestIamPermissionsResponse



115
116
117
118
119
120
# File 'lib/gcloud/resource_manager/service.rb', line 115

def test_permissions project_id, permissions
  req = API::TestIamPermissionsRequest.new permissions: permissions
  service.test_project_iam_permissions "projects/#{project_id}", req
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#undelete_project(project_id) ⇒ Object



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

def undelete_project project_id
  service.undelete_project project_id
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end

#update_project(project_gapi) ⇒ Object

Updated the project, given a API::Project. Returns API::Project



78
79
80
81
82
# File 'lib/gcloud/resource_manager/service.rb', line 78

def update_project project_gapi
  service.update_project project_gapi.project_id, project_gapi
rescue Google::Apis::Error => e
  raise Gcloud::Error.from_error(e)
end