gcloud 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/AUTHENTICATION.md +3 -3
- data/CHANGELOG.md +92 -0
- data/OVERVIEW.md +3 -3
- data/lib/gcloud.rb +75 -25
- data/lib/gcloud/backoff.rb +5 -1
- data/lib/gcloud/bigquery.rb +25 -43
- data/lib/gcloud/bigquery/copy_job.rb +13 -13
- data/lib/gcloud/bigquery/data.rb +20 -16
- data/lib/gcloud/bigquery/dataset.rb +202 -177
- data/lib/gcloud/bigquery/dataset/access.rb +118 -104
- data/lib/gcloud/bigquery/dataset/list.rb +14 -18
- data/lib/gcloud/bigquery/extract_job.rb +12 -12
- data/lib/gcloud/bigquery/insert_response.rb +12 -14
- data/lib/gcloud/bigquery/job.rb +45 -57
- data/lib/gcloud/bigquery/job/list.rb +18 -24
- data/lib/gcloud/bigquery/load_job.rb +35 -27
- data/lib/gcloud/bigquery/project.rb +53 -73
- data/lib/gcloud/bigquery/query_data.rb +28 -35
- data/lib/gcloud/bigquery/query_job.rb +18 -18
- data/lib/gcloud/bigquery/schema.rb +359 -0
- data/lib/gcloud/bigquery/service.rb +506 -0
- data/lib/gcloud/bigquery/table.rb +185 -266
- data/lib/gcloud/bigquery/table/list.rb +15 -19
- data/lib/gcloud/bigquery/view.rb +126 -81
- data/lib/gcloud/datastore.rb +39 -27
- data/lib/gcloud/datastore/commit.rb +2 -2
- data/lib/gcloud/datastore/dataset.rb +8 -19
- data/lib/gcloud/datastore/dataset/lookup_results.rb +2 -4
- data/lib/gcloud/datastore/dataset/query_results.rb +0 -2
- data/lib/gcloud/datastore/entity.rb +7 -1
- data/lib/gcloud/datastore/errors.rb +5 -27
- data/lib/gcloud/datastore/grpc_utils.rb +4 -3
- data/lib/gcloud/datastore/key.rb +6 -0
- data/lib/gcloud/datastore/service.rb +18 -12
- data/lib/gcloud/datastore/transaction.rb +0 -10
- data/lib/gcloud/dns.rb +29 -19
- data/lib/gcloud/dns/change.rb +10 -15
- data/lib/gcloud/dns/change/list.rb +4 -4
- data/lib/gcloud/dns/importer.rb +1 -1
- data/lib/gcloud/dns/project.rb +32 -49
- data/lib/gcloud/dns/record.rb +8 -2
- data/lib/gcloud/dns/record/list.rb +4 -4
- data/lib/gcloud/dns/service.rb +167 -0
- data/lib/gcloud/dns/zone.rb +33 -52
- data/lib/gcloud/dns/zone/list.rb +12 -16
- data/lib/gcloud/errors.rb +31 -19
- data/lib/gcloud/logging.rb +50 -39
- data/lib/gcloud/logging/entry.rb +197 -24
- data/lib/gcloud/logging/entry/list.rb +0 -2
- data/lib/gcloud/logging/logger.rb +1 -1
- data/lib/gcloud/logging/metric.rb +3 -9
- data/lib/gcloud/logging/metric/list.rb +0 -2
- data/lib/gcloud/logging/project.rb +58 -54
- data/lib/gcloud/logging/resource_descriptor.rb +2 -2
- data/lib/gcloud/logging/resource_descriptor/list.rb +0 -2
- data/lib/gcloud/logging/service.rb +32 -23
- data/lib/gcloud/logging/sink.rb +8 -14
- data/lib/gcloud/logging/sink/list.rb +0 -2
- data/lib/gcloud/pubsub.rb +21 -16
- data/lib/gcloud/pubsub/policy.rb +204 -0
- data/lib/gcloud/pubsub/project.rb +26 -38
- data/lib/gcloud/pubsub/service.rb +39 -31
- data/lib/gcloud/pubsub/subscription.rb +56 -59
- data/lib/gcloud/pubsub/subscription/list.rb +4 -4
- data/lib/gcloud/pubsub/topic.rb +69 -66
- data/lib/gcloud/pubsub/topic/list.rb +0 -2
- data/lib/gcloud/pubsub/topic/{batch.rb → publisher.rb} +15 -2
- data/lib/gcloud/resource_manager.rb +27 -26
- data/lib/gcloud/resource_manager/manager.rb +19 -39
- data/lib/gcloud/resource_manager/policy.rb +211 -0
- data/lib/gcloud/resource_manager/project.rb +97 -121
- data/lib/gcloud/resource_manager/project/list.rb +7 -7
- data/lib/gcloud/resource_manager/project/updater.rb +4 -9
- data/lib/gcloud/resource_manager/service.rb +127 -0
- data/lib/gcloud/storage.rb +24 -42
- data/lib/gcloud/storage/bucket.rb +104 -192
- data/lib/gcloud/storage/bucket/acl.rb +47 -143
- data/lib/gcloud/storage/bucket/cors.rb +55 -11
- data/lib/gcloud/storage/bucket/list.rb +14 -14
- data/lib/gcloud/storage/errors.rb +3 -43
- data/lib/gcloud/storage/file.rb +114 -111
- data/lib/gcloud/storage/file/acl.rb +27 -113
- data/lib/gcloud/storage/file/list.rb +21 -21
- data/lib/gcloud/storage/project.rb +49 -59
- data/lib/gcloud/storage/service.rb +347 -0
- data/lib/gcloud/translate.rb +24 -14
- data/lib/gcloud/translate/api.rb +12 -21
- data/lib/gcloud/translate/detection.rb +5 -5
- data/lib/gcloud/translate/language.rb +1 -1
- data/lib/gcloud/translate/service.rb +80 -0
- data/lib/gcloud/translate/translation.rb +6 -6
- data/lib/gcloud/version.rb +1 -1
- data/lib/gcloud/vision.rb +24 -15
- data/lib/gcloud/vision/annotate.rb +24 -21
- data/lib/gcloud/vision/annotation.rb +9 -9
- data/lib/gcloud/vision/annotation/entity.rb +11 -11
- data/lib/gcloud/vision/annotation/face.rb +25 -25
- data/lib/gcloud/vision/annotation/properties.rb +8 -8
- data/lib/gcloud/vision/annotation/safe_search.rb +4 -4
- data/lib/gcloud/vision/annotation/text.rb +7 -7
- data/lib/gcloud/vision/annotation/vertex.rb +1 -1
- data/lib/gcloud/vision/image.rb +11 -11
- data/lib/gcloud/vision/location.rb +5 -2
- data/lib/gcloud/vision/project.rb +14 -16
- data/lib/gcloud/vision/service.rb +66 -0
- data/lib/google/api_client.rb +0 -0
- metadata +27 -24
- data/lib/gcloud/bigquery/connection.rb +0 -624
- data/lib/gcloud/bigquery/errors.rb +0 -68
- data/lib/gcloud/bigquery/table/schema.rb +0 -234
- data/lib/gcloud/dns/connection.rb +0 -173
- data/lib/gcloud/dns/errors.rb +0 -68
- data/lib/gcloud/resource_manager/connection.rb +0 -134
- data/lib/gcloud/resource_manager/errors.rb +0 -68
- data/lib/gcloud/storage/connection.rb +0 -444
- data/lib/gcloud/translate/connection.rb +0 -85
- data/lib/gcloud/translate/errors.rb +0 -68
- data/lib/gcloud/upload.rb +0 -95
- data/lib/gcloud/vision/connection.rb +0 -63
- data/lib/gcloud/vision/errors.rb +0 -69
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Copyright 2015 Google Inc. All rights reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
require "gcloud/errors"
|
|
17
|
-
|
|
18
|
-
module Gcloud
|
|
19
|
-
module Bigquery
|
|
20
|
-
##
|
|
21
|
-
# Base BigQuery exception class.
|
|
22
|
-
class Error < Gcloud::Error
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Raised when an API call is not successful.
|
|
27
|
-
class ApiError < Error
|
|
28
|
-
##
|
|
29
|
-
# The code of the error.
|
|
30
|
-
attr_reader :code
|
|
31
|
-
|
|
32
|
-
##
|
|
33
|
-
# The errors encountered.
|
|
34
|
-
attr_reader :errors
|
|
35
|
-
|
|
36
|
-
# @private
|
|
37
|
-
def initialize message, code, errors = []
|
|
38
|
-
super message
|
|
39
|
-
@code = code
|
|
40
|
-
@errors = errors
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# @private
|
|
44
|
-
def self.from_response resp
|
|
45
|
-
if resp.data? && resp.data["error"]
|
|
46
|
-
from_response_data resp.data["error"]
|
|
47
|
-
else
|
|
48
|
-
from_response_status resp
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# @private
|
|
53
|
-
def self.from_response_data error
|
|
54
|
-
new error["message"], error["code"], error["errors"]
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# @private
|
|
58
|
-
def self.from_response_status resp
|
|
59
|
-
if resp.status == 404
|
|
60
|
-
new "#{resp.error_message}: #{resp.request.uri.request_uri}",
|
|
61
|
-
resp.status
|
|
62
|
-
else
|
|
63
|
-
new resp.error_message, resp.status
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
# Copyright 2015 Google Inc. All rights reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
module Gcloud
|
|
17
|
-
module Bigquery
|
|
18
|
-
class Table
|
|
19
|
-
##
|
|
20
|
-
# # Table Schema
|
|
21
|
-
#
|
|
22
|
-
# A builder for BigQuery table schemas, passed to block arguments to
|
|
23
|
-
# {Dataset#create_table} and {Table#schema}. Supports nested and
|
|
24
|
-
# repeated fields via a nested block.
|
|
25
|
-
#
|
|
26
|
-
# @see https://cloud.google.com/bigquery/preparing-data-for-bigquery
|
|
27
|
-
# Preparing Data for BigQuery
|
|
28
|
-
#
|
|
29
|
-
# @example
|
|
30
|
-
# require "gcloud"
|
|
31
|
-
#
|
|
32
|
-
# gcloud = Gcloud.new
|
|
33
|
-
# bigquery = gcloud.bigquery
|
|
34
|
-
# dataset = bigquery.dataset "my_dataset"
|
|
35
|
-
# table = dataset.create_table "my_table"
|
|
36
|
-
#
|
|
37
|
-
# table.schema do |schema|
|
|
38
|
-
# schema.string "first_name", mode: :required
|
|
39
|
-
# schema.record "cities_lived", mode: :repeated do |cities_lived|
|
|
40
|
-
# cities_lived.string "place", mode: :required
|
|
41
|
-
# cities_lived.integer "number_of_years", mode: :required
|
|
42
|
-
# end
|
|
43
|
-
# end
|
|
44
|
-
#
|
|
45
|
-
class Schema
|
|
46
|
-
# @private
|
|
47
|
-
MODES = %w( NULLABLE REQUIRED REPEATED )
|
|
48
|
-
|
|
49
|
-
# @private
|
|
50
|
-
TYPES = %w( STRING INTEGER FLOAT BOOLEAN TIMESTAMP RECORD )
|
|
51
|
-
|
|
52
|
-
# @private
|
|
53
|
-
attr_reader :fields
|
|
54
|
-
|
|
55
|
-
##
|
|
56
|
-
# @private Initializes a new schema object with an existing schema.
|
|
57
|
-
def initialize schema = nil, nested = false
|
|
58
|
-
fields = (schema && schema["fields"]) || []
|
|
59
|
-
@original_fields = fields.dup
|
|
60
|
-
@fields = fields.dup
|
|
61
|
-
@nested = nested
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# @private
|
|
65
|
-
def changed?
|
|
66
|
-
@original_fields != @fields
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
##
|
|
70
|
-
# @private
|
|
71
|
-
# Returns the schema as hash containing the keys and values specified by
|
|
72
|
-
# the Google Cloud BigQuery [Rest API
|
|
73
|
-
# ](https://cloud.google.com/bigquery/docs/reference/v2/tables#resource)
|
|
74
|
-
# .
|
|
75
|
-
def schema
|
|
76
|
-
{
|
|
77
|
-
"fields" => @fields
|
|
78
|
-
}
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
##
|
|
82
|
-
# Adds a string field to the schema.
|
|
83
|
-
#
|
|
84
|
-
# @param [String] name The field name. The name must contain only
|
|
85
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
86
|
-
# start with a letter or underscore. The maximum length is 128
|
|
87
|
-
# characters.
|
|
88
|
-
# @param [String] description A description of the field.
|
|
89
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
90
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
91
|
-
# `:nullable`.
|
|
92
|
-
def string name, description: nil, mode: nil
|
|
93
|
-
add_field name, :string, nil, description: description, mode: mode
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
##
|
|
97
|
-
# Adds an integer field to the schema.
|
|
98
|
-
#
|
|
99
|
-
# @param [String] name The field name. The name must contain only
|
|
100
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
101
|
-
# start with a letter or underscore. The maximum length is 128
|
|
102
|
-
# characters.
|
|
103
|
-
# @param [String] description A description of the field.
|
|
104
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
105
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
106
|
-
# `:nullable`.
|
|
107
|
-
def integer name, description: nil, mode: nil
|
|
108
|
-
add_field name, :integer, nil, description: description, mode: mode
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
##
|
|
112
|
-
# Adds a floating-point number field to the schema.
|
|
113
|
-
#
|
|
114
|
-
# @param [String] name The field name. The name must contain only
|
|
115
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
116
|
-
# start with a letter or underscore. The maximum length is 128
|
|
117
|
-
# characters.
|
|
118
|
-
# @param [String] description A description of the field.
|
|
119
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
120
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
121
|
-
# `:nullable`.
|
|
122
|
-
def float name, description: nil, mode: nil
|
|
123
|
-
add_field name, :float, nil, description: description, mode: mode
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
##
|
|
127
|
-
# Adds a boolean field to the schema.
|
|
128
|
-
#
|
|
129
|
-
# @param [String] name The field name. The name must contain only
|
|
130
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
131
|
-
# start with a letter or underscore. The maximum length is 128
|
|
132
|
-
# characters.
|
|
133
|
-
# @param [String] description A description of the field.
|
|
134
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
135
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
136
|
-
# `:nullable`.
|
|
137
|
-
def boolean name, description: nil, mode: nil
|
|
138
|
-
add_field name, :boolean, nil, description: description, mode: mode
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
##
|
|
142
|
-
# Adds a timestamp field to the schema.
|
|
143
|
-
#
|
|
144
|
-
# @param [String] name The field name. The name must contain only
|
|
145
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
146
|
-
# start with a letter or underscore. The maximum length is 128
|
|
147
|
-
# characters.
|
|
148
|
-
# @param [String] description A description of the field.
|
|
149
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
150
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
151
|
-
# `:nullable`.
|
|
152
|
-
def timestamp name, description: nil, mode: nil
|
|
153
|
-
add_field name, :timestamp, nil, description: description, mode: mode
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
##
|
|
157
|
-
# Adds a record field to the schema. A block must be passed describing
|
|
158
|
-
# the nested fields of the record. For more information about nested
|
|
159
|
-
# and repeated records, see [Preparing Data for BigQuery
|
|
160
|
-
# ](https://cloud.google.com/bigquery/preparing-data-for-bigquery).
|
|
161
|
-
#
|
|
162
|
-
# @param [String] name The field name. The name must contain only
|
|
163
|
-
# letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
|
|
164
|
-
# start with a letter or underscore. The maximum length is 128
|
|
165
|
-
# characters.
|
|
166
|
-
# @param [String] description A description of the field.
|
|
167
|
-
# @param [Symbol] mode The field's mode. The possible values are
|
|
168
|
-
# `:nullable`, `:required`, and `:repeated`. The default value is
|
|
169
|
-
# `:nullable`.
|
|
170
|
-
# @yield [nested_schema] a block for setting the nested schema
|
|
171
|
-
# @yieldparam [Table::Schema] nested_schema the object accepting the
|
|
172
|
-
# nested schema
|
|
173
|
-
#
|
|
174
|
-
# @example
|
|
175
|
-
# require "gcloud"
|
|
176
|
-
#
|
|
177
|
-
# gcloud = Gcloud.new
|
|
178
|
-
# bigquery = gcloud.bigquery
|
|
179
|
-
# dataset = bigquery.dataset "my_dataset"
|
|
180
|
-
# table = dataset.create_table "my_table"
|
|
181
|
-
#
|
|
182
|
-
# table.schema do |schema|
|
|
183
|
-
# schema.string "first_name", mode: :required
|
|
184
|
-
# schema.record "cities_lived", mode: :repeated do |cities_lived|
|
|
185
|
-
# cities_lived.string "place", mode: :required
|
|
186
|
-
# cities_lived.integer "number_of_years", mode: :required
|
|
187
|
-
# end
|
|
188
|
-
# end
|
|
189
|
-
#
|
|
190
|
-
def record name, description: nil, mode: nil
|
|
191
|
-
fail ArgumentError, "nested RECORD type is not permitted" if @nested
|
|
192
|
-
fail ArgumentError, "a block is required" unless block_given?
|
|
193
|
-
nested_schema = self.class.new nil, true
|
|
194
|
-
yield nested_schema
|
|
195
|
-
add_field name, :record, nested_schema.fields,
|
|
196
|
-
description: description, mode: mode
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
protected
|
|
200
|
-
|
|
201
|
-
def upcase_type type
|
|
202
|
-
upcase_type = type.to_s.upcase
|
|
203
|
-
unless TYPES.include? upcase_type
|
|
204
|
-
fail ArgumentError,
|
|
205
|
-
"Type '#{upcase_type}' not found in #{TYPES.inspect}"
|
|
206
|
-
end
|
|
207
|
-
upcase_type
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
def upcase_mode mode
|
|
211
|
-
upcase_mode = mode.to_s.upcase
|
|
212
|
-
unless MODES.include? upcase_mode
|
|
213
|
-
fail ArgumentError "Unable to determine mode for '#{mode}'"
|
|
214
|
-
end
|
|
215
|
-
upcase_mode
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
def add_field name, type, nested_fields, description: nil,
|
|
219
|
-
mode: :nullable
|
|
220
|
-
# Remove any existing field of this name
|
|
221
|
-
@fields.reject! { |h| h["name"] == name }
|
|
222
|
-
field = {
|
|
223
|
-
"name" => name,
|
|
224
|
-
"type" => upcase_type(type)
|
|
225
|
-
}
|
|
226
|
-
field["fields"] = nested_fields if nested_fields
|
|
227
|
-
field["description"] = description if description
|
|
228
|
-
field["mode"] = upcase_mode(mode) if mode
|
|
229
|
-
@fields << field
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
end
|
|
234
|
-
end
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
# Copyright 2015 Google Inc. All rights reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
require "gcloud/version"
|
|
17
|
-
require "gcloud/backoff"
|
|
18
|
-
require "google/api_client"
|
|
19
|
-
|
|
20
|
-
module Gcloud
|
|
21
|
-
module Dns
|
|
22
|
-
##
|
|
23
|
-
# @private Represents the connection to DNS, as well as expose the API calls
|
|
24
|
-
class Connection
|
|
25
|
-
API_VERSION = "v1"
|
|
26
|
-
|
|
27
|
-
attr_accessor :project
|
|
28
|
-
attr_accessor :credentials
|
|
29
|
-
|
|
30
|
-
##
|
|
31
|
-
# Creates a new Connection instance.
|
|
32
|
-
def initialize project, credentials
|
|
33
|
-
@project = project
|
|
34
|
-
@credentials = credentials
|
|
35
|
-
@client = Google::APIClient.new application_name: "gcloud-ruby",
|
|
36
|
-
application_version: Gcloud::VERSION
|
|
37
|
-
@client.authorization = @credentials.client
|
|
38
|
-
@dns = @client.discovered_api "dns", API_VERSION
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def get_project project_id = @project
|
|
42
|
-
execute(
|
|
43
|
-
api_method: @dns.projects.get,
|
|
44
|
-
parameters: { project: project_id }
|
|
45
|
-
)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def get_zone zone_id
|
|
49
|
-
execute(
|
|
50
|
-
api_method: @dns.managed_zones.get,
|
|
51
|
-
parameters: { project: @project, managedZone: zone_id }
|
|
52
|
-
)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def list_zones token: nil, max: nil
|
|
56
|
-
params = { project: @project,
|
|
57
|
-
pageToken: token,
|
|
58
|
-
maxResults: max
|
|
59
|
-
}.delete_if { |_, v| v.nil? }
|
|
60
|
-
|
|
61
|
-
execute(
|
|
62
|
-
api_method: @dns.managed_zones.list,
|
|
63
|
-
parameters: params
|
|
64
|
-
)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def create_zone zone_name, zone_dns, description: nil,
|
|
68
|
-
name_server_set: nil
|
|
69
|
-
body = { kind: "dns#managedZone",
|
|
70
|
-
name: zone_name, dnsName: zone_dns,
|
|
71
|
-
description: (description || ""),
|
|
72
|
-
nameServerSet: name_server_set
|
|
73
|
-
}.delete_if { |_, v| v.nil? }
|
|
74
|
-
|
|
75
|
-
execute(
|
|
76
|
-
api_method: @dns.managed_zones.create,
|
|
77
|
-
parameters: { project: @project },
|
|
78
|
-
body_object: body
|
|
79
|
-
)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def delete_zone zone_id
|
|
83
|
-
execute(
|
|
84
|
-
api_method: @dns.managed_zones.delete,
|
|
85
|
-
parameters: { project: @project, managedZone: zone_id }
|
|
86
|
-
)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def get_change zone_id, change_id
|
|
90
|
-
execute(
|
|
91
|
-
api_method: @dns.changes.get,
|
|
92
|
-
parameters: { project: @project, managedZone: zone_id,
|
|
93
|
-
changeId: change_id }
|
|
94
|
-
)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def list_changes zone_id, token: nil, max: nil, order: nil, sort: nil
|
|
98
|
-
params = { project: @project, managedZone: zone_id,
|
|
99
|
-
pageToken: token,
|
|
100
|
-
maxResults: max,
|
|
101
|
-
sortBy: sort,
|
|
102
|
-
sortOrder: order
|
|
103
|
-
}.delete_if { |_, v| v.nil? }
|
|
104
|
-
|
|
105
|
-
execute(
|
|
106
|
-
api_method: @dns.changes.list,
|
|
107
|
-
parameters: params
|
|
108
|
-
)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def create_change zone_id, additions, deletions
|
|
112
|
-
change = { "kind" => "dns#change",
|
|
113
|
-
"additions" => Array(additions),
|
|
114
|
-
"deletions" => Array(deletions) }
|
|
115
|
-
|
|
116
|
-
execute(
|
|
117
|
-
api_method: @dns.changes.create,
|
|
118
|
-
parameters: { project: @project, managedZone: zone_id },
|
|
119
|
-
body_object: change
|
|
120
|
-
)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def list_records zone_id, name = nil, type = nil, token: nil, max: nil
|
|
124
|
-
params = { project: @project, managedZone: zone_id,
|
|
125
|
-
pageToken: token,
|
|
126
|
-
maxResults: max,
|
|
127
|
-
name: name,
|
|
128
|
-
type: type
|
|
129
|
-
}.delete_if { |_, v| v.nil? }
|
|
130
|
-
|
|
131
|
-
execute(
|
|
132
|
-
api_method: @dns.resource_record_sets.list,
|
|
133
|
-
parameters: params
|
|
134
|
-
)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
##
|
|
138
|
-
# Fully Qualified Domain Name
|
|
139
|
-
def self.fqdn name, origin_dns
|
|
140
|
-
name = name.to_s.strip
|
|
141
|
-
return name if self.ip_addr? name
|
|
142
|
-
name = origin_dns if name.empty?
|
|
143
|
-
name = origin_dns if name == "@"
|
|
144
|
-
name = "#{name}.#{origin_dns}" unless name.include? "."
|
|
145
|
-
name = "#{name}." unless name.end_with? "."
|
|
146
|
-
name
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
require "ipaddr"
|
|
150
|
-
# Fix to make ip_addr? work on ruby 1.9
|
|
151
|
-
IPAddr::Error = ArgumentError unless defined? IPAddr::Error
|
|
152
|
-
|
|
153
|
-
def self.ip_addr? name
|
|
154
|
-
IPAddr.new name
|
|
155
|
-
true
|
|
156
|
-
rescue IPAddr::Error
|
|
157
|
-
false
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def inspect
|
|
161
|
-
"#{self.class}(#{@project})"
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
protected
|
|
165
|
-
|
|
166
|
-
def execute options
|
|
167
|
-
Gcloud::Backoff.new.execute_gapi do
|
|
168
|
-
@client.execute options
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|