gcloud 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/AUTHENTICATION.md +13 -9
- data/CHANGELOG.md +8 -3
- data/OVERVIEW.md +46 -8
- data/lib/gcloud.rb +123 -117
- data/lib/gcloud/backoff.rb +43 -15
- data/lib/gcloud/bigquery.rb +211 -195
- data/lib/gcloud/bigquery/connection.rb +9 -9
- data/lib/gcloud/bigquery/copy_job.rb +15 -16
- data/lib/gcloud/bigquery/credentials.rb +3 -3
- data/lib/gcloud/bigquery/data.rb +12 -11
- data/lib/gcloud/bigquery/dataset.rb +162 -216
- data/lib/gcloud/bigquery/dataset/access.rb +59 -43
- data/lib/gcloud/bigquery/dataset/list.rb +3 -3
- data/lib/gcloud/bigquery/errors.rb +9 -5
- data/lib/gcloud/bigquery/extract_job.rb +18 -18
- data/lib/gcloud/bigquery/insert_response.rb +7 -4
- data/lib/gcloud/bigquery/job.rb +48 -44
- data/lib/gcloud/bigquery/job/list.rb +3 -3
- data/lib/gcloud/bigquery/load_job.rb +24 -25
- data/lib/gcloud/bigquery/project.rb +145 -204
- data/lib/gcloud/bigquery/query_data.rb +10 -9
- data/lib/gcloud/bigquery/query_job.rb +23 -32
- data/lib/gcloud/bigquery/table.rb +238 -280
- data/lib/gcloud/bigquery/table/list.rb +3 -3
- data/lib/gcloud/bigquery/table/schema.rb +79 -87
- data/lib/gcloud/bigquery/view.rb +69 -82
- data/lib/gcloud/credentials.rb +3 -9
- data/lib/gcloud/datastore.rb +194 -170
- data/lib/gcloud/datastore/connection.rb +12 -8
- data/lib/gcloud/datastore/credentials.rb +6 -4
- data/lib/gcloud/datastore/dataset.rb +74 -141
- data/lib/gcloud/datastore/dataset/lookup_results.rb +6 -4
- data/lib/gcloud/datastore/dataset/query_results.rb +6 -4
- data/lib/gcloud/datastore/entity.rb +81 -76
- data/lib/gcloud/datastore/errors.rb +10 -8
- data/lib/gcloud/datastore/key.rb +41 -77
- data/lib/gcloud/datastore/properties.rb +3 -3
- data/lib/gcloud/datastore/proto.rb +7 -4
- data/lib/gcloud/datastore/query.rb +26 -3
- data/lib/gcloud/datastore/transaction.rb +12 -8
- data/lib/gcloud/dns.rb +180 -152
- data/lib/gcloud/dns/change.rb +16 -16
- data/lib/gcloud/dns/change/list.rb +3 -3
- data/lib/gcloud/dns/connection.rb +9 -10
- data/lib/gcloud/dns/credentials.rb +3 -3
- data/lib/gcloud/dns/errors.rb +9 -5
- data/lib/gcloud/dns/importer.rb +17 -23
- data/lib/gcloud/dns/project.rb +42 -64
- data/lib/gcloud/dns/record.rb +58 -46
- data/lib/gcloud/dns/record/list.rb +6 -7
- data/lib/gcloud/dns/zone.rb +198 -289
- data/lib/gcloud/dns/zone/list.rb +3 -3
- data/lib/gcloud/dns/zone/transaction.rb +56 -72
- data/lib/gcloud/errors.rb +174 -3
- data/lib/gcloud/gce.rb +3 -4
- data/lib/gcloud/grpc_utils.rb +76 -0
- data/lib/gcloud/logging.rb +308 -0
- data/lib/gcloud/logging/credentials.rb +29 -0
- data/lib/gcloud/logging/entry.rb +303 -0
- data/lib/gcloud/logging/entry/http_request.rb +141 -0
- data/lib/gcloud/logging/entry/list.rb +111 -0
- data/lib/gcloud/logging/entry/operation.rb +90 -0
- data/lib/gcloud/logging/logger.rb +307 -0
- data/lib/gcloud/logging/metric.rb +175 -0
- data/lib/gcloud/logging/metric/list.rb +98 -0
- data/lib/gcloud/logging/project.rb +650 -0
- data/lib/gcloud/logging/resource.rb +95 -0
- data/lib/gcloud/logging/resource_descriptor.rb +140 -0
- data/lib/gcloud/logging/resource_descriptor/list.rb +78 -0
- data/lib/gcloud/logging/service.rb +258 -0
- data/lib/gcloud/logging/sink.rb +233 -0
- data/lib/gcloud/logging/sink/list.rb +97 -0
- data/lib/gcloud/pubsub.rb +241 -199
- data/lib/gcloud/pubsub/credentials.rb +3 -3
- data/lib/gcloud/pubsub/message.rb +26 -20
- data/lib/gcloud/pubsub/project.rb +166 -233
- data/lib/gcloud/pubsub/received_message.rb +28 -38
- data/lib/gcloud/pubsub/service.rb +323 -0
- data/lib/gcloud/pubsub/subscription.rb +172 -242
- data/lib/gcloud/pubsub/subscription/list.rb +11 -9
- data/lib/gcloud/pubsub/topic.rb +152 -271
- data/lib/gcloud/pubsub/topic/batch.rb +66 -0
- data/lib/gcloud/pubsub/topic/list.rb +9 -7
- data/lib/gcloud/resource_manager.rb +158 -138
- data/lib/gcloud/resource_manager/connection.rb +6 -5
- data/lib/gcloud/resource_manager/credentials.rb +3 -3
- data/lib/gcloud/resource_manager/errors.rb +9 -5
- data/lib/gcloud/resource_manager/manager.rb +54 -86
- data/lib/gcloud/resource_manager/project.rb +69 -88
- data/lib/gcloud/resource_manager/project/list.rb +4 -5
- data/lib/gcloud/resource_manager/project/updater.rb +12 -14
- data/lib/gcloud/search.rb +158 -135
- data/lib/gcloud/search/api_client.rb +7 -7
- data/lib/gcloud/search/connection.rb +8 -8
- data/lib/gcloud/search/credentials.rb +3 -3
- data/lib/gcloud/search/document.rb +64 -87
- data/lib/gcloud/search/document/list.rb +5 -5
- data/lib/gcloud/search/errors.rb +9 -5
- data/lib/gcloud/search/field_value.rb +32 -38
- data/lib/gcloud/search/field_values.rb +50 -80
- data/lib/gcloud/search/fields.rb +44 -65
- data/lib/gcloud/search/index.rb +163 -204
- data/lib/gcloud/search/index/list.rb +5 -5
- data/lib/gcloud/search/project.rb +31 -47
- data/lib/gcloud/search/result.rb +27 -31
- data/lib/gcloud/search/result/list.rb +6 -6
- data/lib/gcloud/storage.rb +224 -190
- data/lib/gcloud/storage/bucket.rb +202 -227
- data/lib/gcloud/storage/bucket/acl.rb +83 -170
- data/lib/gcloud/storage/bucket/cors.rb +31 -34
- data/lib/gcloud/storage/bucket/list.rb +3 -3
- data/lib/gcloud/storage/connection.rb +11 -7
- data/lib/gcloud/storage/credentials.rb +3 -3
- data/lib/gcloud/storage/errors.rb +11 -8
- data/lib/gcloud/storage/file.rb +129 -171
- data/lib/gcloud/storage/file/acl.rb +51 -99
- data/lib/gcloud/storage/file/list.rb +3 -3
- data/lib/gcloud/storage/file/verifier.rb +3 -2
- data/lib/gcloud/storage/project.rb +111 -132
- data/lib/gcloud/upload.rb +4 -7
- data/lib/gcloud/version.rb +2 -4
- data/lib/google/api/annotations.rb +14 -0
- data/lib/google/api/http.rb +30 -0
- data/lib/google/api/label.rb +24 -0
- data/lib/google/api/monitored_resource.rb +25 -0
- data/lib/google/datastore/v1beta3/datastore.rb +115 -0
- data/lib/google/datastore/v1beta3/datastore_services.rb +33 -0
- data/lib/google/datastore/v1beta3/entity.rb +63 -0
- data/lib/google/datastore/v1beta3/query.rb +128 -0
- data/lib/google/devtools/cloudtrace/v1/trace.rb +78 -0
- data/lib/google/devtools/cloudtrace/v1/trace_services.rb +32 -0
- data/lib/google/example/library/v1/library.rb +91 -0
- data/lib/google/example/library/v1/library_services.rb +40 -0
- data/lib/google/iam/v1/iam_policy.rb +33 -0
- data/lib/google/iam/v1/iam_policy_services.rb +30 -0
- data/lib/google/iam/v1/policy.rb +25 -0
- data/lib/google/logging/type/http_request.rb +28 -0
- data/lib/google/logging/type/log_severity.rb +27 -0
- data/lib/google/logging/v2/log_entry.rb +44 -0
- data/lib/google/logging/v2/logging.rb +56 -0
- data/lib/google/logging/v2/logging_config.rb +59 -0
- data/lib/google/logging/v2/logging_config_services.rb +32 -0
- data/lib/google/logging/v2/logging_metrics.rb +51 -0
- data/lib/google/logging/v2/logging_metrics_services.rb +32 -0
- data/lib/google/logging/v2/logging_services.rb +31 -0
- data/lib/google/longrunning/operations.rb +50 -0
- data/lib/google/longrunning/operations_services.rb +29 -0
- data/lib/google/protobuf/any.rb +17 -0
- data/lib/google/protobuf/api.rb +31 -0
- data/lib/google/protobuf/descriptor.rb +0 -0
- data/lib/google/protobuf/duration.rb +17 -0
- data/lib/google/protobuf/empty.rb +15 -0
- data/lib/google/protobuf/field_mask.rb +16 -0
- data/lib/google/protobuf/source_context.rb +16 -0
- data/lib/google/protobuf/struct.rb +35 -0
- data/lib/google/protobuf/timestamp.rb +17 -0
- data/lib/google/protobuf/type.rb +79 -0
- data/lib/google/protobuf/wrappers.rb +48 -0
- data/lib/google/pubsub/v1/pubsub.rb +129 -0
- data/lib/google/pubsub/v1/pubsub_services.rb +56 -0
- data/lib/google/pubsub/v1beta2/pubsub.rb +126 -0
- data/lib/google/pubsub/v1beta2/pubsub_services.rb +56 -0
- data/lib/google/rpc/code.rb +32 -0
- data/lib/google/rpc/error_details.rb +61 -0
- data/lib/google/rpc/status.rb +19 -0
- data/lib/google/type/color.rb +20 -0
- data/lib/google/type/date.rb +18 -0
- data/lib/google/type/dayofweek.rb +23 -0
- data/lib/google/type/latlng.rb +17 -0
- data/lib/google/type/money.rb +18 -0
- data/lib/google/type/timeofday.rb +19 -0
- metadata +101 -4
- data/lib/gcloud/pubsub/connection.rb +0 -295
- data/lib/gcloud/pubsub/errors.rb +0 -93
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
3
2
|
#
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,22 +12,24 @@
|
|
13
12
|
# See the License for the specific language governing permissions and
|
14
13
|
# limitations under the License.
|
15
14
|
|
15
|
+
|
16
16
|
require "gcloud/version"
|
17
17
|
require "google/api_client"
|
18
18
|
|
19
19
|
module Gcloud
|
20
20
|
module ResourceManager
|
21
21
|
##
|
22
|
+
# @private
|
22
23
|
# Represents the connection to Resource Manager, as well as expose the API
|
23
24
|
# calls.
|
24
|
-
class Connection
|
25
|
+
class Connection
|
25
26
|
API_VERSION = "v1beta1"
|
26
27
|
|
27
|
-
attr_accessor :credentials
|
28
|
+
attr_accessor :credentials
|
28
29
|
|
29
30
|
##
|
30
31
|
# Creates a new Connection instance.
|
31
|
-
def initialize credentials
|
32
|
+
def initialize credentials
|
32
33
|
@credentials = credentials
|
33
34
|
@client = Google::APIClient.new application_name: "gcloud-ruby",
|
34
35
|
application_version: Gcloud::VERSION
|
@@ -116,7 +117,7 @@ module Gcloud
|
|
116
117
|
)
|
117
118
|
end
|
118
119
|
|
119
|
-
def inspect
|
120
|
+
def inspect
|
120
121
|
"#{self.class}(#{@project})"
|
121
122
|
end
|
122
123
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
3
2
|
#
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,13 +12,14 @@
|
|
13
12
|
# See the License for the specific language governing permissions and
|
14
13
|
# limitations under the License.
|
15
14
|
|
15
|
+
|
16
16
|
require "gcloud/credentials"
|
17
17
|
|
18
18
|
module Gcloud
|
19
19
|
module ResourceManager
|
20
20
|
##
|
21
|
-
# Represents the Oauth2 signing logic for Resource Manager.
|
22
|
-
class Credentials < Gcloud::Credentials
|
21
|
+
# @private Represents the Oauth2 signing logic for Resource Manager.
|
22
|
+
class Credentials < Gcloud::Credentials
|
23
23
|
SCOPE = ["https://www.googleapis.com/auth/cloud-platform"]
|
24
24
|
PATH_ENV_VARS = %w(RESOURCE_MANAGER_KEYFILE
|
25
25
|
GCLOUD_KEYFILE GOOGLE_CLOUD_KEYFILE)
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
3
2
|
#
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,6 +12,7 @@
|
|
13
12
|
# See the License for the specific language governing permissions and
|
14
13
|
# limitations under the License.
|
15
14
|
|
15
|
+
|
16
16
|
require "gcloud/errors"
|
17
17
|
|
18
18
|
module Gcloud
|
@@ -33,13 +33,15 @@ module Gcloud
|
|
33
33
|
# The errors encountered.
|
34
34
|
attr_reader :errors
|
35
35
|
|
36
|
-
|
36
|
+
# @private
|
37
|
+
def initialize message, code, errors = []
|
37
38
|
super message
|
38
39
|
@code = code
|
39
40
|
@errors = errors
|
40
41
|
end
|
41
42
|
|
42
|
-
|
43
|
+
# @private
|
44
|
+
def self.from_response resp
|
43
45
|
if resp.data? && resp.data["error"]
|
44
46
|
from_response_data resp.data["error"]
|
45
47
|
else
|
@@ -47,11 +49,13 @@ module Gcloud
|
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
|
-
|
52
|
+
# @private
|
53
|
+
def self.from_response_data error
|
51
54
|
new error["message"], error["code"], error["errors"]
|
52
55
|
end
|
53
56
|
|
54
|
-
|
57
|
+
# @private
|
58
|
+
def self.from_response_status resp
|
55
59
|
if resp.status == 404
|
56
60
|
new "#{resp.error_message}: #{resp.request.uri.request_uri}",
|
57
61
|
resp.status
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
3
2
|
#
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,6 +12,7 @@
|
|
13
12
|
# See the License for the specific language governing permissions and
|
14
13
|
# limitations under the License.
|
15
14
|
|
15
|
+
|
16
16
|
require "gcloud/resource_manager/credentials"
|
17
17
|
require "gcloud/resource_manager/connection"
|
18
18
|
require "gcloud/resource_manager/errors"
|
@@ -21,10 +21,11 @@ require "gcloud/resource_manager/project"
|
|
21
21
|
module Gcloud
|
22
22
|
module ResourceManager
|
23
23
|
##
|
24
|
-
#
|
24
|
+
# # Manager
|
25
25
|
#
|
26
26
|
# Provides methods for creating, retrieving, and updating projects.
|
27
27
|
#
|
28
|
+
# @example
|
28
29
|
# require "gcloud"
|
29
30
|
#
|
30
31
|
# gcloud = Gcloud.new
|
@@ -33,17 +34,17 @@ module Gcloud
|
|
33
34
|
# puts projects.project_id
|
34
35
|
# end
|
35
36
|
#
|
36
|
-
# See Gcloud#resource_manager
|
37
|
+
# See {Gcloud#resource_manager}
|
37
38
|
class Manager
|
38
39
|
##
|
39
|
-
# The Connection object.
|
40
|
-
attr_accessor :connection
|
40
|
+
# @private The Connection object.
|
41
|
+
attr_accessor :connection
|
41
42
|
|
42
43
|
##
|
43
|
-
# Creates a new Connection instance.
|
44
|
+
# @private Creates a new Connection instance.
|
44
45
|
#
|
45
|
-
# See Gcloud.resource_manager
|
46
|
-
def initialize credentials
|
46
|
+
# See {Gcloud.resource_manager}
|
47
|
+
def initialize credentials
|
47
48
|
@connection = Connection.new credentials
|
48
49
|
end
|
49
50
|
|
@@ -52,39 +53,33 @@ module Gcloud
|
|
52
53
|
# specified filter. This method returns projects in an unspecified order.
|
53
54
|
# New projects do not necessarily appear at the end of the list.
|
54
55
|
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
# +filter+::
|
58
|
-
# An expression for filtering the results of the request. Filter rules
|
59
|
-
# are case insensitive. (+String+)
|
56
|
+
# @param [String] filter An expression for filtering the results of the
|
57
|
+
# request. Filter rules are case insensitive.
|
60
58
|
#
|
61
59
|
# The fields eligible for filtering are:
|
62
|
-
#
|
63
|
-
# *
|
64
|
-
# *
|
60
|
+
#
|
61
|
+
# * `name`
|
62
|
+
# * `id`
|
63
|
+
# * `labels.key` - where `key` is the name of a label
|
65
64
|
#
|
66
65
|
# Some examples of using labels as filters:
|
67
|
-
#
|
68
|
-
# *
|
69
|
-
# *
|
70
|
-
# *
|
71
|
-
# *
|
72
|
-
# *
|
66
|
+
#
|
67
|
+
# * `name:*` - The project has a name.
|
68
|
+
# * `name:Howl` - The project's name is Howl or howl.
|
69
|
+
# * `name:HOWL` - Equivalent to above.
|
70
|
+
# * `NAME:howl` - Equivalent to above.
|
71
|
+
# * `labels.color:*` - The project has the label color.
|
72
|
+
# * `labels.color:red` - The project's label color has the value red.
|
73
73
|
# * <code>labels.color:red labels.size:big</code> - The project's label
|
74
74
|
# color has the value red and its label size has the value big.
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
# +max+::
|
79
|
-
# Maximum number of projects to return. (+Integer+)
|
80
|
-
#
|
81
|
-
# === Returns
|
75
|
+
# @param [String] token A previously-returned page token representing part
|
76
|
+
# of the larger set of results to view.
|
77
|
+
# @param [Integer] max Maximum number of projects to return.
|
82
78
|
#
|
83
|
-
# Array
|
84
|
-
#
|
85
|
-
#
|
86
|
-
# === Examples
|
79
|
+
# @return [Array<Gcloud::ResourceManager::Project>] (See
|
80
|
+
# {Gcloud::ResourceManager::Project::List})
|
87
81
|
#
|
82
|
+
# @example
|
88
83
|
# require "gcloud"
|
89
84
|
#
|
90
85
|
# gcloud = Gcloud.new
|
@@ -94,8 +89,7 @@ module Gcloud
|
|
94
89
|
# puts project.project_id
|
95
90
|
# end
|
96
91
|
#
|
97
|
-
# Projects can be filtered using the
|
98
|
-
#
|
92
|
+
# @example Projects can be filtered using the `filter` option:
|
99
93
|
# require "gcloud"
|
100
94
|
#
|
101
95
|
# gcloud = Gcloud.new
|
@@ -105,9 +99,7 @@ module Gcloud
|
|
105
99
|
# puts project.project_id
|
106
100
|
# end
|
107
101
|
#
|
108
|
-
#
|
109
|
-
# through them: (See Gcloud::ResourceManager::Project::List)
|
110
|
-
#
|
102
|
+
# @example With pagination: (See {Gcloud::ResourceManager::Project::List})
|
111
103
|
# require "gcloud"
|
112
104
|
#
|
113
105
|
# gcloud = Gcloud.new
|
@@ -127,19 +119,14 @@ module Gcloud
|
|
127
119
|
end
|
128
120
|
|
129
121
|
##
|
130
|
-
# Retrieves the project identified by the specified
|
131
|
-
#
|
132
|
-
# === Parameters
|
133
|
-
#
|
134
|
-
# +project_id+::
|
135
|
-
# The ID of the project. (+String+)
|
122
|
+
# Retrieves the project identified by the specified `project_id`.
|
136
123
|
#
|
137
|
-
#
|
124
|
+
# @param [String] project_id The ID of the project.
|
138
125
|
#
|
139
|
-
# Gcloud::ResourceManager::Project,
|
140
|
-
#
|
141
|
-
# === Example
|
126
|
+
# @return [Gcloud::ResourceManager::Project, nil] Returns `nil` if the
|
127
|
+
# project does not exist
|
142
128
|
#
|
129
|
+
# @example
|
143
130
|
# require "gcloud"
|
144
131
|
#
|
145
132
|
# gcloud = Gcloud.new
|
@@ -166,21 +153,15 @@ module Gcloud
|
|
166
153
|
# Several APIs are activated automatically for the project, including
|
167
154
|
# Google Cloud Storage.
|
168
155
|
#
|
169
|
-
#
|
170
|
-
#
|
171
|
-
#
|
172
|
-
#
|
173
|
-
#
|
174
|
-
# Trailing hyphens are prohibited. (+String+)
|
175
|
-
# +name+::
|
176
|
-
# The user-assigned name of the project. This field is optional and can
|
177
|
-
# remain unset.
|
156
|
+
# @param [String] project_id The unique, user-assigned ID of the project.
|
157
|
+
# It must be 6 to 30 lowercase letters, digits, or hyphens. It must
|
158
|
+
# start with a letter. Trailing hyphens are prohibited.
|
159
|
+
# @param [String] name The user-assigned name of the project. This field
|
160
|
+
# is optional and can remain unset.
|
178
161
|
#
|
179
162
|
# Allowed characters are: lowercase and uppercase letters, numbers,
|
180
163
|
# hyphen, single-quote, double-quote, space, and exclamation point.
|
181
|
-
#
|
182
|
-
# +labels+::
|
183
|
-
# The labels associated with this project.
|
164
|
+
# @param [Hash] labels The labels associated with this project.
|
184
165
|
#
|
185
166
|
# Label keys must be between 1 and 63 characters long and must conform
|
186
167
|
# to the following regular expression:
|
@@ -190,22 +171,17 @@ module Gcloud
|
|
190
171
|
# to the regular expression <code>([a-z]([-a-z0-9]*[a-z0-9])?)?</code>.
|
191
172
|
#
|
192
173
|
# No more than 256 labels can be associated with a given resource.
|
193
|
-
# (+Hash+)
|
194
|
-
#
|
195
|
-
# === Returns
|
196
174
|
#
|
197
|
-
# Gcloud::ResourceManager::Project
|
198
|
-
#
|
199
|
-
# === Example
|
175
|
+
# @return [Gcloud::ResourceManager::Project]
|
200
176
|
#
|
177
|
+
# @example
|
201
178
|
# require "gcloud"
|
202
179
|
#
|
203
180
|
# gcloud = Gcloud.new
|
204
181
|
# resource_manager = gcloud.resource_manager
|
205
182
|
# project = resource_manager.create_project "tokyo-rain-123"
|
206
183
|
#
|
207
|
-
# A project can also be created with a
|
208
|
-
#
|
184
|
+
# @example A project can also be created with a `name` and `labels`:
|
209
185
|
# require "gcloud"
|
210
186
|
#
|
211
187
|
# gcloud = Gcloud.new
|
@@ -230,10 +206,10 @@ module Gcloud
|
|
230
206
|
# if the following criteria are met:
|
231
207
|
#
|
232
208
|
# * The project does not have a billing account associated with it.
|
233
|
-
# * The project has a lifecycle state of
|
234
|
-
# * This method changes the project's lifecycle state from
|
235
|
-
#
|
236
|
-
# which point the lifecycle state changes to
|
209
|
+
# * The project has a lifecycle state of `ACTIVE`.
|
210
|
+
# * This method changes the project's lifecycle state from `ACTIVE` to
|
211
|
+
# `DELETE_REQUESTED`. The deletion starts at an unspecified time, at
|
212
|
+
# which point the lifecycle state changes to `DELETE_IN_PROGRESS`.
|
237
213
|
#
|
238
214
|
# Until the deletion completes, you can check the lifecycle state by
|
239
215
|
# retrieving the project with Manager#project. The project remains visible
|
@@ -244,13 +220,9 @@ module Gcloud
|
|
244
220
|
#
|
245
221
|
# The caller must have modify permissions for this project.
|
246
222
|
#
|
247
|
-
#
|
248
|
-
#
|
249
|
-
# +project_id+::
|
250
|
-
# The ID of the project. (+String+)
|
251
|
-
#
|
252
|
-
# === Example
|
223
|
+
# @param [String] project_id The ID of the project.
|
253
224
|
#
|
225
|
+
# @example
|
254
226
|
# require "gcloud"
|
255
227
|
#
|
256
228
|
# gcloud = Gcloud.new
|
@@ -268,19 +240,15 @@ module Gcloud
|
|
268
240
|
|
269
241
|
##
|
270
242
|
# Restores the project. You can only use this method for a project that
|
271
|
-
# has a lifecycle state of
|
272
|
-
# indicated by a lifecycle state of
|
243
|
+
# has a lifecycle state of `DELETE_REQUESTED`. After deletion starts, as
|
244
|
+
# indicated by a lifecycle state of `DELETE_IN_PROGRESS`, the project
|
273
245
|
# cannot be restored.
|
274
246
|
#
|
275
247
|
# The caller must have modify permissions for this project.
|
276
248
|
#
|
277
|
-
#
|
278
|
-
#
|
279
|
-
# +project_id+::
|
280
|
-
# The ID of the project. (+String+)
|
281
|
-
#
|
282
|
-
# === Example
|
249
|
+
# @param [String] project_id The ID of the project.
|
283
250
|
#
|
251
|
+
# @example
|
284
252
|
# require "gcloud"
|
285
253
|
#
|
286
254
|
# gcloud = Gcloud.new
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Copyright 2015 Google Inc. All rights reserved.
|
3
2
|
#
|
4
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,6 +12,7 @@
|
|
13
12
|
# See the License for the specific language governing permissions and
|
14
13
|
# limitations under the License.
|
15
14
|
|
15
|
+
|
16
16
|
require "time"
|
17
17
|
require "gcloud/resource_manager/errors"
|
18
18
|
require "gcloud/resource_manager/project/list"
|
@@ -21,12 +21,13 @@ require "gcloud/resource_manager/project/updater"
|
|
21
21
|
module Gcloud
|
22
22
|
module ResourceManager
|
23
23
|
##
|
24
|
-
#
|
24
|
+
# # Project
|
25
25
|
#
|
26
26
|
# Project is a high-level Google Cloud Platform entity. It is a container
|
27
27
|
# for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform
|
28
28
|
# resources.
|
29
29
|
#
|
30
|
+
# @example
|
30
31
|
# require "gcloud"
|
31
32
|
#
|
32
33
|
# gcloud = Gcloud.new
|
@@ -39,16 +40,16 @@ module Gcloud
|
|
39
40
|
#
|
40
41
|
class Project
|
41
42
|
##
|
42
|
-
# The Connection object.
|
43
|
-
attr_accessor :connection
|
43
|
+
# @private The Connection object.
|
44
|
+
attr_accessor :connection
|
44
45
|
|
45
46
|
##
|
46
|
-
# The Google API Client object.
|
47
|
-
attr_accessor :gapi
|
47
|
+
# @private The Google API Client object.
|
48
|
+
attr_accessor :gapi
|
48
49
|
|
49
50
|
##
|
50
|
-
# Create an empty Project object.
|
51
|
-
def initialize
|
51
|
+
# @private Create an empty Project object.
|
52
|
+
def initialize
|
52
53
|
@connection = nil
|
53
54
|
@gapi = {}
|
54
55
|
end
|
@@ -83,8 +84,7 @@ module Gcloud
|
|
83
84
|
# Allowed characters are: lowercase and uppercase letters, numbers,
|
84
85
|
# hyphen, single-quote, double-quote, space, and exclamation point.
|
85
86
|
#
|
86
|
-
#
|
87
|
-
#
|
87
|
+
# @example
|
88
88
|
# require "gcloud"
|
89
89
|
#
|
90
90
|
# gcloud = Gcloud.new
|
@@ -113,12 +113,12 @@ module Gcloud
|
|
113
113
|
# to the regular expression <code>([a-z]([-a-z0-9]*[a-z0-9])?)?</code>.
|
114
114
|
#
|
115
115
|
# No more than 256 labels can be associated with a given resource.
|
116
|
-
# (
|
117
|
-
#
|
118
|
-
# === Examples
|
116
|
+
# (`Hash`)
|
119
117
|
#
|
120
|
-
#
|
118
|
+
# @yield [labels] a block for setting labels
|
119
|
+
# @yieldparam [Hash] labels the hash accepting labels
|
121
120
|
#
|
121
|
+
# @example Labels are read-only and cannot be changed:
|
122
122
|
# require "gcloud"
|
123
123
|
#
|
124
124
|
# gcloud = Gcloud.new
|
@@ -127,9 +127,7 @@ module Gcloud
|
|
127
127
|
# project.labels["env"] #=> "dev" # read only
|
128
128
|
# project.labels["env"] = "production" # raises error
|
129
129
|
#
|
130
|
-
# Labels can be updated by passing a block, or
|
131
|
-
# method.
|
132
|
-
#
|
130
|
+
# @example Labels can be updated by passing a block, or with {#labels=}:
|
133
131
|
# require "gcloud"
|
134
132
|
#
|
135
133
|
# gcloud = Gcloud.new
|
@@ -161,10 +159,9 @@ module Gcloud
|
|
161
159
|
# to the regular expression <code>([a-z]([-a-z0-9]*[a-z0-9])?)?</code>.
|
162
160
|
#
|
163
161
|
# No more than 256 labels can be associated with a given resource.
|
164
|
-
# (
|
165
|
-
#
|
166
|
-
# === Example
|
162
|
+
# (`Hash`)
|
167
163
|
#
|
164
|
+
# @example
|
168
165
|
# require "gcloud"
|
169
166
|
#
|
170
167
|
# gcloud = Gcloud.new
|
@@ -196,13 +193,13 @@ module Gcloud
|
|
196
193
|
# The project lifecycle state.
|
197
194
|
#
|
198
195
|
# Possible values are:
|
199
|
-
# *
|
200
|
-
# *
|
196
|
+
# * `ACTIVE` - The normal and active state.
|
197
|
+
# * `LIFECYCLE_STATE_UNSPECIFIED` - Unspecified state. This is only
|
201
198
|
# used/useful for distinguishing unset values.
|
202
|
-
# *
|
199
|
+
# * `DELETE_REQUESTED` - The project has been marked for deletion by the
|
203
200
|
# user (by invoking DeleteProject) or by the system (Google Cloud
|
204
201
|
# Platform). This can generally be reversed by invoking UndeleteProject.
|
205
|
-
# *
|
202
|
+
# * `DELETE_IN_PROGRESS` - The process of deleting the project has begun.
|
206
203
|
# Reversing the deletion is no longer possible.
|
207
204
|
#
|
208
205
|
def state
|
@@ -210,38 +207,41 @@ module Gcloud
|
|
210
207
|
end
|
211
208
|
|
212
209
|
##
|
213
|
-
# Checks if the state is
|
210
|
+
# Checks if the state is `ACTIVE`.
|
214
211
|
def active?
|
215
212
|
return false if state.nil?
|
216
213
|
"ACTIVE".casecmp(state).zero?
|
217
214
|
end
|
218
215
|
|
219
216
|
##
|
220
|
-
# Checks if the state is
|
217
|
+
# Checks if the state is `LIFECYCLE_STATE_UNSPECIFIED`.
|
221
218
|
def unspecified?
|
222
219
|
return false if state.nil?
|
223
220
|
"LIFECYCLE_STATE_UNSPECIFIED".casecmp(state).zero?
|
224
221
|
end
|
225
222
|
|
226
223
|
##
|
227
|
-
# Checks if the state is
|
224
|
+
# Checks if the state is `DELETE_REQUESTED`.
|
228
225
|
def delete_requested?
|
229
226
|
return false if state.nil?
|
230
227
|
"DELETE_REQUESTED".casecmp(state).zero?
|
231
228
|
end
|
232
229
|
|
233
230
|
##
|
234
|
-
# Checks if the state is
|
231
|
+
# Checks if the state is `DELETE_IN_PROGRESS`.
|
235
232
|
def delete_in_progress?
|
236
233
|
return false if state.nil?
|
237
234
|
"DELETE_IN_PROGRESS".casecmp(state).zero?
|
238
235
|
end
|
239
236
|
|
240
237
|
##
|
241
|
-
# Updates the project in a single API call. See Project::Updater
|
238
|
+
# Updates the project in a single API call. See {Project::Updater}
|
242
239
|
#
|
243
|
-
#
|
240
|
+
# @yield [project] a block yielding a project delegate
|
241
|
+
# @yieldparam [Project::Updater] project the delegate object for updating
|
242
|
+
# the project
|
244
243
|
#
|
244
|
+
# @example
|
245
245
|
# require "gcloud"
|
246
246
|
#
|
247
247
|
# gcloud = Gcloud.new
|
@@ -267,8 +267,7 @@ module Gcloud
|
|
267
267
|
# Reloads the project (with updated state) from the Google Cloud Resource
|
268
268
|
# Manager service.
|
269
269
|
#
|
270
|
-
#
|
271
|
-
#
|
270
|
+
# @example
|
272
271
|
# require "gcloud"
|
273
272
|
#
|
274
273
|
# gcloud = Gcloud.new
|
@@ -291,10 +290,10 @@ module Gcloud
|
|
291
290
|
# if the following criteria are met:
|
292
291
|
#
|
293
292
|
# * The project does not have a billing account associated with it.
|
294
|
-
# * The project has a lifecycle state of
|
295
|
-
# * This method changes the project's lifecycle state from
|
296
|
-
#
|
297
|
-
# which point the lifecycle state changes to
|
293
|
+
# * The project has a lifecycle state of `ACTIVE`.
|
294
|
+
# * This method changes the project's lifecycle state from `ACTIVE` to
|
295
|
+
# `DELETE_REQUESTED`. The deletion starts at an unspecified time, at
|
296
|
+
# which point the lifecycle state changes to `DELETE_IN_PROGRESS`.
|
298
297
|
#
|
299
298
|
# Until the deletion completes, you can check the lifecycle state by
|
300
299
|
# calling #reload!, or by retrieving the project with Manager#project. The
|
@@ -306,8 +305,7 @@ module Gcloud
|
|
306
305
|
#
|
307
306
|
# The caller must have modify permissions for this project.
|
308
307
|
#
|
309
|
-
#
|
310
|
-
#
|
308
|
+
# @example
|
311
309
|
# require "gcloud"
|
312
310
|
#
|
313
311
|
# gcloud = Gcloud.new
|
@@ -330,14 +328,13 @@ module Gcloud
|
|
330
328
|
|
331
329
|
##
|
332
330
|
# Restores the project. You can only use this method for a project that
|
333
|
-
# has a lifecycle state of
|
334
|
-
# indicated by a lifecycle state of
|
331
|
+
# has a lifecycle state of `DELETE_REQUESTED`. After deletion starts, as
|
332
|
+
# indicated by a lifecycle state of `DELETE_IN_PROGRESS`, the project
|
335
333
|
# cannot be restored.
|
336
334
|
#
|
337
335
|
# The caller must have modify permissions for this project.
|
338
336
|
#
|
339
|
-
#
|
340
|
-
#
|
337
|
+
# @example
|
341
338
|
# require "gcloud"
|
342
339
|
#
|
343
340
|
# gcloud = Gcloud.new
|
@@ -359,21 +356,8 @@ module Gcloud
|
|
359
356
|
end
|
360
357
|
|
361
358
|
##
|
362
|
-
# Gets the
|
363
|
-
# policy.
|
364
|
-
# Policies}[https://cloud.google.com/iam/docs/managing-policies]
|
365
|
-
# for more information.
|
366
|
-
#
|
367
|
-
# === Parameters
|
368
|
-
#
|
369
|
-
# +force+::
|
370
|
-
# Force load the latest policy when +true+. Otherwise the policy will be
|
371
|
-
# memoized to reduce the number of API calls made. The default is
|
372
|
-
# +false+. (+Boolean+)
|
373
|
-
#
|
374
|
-
# === Returns
|
375
|
-
#
|
376
|
-
# A hash that conforms to the following structure:
|
359
|
+
# Gets the [Cloud IAM](https://cloud.google.com/iam/) access control
|
360
|
+
# policy. Returns a hash that conforms to the following structure:
|
377
361
|
#
|
378
362
|
# {
|
379
363
|
# "bindings" => [{
|
@@ -384,11 +368,16 @@ module Gcloud
|
|
384
368
|
# "etag" => "CAE="
|
385
369
|
# }
|
386
370
|
#
|
387
|
-
#
|
371
|
+
# @see https://cloud.google.com/iam/docs/managing-policies Managing
|
372
|
+
# Policies
|
373
|
+
#
|
374
|
+
# @param [Boolean] force Force load the latest policy when `true`.
|
375
|
+
# Otherwise the policy will be memoized to reduce the number of API
|
376
|
+
# calls made. The default is `false`.
|
388
377
|
#
|
389
|
-
#
|
390
|
-
# calls made.
|
378
|
+
# @return [Hash] See description
|
391
379
|
#
|
380
|
+
# @example Policy values are memoized by default:
|
392
381
|
# require "gcloud"
|
393
382
|
#
|
394
383
|
# gcloud = Gcloud.new
|
@@ -400,8 +389,7 @@ module Gcloud
|
|
400
389
|
# puts policy["version"]
|
401
390
|
# puts policy["etag"]
|
402
391
|
#
|
403
|
-
# Use the
|
404
|
-
#
|
392
|
+
# @example Use the `force` option to retrieve the latest policy:
|
405
393
|
# require "gcloud"
|
406
394
|
#
|
407
395
|
# gcloud = Gcloud.new
|
@@ -409,7 +397,7 @@ module Gcloud
|
|
409
397
|
# project = resource_manager.project "tokyo-rain-123"
|
410
398
|
# policy = project.policy force: true
|
411
399
|
#
|
412
|
-
def policy force:
|
400
|
+
def policy force: false
|
413
401
|
@policy = nil if force
|
414
402
|
@policy ||= begin
|
415
403
|
ensure_connection!
|
@@ -422,15 +410,14 @@ module Gcloud
|
|
422
410
|
end
|
423
411
|
|
424
412
|
##
|
425
|
-
# Sets the
|
426
|
-
# policy.
|
427
|
-
# Policies}[https://cloud.google.com/iam/docs/managing-policies]
|
428
|
-
# for more information.
|
413
|
+
# Sets the [Cloud IAM](https://cloud.google.com/iam/) access control
|
414
|
+
# policy.
|
429
415
|
#
|
430
|
-
#
|
416
|
+
# @see https://cloud.google.com/iam/docs/managing-policies Managing
|
417
|
+
# Policies
|
431
418
|
#
|
432
|
-
#
|
433
|
-
#
|
419
|
+
# @param [String] new_policy A hash that conforms to the following
|
420
|
+
# structure:
|
434
421
|
#
|
435
422
|
# {
|
436
423
|
# "bindings" => [{
|
@@ -439,8 +426,7 @@ module Gcloud
|
|
439
426
|
# }]
|
440
427
|
# }
|
441
428
|
#
|
442
|
-
#
|
443
|
-
#
|
429
|
+
# @example
|
444
430
|
# require "gcloud"
|
445
431
|
#
|
446
432
|
# gcloud = Gcloud.new
|
@@ -467,24 +453,19 @@ module Gcloud
|
|
467
453
|
end
|
468
454
|
|
469
455
|
##
|
470
|
-
# Tests the specified permissions against the
|
471
|
-
# IAM
|
472
|
-
# {Managing Policies}[https://cloud.google.com/iam/docs/managing-policies]
|
473
|
-
# for more information.
|
474
|
-
#
|
475
|
-
# === Parameters
|
476
|
-
#
|
477
|
-
# +permissions+::
|
478
|
-
# The set of permissions to check access for. Permissions with wildcards
|
479
|
-
# (such as +*+ or +storage.*+) are not allowed.
|
480
|
-
# (String or Array of Strings)
|
456
|
+
# Tests the specified permissions against the [Cloud
|
457
|
+
# IAM](https://cloud.google.com/iam/) access control policy.
|
481
458
|
#
|
482
|
-
#
|
459
|
+
# @see https://cloud.google.com/iam/docs/managing-policies Managing
|
460
|
+
# Policies
|
483
461
|
#
|
484
|
-
#
|
462
|
+
# @param [String, Array<String>] permissions The set of permissions to
|
463
|
+
# check access for. Permissions with wildcards (such as `*` or
|
464
|
+
# `storage.*`) are not allowed.
|
485
465
|
#
|
486
|
-
#
|
466
|
+
# @return [Array<String>] The permissions that have access
|
487
467
|
#
|
468
|
+
# @example
|
488
469
|
# require "gcloud"
|
489
470
|
#
|
490
471
|
# gcloud = Gcloud.new
|
@@ -507,8 +488,8 @@ module Gcloud
|
|
507
488
|
end
|
508
489
|
|
509
490
|
##
|
510
|
-
# New Change from a Google API Client object.
|
511
|
-
def self.from_gapi gapi, connection
|
491
|
+
# @private New Change from a Google API Client object.
|
492
|
+
def self.from_gapi gapi, connection
|
512
493
|
new.tap do |p|
|
513
494
|
p.gapi = gapi
|
514
495
|
p.connection = connection
|