gcloud 0.12.2 → 0.20.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 +5 -13
- data/lib/gcloud.rb +27 -456
- data/lib/gcloud/bigquery.rb +2 -382
- data/lib/gcloud/datastore.rb +2 -576
- data/lib/gcloud/dns.rb +2 -321
- data/lib/gcloud/logging.rb +1 -322
- data/lib/gcloud/pubsub.rb +2 -476
- data/lib/gcloud/resource_manager.rb +2 -273
- data/lib/gcloud/storage.rb +2 -440
- data/lib/gcloud/translate.rb +1 -250
- data/lib/gcloud/version.rb +2 -2
- data/lib/gcloud/vision.rb +1 -501
- metadata +36 -332
- data/AUTHENTICATION.md +0 -75
- data/CHANGELOG.md +0 -382
- data/OVERVIEW.md +0 -259
- data/lib/gcloud/backoff.rb +0 -150
- data/lib/gcloud/bigquery/copy_job.rb +0 -97
- data/lib/gcloud/bigquery/credentials.rb +0 -29
- data/lib/gcloud/bigquery/data.rb +0 -239
- data/lib/gcloud/bigquery/dataset.rb +0 -753
- data/lib/gcloud/bigquery/dataset/access.rb +0 -507
- data/lib/gcloud/bigquery/dataset/list.rb +0 -169
- data/lib/gcloud/bigquery/extract_job.rb +0 -117
- data/lib/gcloud/bigquery/insert_response.rb +0 -81
- data/lib/gcloud/bigquery/job.rb +0 -299
- data/lib/gcloud/bigquery/job/list.rb +0 -172
- data/lib/gcloud/bigquery/load_job.rb +0 -202
- data/lib/gcloud/bigquery/project.rb +0 -475
- data/lib/gcloud/bigquery/query_data.rb +0 -234
- data/lib/gcloud/bigquery/query_job.rb +0 -137
- data/lib/gcloud/bigquery/schema.rb +0 -359
- data/lib/gcloud/bigquery/service.rb +0 -506
- data/lib/gcloud/bigquery/table.rb +0 -1141
- data/lib/gcloud/bigquery/table/list.rb +0 -180
- data/lib/gcloud/bigquery/view.rb +0 -475
- data/lib/gcloud/credentials.rb +0 -129
- data/lib/gcloud/datastore/commit.rb +0 -148
- data/lib/gcloud/datastore/credentials.rb +0 -35
- data/lib/gcloud/datastore/cursor.rb +0 -76
- data/lib/gcloud/datastore/dataset.rb +0 -660
- data/lib/gcloud/datastore/dataset/lookup_results.rb +0 -219
- data/lib/gcloud/datastore/dataset/query_results.rb +0 -386
- data/lib/gcloud/datastore/entity.rb +0 -449
- data/lib/gcloud/datastore/errors.rb +0 -41
- data/lib/gcloud/datastore/gql_query.rb +0 -211
- data/lib/gcloud/datastore/grpc_utils.rb +0 -132
- data/lib/gcloud/datastore/key.rb +0 -281
- data/lib/gcloud/datastore/properties.rb +0 -128
- data/lib/gcloud/datastore/query.rb +0 -348
- data/lib/gcloud/datastore/service.rb +0 -167
- data/lib/gcloud/datastore/transaction.rb +0 -362
- data/lib/gcloud/dns/change.rb +0 -158
- data/lib/gcloud/dns/change/list.rb +0 -173
- data/lib/gcloud/dns/credentials.rb +0 -29
- data/lib/gcloud/dns/importer.rb +0 -183
- data/lib/gcloud/dns/project.rb +0 -247
- data/lib/gcloud/dns/record.rb +0 -170
- data/lib/gcloud/dns/record/list.rb +0 -174
- data/lib/gcloud/dns/service.rb +0 -167
- data/lib/gcloud/dns/zone.rb +0 -759
- data/lib/gcloud/dns/zone/list.rb +0 -168
- data/lib/gcloud/dns/zone/transaction.rb +0 -176
- data/lib/gcloud/errors.rb +0 -206
- data/lib/gcloud/gce.rb +0 -56
- data/lib/gcloud/grpc_utils.rb +0 -87
- data/lib/gcloud/logging/credentials.rb +0 -29
- data/lib/gcloud/logging/entry.rb +0 -465
- data/lib/gcloud/logging/entry/http_request.rb +0 -141
- data/lib/gcloud/logging/entry/list.rb +0 -177
- data/lib/gcloud/logging/entry/operation.rb +0 -90
- data/lib/gcloud/logging/logger.rb +0 -307
- data/lib/gcloud/logging/metric.rb +0 -169
- data/lib/gcloud/logging/metric/list.rb +0 -172
- data/lib/gcloud/logging/project.rb +0 -642
- data/lib/gcloud/logging/resource.rb +0 -84
- data/lib/gcloud/logging/resource_descriptor.rb +0 -137
- data/lib/gcloud/logging/resource_descriptor/list.rb +0 -174
- data/lib/gcloud/logging/service.rb +0 -267
- data/lib/gcloud/logging/sink.rb +0 -227
- data/lib/gcloud/logging/sink/list.rb +0 -171
- data/lib/gcloud/pubsub/credentials.rb +0 -29
- data/lib/gcloud/pubsub/message.rb +0 -94
- data/lib/gcloud/pubsub/policy.rb +0 -204
- data/lib/gcloud/pubsub/project.rb +0 -482
- data/lib/gcloud/pubsub/received_message.rb +0 -160
- data/lib/gcloud/pubsub/service.rb +0 -334
- data/lib/gcloud/pubsub/subscription.rb +0 -565
- data/lib/gcloud/pubsub/subscription/list.rb +0 -208
- data/lib/gcloud/pubsub/topic.rb +0 -511
- data/lib/gcloud/pubsub/topic/list.rb +0 -174
- data/lib/gcloud/pubsub/topic/publisher.rb +0 -85
- data/lib/gcloud/resource_manager/credentials.rb +0 -30
- data/lib/gcloud/resource_manager/manager.rb +0 -266
- data/lib/gcloud/resource_manager/policy.rb +0 -211
- data/lib/gcloud/resource_manager/project.rb +0 -484
- data/lib/gcloud/resource_manager/project/list.rb +0 -167
- data/lib/gcloud/resource_manager/project/updater.rb +0 -130
- data/lib/gcloud/resource_manager/service.rb +0 -127
- data/lib/gcloud/storage/bucket.rb +0 -775
- data/lib/gcloud/storage/bucket/acl.rb +0 -810
- data/lib/gcloud/storage/bucket/cors.rb +0 -153
- data/lib/gcloud/storage/bucket/list.rb +0 -172
- data/lib/gcloud/storage/credentials.rb +0 -29
- data/lib/gcloud/storage/errors.rb +0 -65
- data/lib/gcloud/storage/file.rb +0 -842
- data/lib/gcloud/storage/file/acl.rb +0 -425
- data/lib/gcloud/storage/file/list.rb +0 -191
- data/lib/gcloud/storage/file/verifier.rb +0 -67
- data/lib/gcloud/storage/project.rb +0 -316
- data/lib/gcloud/storage/service.rb +0 -347
- data/lib/gcloud/translate/api.rb +0 -241
- data/lib/gcloud/translate/detection.rb +0 -137
- data/lib/gcloud/translate/language.rb +0 -69
- data/lib/gcloud/translate/service.rb +0 -80
- data/lib/gcloud/translate/translation.rb +0 -112
- data/lib/gcloud/vision/annotate.rb +0 -224
- data/lib/gcloud/vision/annotation.rb +0 -455
- data/lib/gcloud/vision/annotation/entity.rb +0 -234
- data/lib/gcloud/vision/annotation/face.rb +0 -1750
- data/lib/gcloud/vision/annotation/properties.rb +0 -245
- data/lib/gcloud/vision/annotation/safe_search.rb +0 -161
- data/lib/gcloud/vision/annotation/text.rb +0 -236
- data/lib/gcloud/vision/annotation/vertex.rb +0 -108
- data/lib/gcloud/vision/credentials.rb +0 -29
- data/lib/gcloud/vision/image.rb +0 -590
- data/lib/gcloud/vision/location.rb +0 -115
- data/lib/gcloud/vision/project.rb +0 -278
- data/lib/gcloud/vision/service.rb +0 -66
- data/lib/google/api/annotations.rb +0 -14
- data/lib/google/api/http.rb +0 -30
- data/lib/google/api/label.rb +0 -24
- data/lib/google/api/monitored_resource.rb +0 -25
- data/lib/google/datastore/v1beta3/datastore.rb +0 -115
- data/lib/google/datastore/v1beta3/datastore_services.rb +0 -33
- data/lib/google/datastore/v1beta3/entity.rb +0 -63
- data/lib/google/datastore/v1beta3/query.rb +0 -128
- data/lib/google/devtools/cloudtrace/v1/trace.rb +0 -78
- data/lib/google/devtools/cloudtrace/v1/trace_services.rb +0 -32
- data/lib/google/example/library/v1/library.rb +0 -91
- data/lib/google/example/library/v1/library_services.rb +0 -40
- data/lib/google/iam/v1/iam_policy.rb +0 -33
- data/lib/google/iam/v1/iam_policy_services.rb +0 -30
- data/lib/google/iam/v1/policy.rb +0 -25
- data/lib/google/logging/type/http_request.rb +0 -28
- data/lib/google/logging/type/log_severity.rb +0 -27
- data/lib/google/logging/v2/log_entry.rb +0 -44
- data/lib/google/logging/v2/logging.rb +0 -56
- data/lib/google/logging/v2/logging_config.rb +0 -59
- data/lib/google/logging/v2/logging_config_services.rb +0 -32
- data/lib/google/logging/v2/logging_metrics.rb +0 -51
- data/lib/google/logging/v2/logging_metrics_services.rb +0 -32
- data/lib/google/logging/v2/logging_services.rb +0 -31
- data/lib/google/longrunning/operations.rb +0 -50
- data/lib/google/longrunning/operations_services.rb +0 -29
- data/lib/google/protobuf/descriptor.rb +0 -0
- data/lib/google/pubsub/v1/pubsub.rb +0 -129
- data/lib/google/pubsub/v1/pubsub_services.rb +0 -56
- data/lib/google/pubsub/v1beta2/pubsub.rb +0 -126
- data/lib/google/pubsub/v1beta2/pubsub_services.rb +0 -56
- data/lib/google/rpc/code.rb +0 -32
- data/lib/google/rpc/error_details.rb +0 -61
- data/lib/google/rpc/status.rb +0 -19
- data/lib/google/type/color.rb +0 -20
- data/lib/google/type/date.rb +0 -18
- data/lib/google/type/dayofweek.rb +0 -23
- data/lib/google/type/latlng.rb +0 -17
- data/lib/google/type/money.rb +0 -18
- data/lib/google/type/timeofday.rb +0 -19
data/lib/gcloud/dns.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright
|
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -14,323 +14,4 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
require "gcloud"
|
|
17
|
-
require "
|
|
18
|
-
|
|
19
|
-
module Gcloud
|
|
20
|
-
##
|
|
21
|
-
# Creates a new `Project` instance connected to the DNS service.
|
|
22
|
-
# Each call creates a new connection.
|
|
23
|
-
#
|
|
24
|
-
# For more information on connecting to Google Cloud see the [Authentication
|
|
25
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
26
|
-
#
|
|
27
|
-
# @param [String] project Identifier for a DNS project. If not present, the
|
|
28
|
-
# default project for the credentials is used.
|
|
29
|
-
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If file
|
|
30
|
-
# path the file must be readable.
|
|
31
|
-
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
|
32
|
-
# set of resources and operations that the connection can access. See [Using
|
|
33
|
-
# OAuth 2.0 to Access Google
|
|
34
|
-
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
|
35
|
-
#
|
|
36
|
-
# The default scope is:
|
|
37
|
-
#
|
|
38
|
-
# * `https://www.googleapis.com/auth/ndev.clouddns.readwrite`
|
|
39
|
-
# @param [Integer] retries Number of times to retry requests on server error.
|
|
40
|
-
# The default value is `3`. Optional.
|
|
41
|
-
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
|
42
|
-
#
|
|
43
|
-
# @return [Gcloud::Dns::Project]
|
|
44
|
-
#
|
|
45
|
-
# @example
|
|
46
|
-
# require "gcloud"
|
|
47
|
-
#
|
|
48
|
-
# dns = Gcloud.dns "my-dns-project",
|
|
49
|
-
# "/path/to/keyfile.json"
|
|
50
|
-
#
|
|
51
|
-
# zone = dns.zone "example-com"
|
|
52
|
-
#
|
|
53
|
-
def self.dns project = nil, keyfile = nil, scope: nil, retries: nil,
|
|
54
|
-
timeout: nil
|
|
55
|
-
project ||= Gcloud::Dns::Project.default_project
|
|
56
|
-
project = project.to_s # Always cast to a string
|
|
57
|
-
fail ArgumentError, "project is missing" if project.empty?
|
|
58
|
-
|
|
59
|
-
if keyfile.nil?
|
|
60
|
-
credentials = Gcloud::Dns::Credentials.default scope: scope
|
|
61
|
-
else
|
|
62
|
-
credentials = Gcloud::Dns::Credentials.new keyfile, scope: scope
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
Gcloud::Dns::Project.new(
|
|
66
|
-
Gcloud::Dns::Service.new(
|
|
67
|
-
project, credentials, retries: retries, timeout: timeout))
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
##
|
|
71
|
-
# # Google Cloud DNS
|
|
72
|
-
#
|
|
73
|
-
# Google Cloud DNS is a high-performance, resilient, global DNS service that
|
|
74
|
-
# provides a cost-effective way to make your applications and services
|
|
75
|
-
# available to your users. This programmable, authoritative DNS service can be
|
|
76
|
-
# used to easily publish and manage DNS records using the same infrastructure
|
|
77
|
-
# relied upon by Google. To learn more, read [What is Google Cloud
|
|
78
|
-
# DNS?](https://cloud.google.com/dns/what-is-cloud-dns).
|
|
79
|
-
#
|
|
80
|
-
# The goal of gcloud-ruby is to provide an API that is comfortable
|
|
81
|
-
# to Rubyists. Authentication is handled by {Gcloud#dns}. You can provide the
|
|
82
|
-
# project and credential information to connect to the Cloud DNS service, or
|
|
83
|
-
# if you are running on Google Compute Engine this configuration is taken care
|
|
84
|
-
# of for you. You can read more about the options for connecting in the
|
|
85
|
-
# [Authentication
|
|
86
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
87
|
-
#
|
|
88
|
-
# ## Creating Zones
|
|
89
|
-
#
|
|
90
|
-
# To get started with Google Cloud DNS, use your DNS Project to create a new
|
|
91
|
-
# Zone. The second argument to {Gcloud::Dns::Project#create_zone} must be a
|
|
92
|
-
# unique domain name for which you can [verify
|
|
93
|
-
# ownership](https://www.google.com/webmasters/verification/home). Substitute
|
|
94
|
-
# a domain name of your own (ending with a dot to signify that it is [fully
|
|
95
|
-
# qualified](https://en.wikipedia.org/wiki/Fully_qualified_domain_name)) as
|
|
96
|
-
# you follow along with these examples.
|
|
97
|
-
#
|
|
98
|
-
# ```ruby
|
|
99
|
-
# require "gcloud"
|
|
100
|
-
#
|
|
101
|
-
# gcloud = Gcloud.new
|
|
102
|
-
# dns = gcloud.dns
|
|
103
|
-
# zone = dns.create_zone "example-com", "example.com."
|
|
104
|
-
# puts zone.id # unique identifier defined by the server
|
|
105
|
-
# ```
|
|
106
|
-
#
|
|
107
|
-
# For more information, see [Managing
|
|
108
|
-
# Zones](https://cloud.google.com/dns/zones/).
|
|
109
|
-
#
|
|
110
|
-
# ## Listing Zones
|
|
111
|
-
#
|
|
112
|
-
# You can retrieve all the zones in your project.
|
|
113
|
-
#
|
|
114
|
-
# ```ruby
|
|
115
|
-
# require "gcloud"
|
|
116
|
-
#
|
|
117
|
-
# gcloud = Gcloud.new
|
|
118
|
-
# dns = gcloud.dns
|
|
119
|
-
# zones = dns.zones
|
|
120
|
-
# zones.each do |zone|
|
|
121
|
-
# puts "#{zone.name} - #{zone.dns}"
|
|
122
|
-
# end
|
|
123
|
-
# ```
|
|
124
|
-
#
|
|
125
|
-
# You can also retrieve a single zone by either name or id.
|
|
126
|
-
#
|
|
127
|
-
# ```ruby
|
|
128
|
-
# require "gcloud"
|
|
129
|
-
#
|
|
130
|
-
# gcloud = Gcloud.new
|
|
131
|
-
# dns = gcloud.dns
|
|
132
|
-
# zone = dns.zone "example-com"
|
|
133
|
-
# ```
|
|
134
|
-
#
|
|
135
|
-
# ## Listing Records
|
|
136
|
-
#
|
|
137
|
-
# When you create a zone, the Cloud DNS service automatically creates two
|
|
138
|
-
# Record instances for it, providing configuration for Cloud DNS nameservers.
|
|
139
|
-
# Let's take a look at these records.
|
|
140
|
-
#
|
|
141
|
-
# ```ruby
|
|
142
|
-
# require "gcloud"
|
|
143
|
-
#
|
|
144
|
-
# gcloud = Gcloud.new
|
|
145
|
-
# dns = gcloud.dns
|
|
146
|
-
# zone = dns.zone "example-com"
|
|
147
|
-
# records = zone.records
|
|
148
|
-
# records.count #=> 2
|
|
149
|
-
# records.map &:type #=> ["NS", "SOA"]
|
|
150
|
-
# zone.records.first.data.count #=> 4
|
|
151
|
-
# zone.records.first.data #=> ["ns-cloud-d1.googledomains.com.", ...]
|
|
152
|
-
# ```
|
|
153
|
-
#
|
|
154
|
-
# Note that {Gcloud::Dns::Record#data} returns an array. The Cloud DNS service
|
|
155
|
-
# only allows the zone to have one Record instance for each name and type
|
|
156
|
-
# combination. It supports multiple "resource records" (in this case, the four
|
|
157
|
-
# nameserver addresses) via this `data` collection.
|
|
158
|
-
#
|
|
159
|
-
# ## Managing Records
|
|
160
|
-
#
|
|
161
|
-
# You can easily add your own records to the zone. Each call to
|
|
162
|
-
# {Gcloud::Dns::Zone#add} results in a new Cloud DNS Change instance.
|
|
163
|
-
#
|
|
164
|
-
# ```ruby
|
|
165
|
-
# require "gcloud"
|
|
166
|
-
#
|
|
167
|
-
# gcloud = Gcloud.new
|
|
168
|
-
# dns = gcloud.dns
|
|
169
|
-
# zone = dns.zone "example-com"
|
|
170
|
-
# change = zone.add "www", "A", 86400, ["1.2.3.4"]
|
|
171
|
-
# change.additions.map &:type #=> ["A", "SOA"]
|
|
172
|
-
# change.deletions.map &:type #=> ["SOA"]
|
|
173
|
-
# ```
|
|
174
|
-
#
|
|
175
|
-
# Whenever you change the set of records belonging to a zone, the zone's start
|
|
176
|
-
# of authority (SOA) record should be updated with a higher serial number. The
|
|
177
|
-
# gcloud-ruby library automates this update for you, deleting the old SOA
|
|
178
|
-
# record and adding an updated one, as shown in the example above. You can
|
|
179
|
-
# disable or modify this behavior, of course. See {Gcloud::Dns::Zone#update}
|
|
180
|
-
# for details.
|
|
181
|
-
#
|
|
182
|
-
# You can retrieve records by name and type. The name argument can be a
|
|
183
|
-
# subdomain (e.g., `www`) fragment for convenience, but notice that the
|
|
184
|
-
# retrieved record's domain name is always fully-qualified.
|
|
185
|
-
#
|
|
186
|
-
# ```ruby
|
|
187
|
-
# require "gcloud"
|
|
188
|
-
#
|
|
189
|
-
# gcloud = Gcloud.new
|
|
190
|
-
# dns = gcloud.dns
|
|
191
|
-
# zone = dns.zone "example-com"
|
|
192
|
-
# records = zone.records "www", "A"
|
|
193
|
-
# records.first.name #=> "www.example.com."
|
|
194
|
-
# ```
|
|
195
|
-
#
|
|
196
|
-
# You can use {Gcloud::Dns::Zone#replace} to update the `ttl` and `data` for a
|
|
197
|
-
# record.
|
|
198
|
-
#
|
|
199
|
-
# ```ruby
|
|
200
|
-
# require "gcloud"
|
|
201
|
-
#
|
|
202
|
-
# gcloud = Gcloud.new
|
|
203
|
-
# dns = gcloud.dns
|
|
204
|
-
# zone = dns.zone "example-com"
|
|
205
|
-
# change = zone.replace "www", "A", 86400, ["5.6.7.8"]
|
|
206
|
-
# ```
|
|
207
|
-
#
|
|
208
|
-
# Or, you can use {Gcloud::Dns::Zone#modify} to update just the `ttl` or
|
|
209
|
-
# `data`, without the risk of inadvertently changing values that you wish to
|
|
210
|
-
# leave unchanged.
|
|
211
|
-
#
|
|
212
|
-
# ```ruby
|
|
213
|
-
# require "gcloud"
|
|
214
|
-
#
|
|
215
|
-
# gcloud = Gcloud.new
|
|
216
|
-
# dns = gcloud.dns
|
|
217
|
-
# zone = dns.zone "example-com"
|
|
218
|
-
# change = zone.modify "www", "A" do |r|
|
|
219
|
-
# r.ttl = 3600 # change only the TTL
|
|
220
|
-
# end
|
|
221
|
-
# ```
|
|
222
|
-
#
|
|
223
|
-
# You can also delete records by name and type.
|
|
224
|
-
#
|
|
225
|
-
# ```ruby
|
|
226
|
-
# require "gcloud"
|
|
227
|
-
#
|
|
228
|
-
# gcloud = Gcloud.new
|
|
229
|
-
# dns = gcloud.dns
|
|
230
|
-
# zone = dns.zone "example-com"
|
|
231
|
-
# change = zone.remove "www", "A"
|
|
232
|
-
# record = change.deletions.first
|
|
233
|
-
# ```
|
|
234
|
-
#
|
|
235
|
-
# The best way to add, remove, and update multiple records in a single
|
|
236
|
-
# [transaction](https://cloud.google.com/dns/records) is to call
|
|
237
|
-
# {Gcloud::Dns::Zone#update} with a block. See
|
|
238
|
-
# {Gcloud::Dns::Zone::Transaction}.
|
|
239
|
-
#
|
|
240
|
-
# ```ruby
|
|
241
|
-
# require "gcloud"
|
|
242
|
-
#
|
|
243
|
-
# gcloud = Gcloud.new
|
|
244
|
-
# dns = gcloud.dns
|
|
245
|
-
# zone = dns.zone "example-com"
|
|
246
|
-
# change = zone.update do |tx|
|
|
247
|
-
# tx.add "www", "A", 86400, "1.2.3.4"
|
|
248
|
-
# tx.remove "example.com.", "TXT"
|
|
249
|
-
# tx.replace "example.com.", "MX", 86400, ["10 mail1.example.com.",
|
|
250
|
-
# "20 mail2.example.com."]
|
|
251
|
-
# tx.modify "www.example.com.", "CNAME" do |r|
|
|
252
|
-
# r.ttl = 86400 # only change the TTL
|
|
253
|
-
# end
|
|
254
|
-
# end
|
|
255
|
-
# ```
|
|
256
|
-
#
|
|
257
|
-
# Finally, you can add and delete records by reference, using
|
|
258
|
-
# {Gcloud::Dns::Zone#update}.
|
|
259
|
-
#
|
|
260
|
-
# ```ruby
|
|
261
|
-
# require "gcloud"
|
|
262
|
-
#
|
|
263
|
-
# gcloud = Gcloud.new
|
|
264
|
-
# dns = gcloud.dns
|
|
265
|
-
# zone = dns.zone "example-com"
|
|
266
|
-
# to_add = zone.record "www", "AAAA", 86400, ["2607:f8b0:400a:801::1005"]
|
|
267
|
-
# to_delete = zone.records "www", "A"
|
|
268
|
-
# change = zone.update to_add, to_delete
|
|
269
|
-
# ```
|
|
270
|
-
#
|
|
271
|
-
# ## Listing Changes
|
|
272
|
-
#
|
|
273
|
-
# Because the transactions you execute against your zone do not always
|
|
274
|
-
# complete immediately, you can retrieve and inspect changes.
|
|
275
|
-
#
|
|
276
|
-
# ```ruby
|
|
277
|
-
# require "gcloud"
|
|
278
|
-
#
|
|
279
|
-
# gcloud = Gcloud.new
|
|
280
|
-
# dns = gcloud.dns
|
|
281
|
-
# zone = dns.zone "example-com"
|
|
282
|
-
# changes = zone.changes
|
|
283
|
-
# changes.each do |change|
|
|
284
|
-
# puts "#{change.id} - #{change.started_at} - #{change.status}"
|
|
285
|
-
# end
|
|
286
|
-
# ```
|
|
287
|
-
#
|
|
288
|
-
# ## Importing and exporting zone files
|
|
289
|
-
#
|
|
290
|
-
# You can import from a zone file. Because the Cloud DNS service only allows
|
|
291
|
-
# the zone to have one Record instance for each name and type combination,
|
|
292
|
-
# lines may be merged as needed into records with multiple `data` values.
|
|
293
|
-
#
|
|
294
|
-
# ```ruby
|
|
295
|
-
# require "gcloud"
|
|
296
|
-
#
|
|
297
|
-
# gcloud = Gcloud.new
|
|
298
|
-
# dns = gcloud.dns
|
|
299
|
-
# zone = dns.zone "example-com"
|
|
300
|
-
# change = zone.import "path/to/db.example.com"
|
|
301
|
-
# ```
|
|
302
|
-
#
|
|
303
|
-
# You can also export to a zone file.
|
|
304
|
-
#
|
|
305
|
-
# ```ruby
|
|
306
|
-
# require "gcloud"
|
|
307
|
-
#
|
|
308
|
-
# gcloud = Gcloud.new
|
|
309
|
-
# dns = gcloud.dns
|
|
310
|
-
# zone = dns.zone "example-com"
|
|
311
|
-
#
|
|
312
|
-
# zone.export "path/to/db.example.com"
|
|
313
|
-
# ```
|
|
314
|
-
#
|
|
315
|
-
# ## Configuring retries and timeout
|
|
316
|
-
#
|
|
317
|
-
# You can configure how many times API requests may be automatically retried.
|
|
318
|
-
# When an API request fails, the response will be inspected to see if the
|
|
319
|
-
# request meets criteria indicating that it may succeed on retry, such as
|
|
320
|
-
# `500` and `503` status codes or a specific internal error code such as
|
|
321
|
-
# `rateLimitExceeded`. If it meets the criteria, the request will be retried
|
|
322
|
-
# after a delay. If another error occurs, the delay will be increased before a
|
|
323
|
-
# subsequent attempt, until the `retries` limit is reached.
|
|
324
|
-
#
|
|
325
|
-
# You can also set the request `timeout` value in seconds.
|
|
326
|
-
#
|
|
327
|
-
# ```ruby
|
|
328
|
-
# require "gcloud"
|
|
329
|
-
#
|
|
330
|
-
# gcloud = Gcloud.new
|
|
331
|
-
# dns = gcloud.dns retries: 10, timeout: 120
|
|
332
|
-
# ```
|
|
333
|
-
#
|
|
334
|
-
module Dns
|
|
335
|
-
end
|
|
336
|
-
end
|
|
17
|
+
require "google/cloud/dns"
|
data/lib/gcloud/logging.rb
CHANGED
|
@@ -14,325 +14,4 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
require "gcloud"
|
|
17
|
-
require "
|
|
18
|
-
|
|
19
|
-
module Gcloud
|
|
20
|
-
##
|
|
21
|
-
# Creates a new object for connecting to the Stackdriver Logging service.
|
|
22
|
-
# Each call creates a new connection.
|
|
23
|
-
#
|
|
24
|
-
# For more information on connecting to Google Cloud see the [Authentication
|
|
25
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
26
|
-
#
|
|
27
|
-
# @param [String] project Project identifier for the Stackdriver Logging
|
|
28
|
-
# service.
|
|
29
|
-
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If file
|
|
30
|
-
# path the file must be readable.
|
|
31
|
-
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
|
32
|
-
# set of resources and operations that the connection can access. See [Using
|
|
33
|
-
# OAuth 2.0 to Access Google
|
|
34
|
-
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
|
35
|
-
#
|
|
36
|
-
# The default scope is:
|
|
37
|
-
#
|
|
38
|
-
# * `https://www.googleapis.com/auth/logging.admin`
|
|
39
|
-
# @param [Integer] retries Number of times to retry requests on server error.
|
|
40
|
-
# The default value is `3`. Optional.
|
|
41
|
-
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
|
42
|
-
#
|
|
43
|
-
# @return [Gcloud::Logging::Project]
|
|
44
|
-
#
|
|
45
|
-
# @example
|
|
46
|
-
# require "gcloud/logging"
|
|
47
|
-
#
|
|
48
|
-
# gcloud = Gcloud.new
|
|
49
|
-
# logging = gcloud.logging
|
|
50
|
-
# # ...
|
|
51
|
-
#
|
|
52
|
-
def self.logging project = nil, keyfile = nil, scope: nil, retries: nil,
|
|
53
|
-
timeout: nil
|
|
54
|
-
project ||= Gcloud::Logging::Project.default_project
|
|
55
|
-
project = project.to_s # Always cast to a string
|
|
56
|
-
fail ArgumentError, "project is missing" if project.empty?
|
|
57
|
-
|
|
58
|
-
if keyfile.nil?
|
|
59
|
-
credentials = Gcloud::Logging::Credentials.default scope: scope
|
|
60
|
-
else
|
|
61
|
-
credentials = Gcloud::Logging::Credentials.new keyfile, scope: scope
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
Gcloud::Logging::Project.new(
|
|
65
|
-
Gcloud::Logging::Service.new(
|
|
66
|
-
project, credentials, retries: retries, timeout: timeout))
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
##
|
|
70
|
-
# # Stackdriver Logging
|
|
71
|
-
#
|
|
72
|
-
# The Stackdriver Logging service collects and stores logs from applications
|
|
73
|
-
# and services on the Google Cloud Platform, giving you fine-grained,
|
|
74
|
-
# programmatic control over your projects' logs. You can use the Stackdriver
|
|
75
|
-
# Logging API to:
|
|
76
|
-
#
|
|
77
|
-
# * [Read and filter log entries](#listing-log-entries)
|
|
78
|
-
# * [Export your log entries](#exporting-log-entries) to Cloud Storage,
|
|
79
|
-
# BigQuery, or Cloud Pub/Sub
|
|
80
|
-
# * [Create logs-based metrics](#creating-logs-based-metrics) for use in Cloud
|
|
81
|
-
# Monitoring
|
|
82
|
-
# * [Write log entries](#writing-log-entries)
|
|
83
|
-
#
|
|
84
|
-
# For general information about Stackdriver Logging, read [Stackdriver Logging
|
|
85
|
-
# Documentation](https://cloud.google.com/logging/docs/).
|
|
86
|
-
#
|
|
87
|
-
# The goal of gcloud-ruby is to provide an API that is comfortable to
|
|
88
|
-
# Rubyists. Authentication is handled by {Gcloud#logging}. You can provide the
|
|
89
|
-
# project and credential information to connect to the Stackdriver Logging
|
|
90
|
-
# service, or if you are running on Google Compute Engine this configuration
|
|
91
|
-
# is taken care of for you. You can read more about the options for connecting
|
|
92
|
-
# in the [Authentication
|
|
93
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
|
94
|
-
#
|
|
95
|
-
# ## Listing log entries
|
|
96
|
-
#
|
|
97
|
-
# Stackdriver Logging gathers log entries from many services, including Google
|
|
98
|
-
# App Engine and Google Compute Engine. (See the [List of Log
|
|
99
|
-
# Types](https://cloud.google.com/logging/docs/view/logs_index).) In addition,
|
|
100
|
-
# you can write your own log entries to the service.
|
|
101
|
-
#
|
|
102
|
-
# {Gcloud::Logging::Project#entries} returns the {Gcloud::Logging::Entry}
|
|
103
|
-
# records belonging to your project:
|
|
104
|
-
#
|
|
105
|
-
# ```ruby
|
|
106
|
-
# require "gcloud"
|
|
107
|
-
#
|
|
108
|
-
# gcloud = Gcloud.new
|
|
109
|
-
# logging = gcloud.logging
|
|
110
|
-
# entries = logging.entries
|
|
111
|
-
# entries.each do |e|
|
|
112
|
-
# puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
|
|
113
|
-
# end
|
|
114
|
-
# ```
|
|
115
|
-
#
|
|
116
|
-
# You can narrow the results to a single log using an [advanced logs
|
|
117
|
-
# filter](https://cloud.google.com/logging/docs/view/advanced_filters). A
|
|
118
|
-
# log is a named collection of entries. Logs can be produced by Google Cloud
|
|
119
|
-
# Platform services, by third-party services, or by your applications. For
|
|
120
|
-
# example, the log `compute.googleapis.com/activity_log` is produced by Google
|
|
121
|
-
# Compute Engine. Logs are simply referenced by name in gcloud-ruby. There is
|
|
122
|
-
# no `Log` type in gcloud-ruby or `Log` resource in the Stackdriver Logging
|
|
123
|
-
# API.
|
|
124
|
-
#
|
|
125
|
-
# ```ruby
|
|
126
|
-
# require "gcloud"
|
|
127
|
-
#
|
|
128
|
-
# gcloud = Gcloud.new
|
|
129
|
-
# logging = gcloud.logging
|
|
130
|
-
# entries = logging.entries filter: "log:syslog"
|
|
131
|
-
# entries.each do |e|
|
|
132
|
-
# puts "[#{e.timestamp}] #{e.payload.inspect}"
|
|
133
|
-
# end
|
|
134
|
-
# ```
|
|
135
|
-
#
|
|
136
|
-
# You can also order the log entries by `timestamp`.
|
|
137
|
-
#
|
|
138
|
-
# ```ruby
|
|
139
|
-
# require "gcloud"
|
|
140
|
-
#
|
|
141
|
-
# gcloud = Gcloud.new
|
|
142
|
-
# logging = gcloud.logging
|
|
143
|
-
# entries = logging.entries order: "timestamp desc"
|
|
144
|
-
# entries.each do |e|
|
|
145
|
-
# puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
|
|
146
|
-
# end
|
|
147
|
-
# ```
|
|
148
|
-
#
|
|
149
|
-
# ## Exporting log entries
|
|
150
|
-
#
|
|
151
|
-
# Stackdriver Logging lets you export log entries to destinations including
|
|
152
|
-
# Google Cloud Storage buckets (for long term log storage), Google BigQuery
|
|
153
|
-
# datasets (for log analysis), and Google Pub/Sub (for streaming to other
|
|
154
|
-
# applications).
|
|
155
|
-
#
|
|
156
|
-
# ### Creating sinks
|
|
157
|
-
#
|
|
158
|
-
# A {Gcloud::Logging::Sink} is an object that lets you to specify a set of log
|
|
159
|
-
# entries to export.
|
|
160
|
-
#
|
|
161
|
-
# In addition to the name of the sink and the export destination,
|
|
162
|
-
# {Gcloud::Logging::Project#create_sink} accepts an [advanced
|
|
163
|
-
# logs filter](https://cloud.google.com/logging/docs/view/advanced_filters) to
|
|
164
|
-
# narrow the collection.
|
|
165
|
-
#
|
|
166
|
-
# Before creating the sink, ensure that you have granted
|
|
167
|
-
# `cloud-logs@google.com` permission to write logs to the destination. See
|
|
168
|
-
# [Permissions for writing exported
|
|
169
|
-
# logs](https://cloud.google.com/logging/docs/export/configure_export#setting_product_name_short_permissions_for_writing_exported_logs).
|
|
170
|
-
#
|
|
171
|
-
# ```ruby
|
|
172
|
-
# require "gcloud"
|
|
173
|
-
#
|
|
174
|
-
# gcloud = Gcloud.new
|
|
175
|
-
# logging = gcloud.logging
|
|
176
|
-
# storage = gcloud.storage
|
|
177
|
-
#
|
|
178
|
-
# bucket = storage.create_bucket "my-logs-bucket"
|
|
179
|
-
#
|
|
180
|
-
# # Grant owner permission to Stackdriver Logging service
|
|
181
|
-
# email = "cloud-logs@google.com"
|
|
182
|
-
# bucket.acl.add_owner "group-#{email}"
|
|
183
|
-
#
|
|
184
|
-
# sink = logging.create_sink "my-sink", "storage.googleapis.com/#{bucket.id}"
|
|
185
|
-
# ```
|
|
186
|
-
#
|
|
187
|
-
# When you create a sink, only new log entries are exported. Stackdriver
|
|
188
|
-
# Logging does not send previously-ingested log entries to the sink's
|
|
189
|
-
# destination.
|
|
190
|
-
#
|
|
191
|
-
# ### Listing sinks
|
|
192
|
-
#
|
|
193
|
-
# You can also list the sinks belonging to your project with
|
|
194
|
-
# {Gcloud::Logging::Project#sinks}.
|
|
195
|
-
#
|
|
196
|
-
# ```ruby
|
|
197
|
-
# require "gcloud"
|
|
198
|
-
#
|
|
199
|
-
# gcloud = Gcloud.new
|
|
200
|
-
# logging = gcloud.logging
|
|
201
|
-
# sinks = logging.sinks
|
|
202
|
-
# sinks.each do |s|
|
|
203
|
-
# puts "#{s.name}: #{s.filter} -> #{s.destination}"
|
|
204
|
-
# end
|
|
205
|
-
# ```
|
|
206
|
-
#
|
|
207
|
-
# ## Creating logs-based metrics
|
|
208
|
-
#
|
|
209
|
-
# You can use log entries in your project as the basis for [Google Cloud
|
|
210
|
-
# Monitoring](https://cloud.google.com/monitoring/docs) metrics. These metrics
|
|
211
|
-
# can then be used to produce Cloud Monitoring reports and alerts.
|
|
212
|
-
#
|
|
213
|
-
# ### Creating metrics
|
|
214
|
-
#
|
|
215
|
-
# A metric is a measured value that can be used to assess a system. Use
|
|
216
|
-
# {Gcloud::Logging::Project#create_metric} to configure a
|
|
217
|
-
# {Gcloud::Logging::Metric} based on a collection of log entries matching an
|
|
218
|
-
# [advanced
|
|
219
|
-
# logs filter](https://cloud.google.com/logging/docs/view/advanced_filters).
|
|
220
|
-
#
|
|
221
|
-
# ```ruby
|
|
222
|
-
# require "gcloud"
|
|
223
|
-
#
|
|
224
|
-
# gcloud = Gcloud.new
|
|
225
|
-
# logging = gcloud.logging
|
|
226
|
-
# metric = logging.create_metric "errors", "severity>=ERROR"
|
|
227
|
-
# ```
|
|
228
|
-
#
|
|
229
|
-
# ### Listing metrics
|
|
230
|
-
#
|
|
231
|
-
# You can also list the metrics belonging to your project with
|
|
232
|
-
# {Gcloud::Logging::Project#metrics}.
|
|
233
|
-
#
|
|
234
|
-
# ```ruby
|
|
235
|
-
# require "gcloud"
|
|
236
|
-
#
|
|
237
|
-
# gcloud = Gcloud.new
|
|
238
|
-
# logging = gcloud.logging
|
|
239
|
-
# metrics = logging.metrics
|
|
240
|
-
# metrics.each do |m|
|
|
241
|
-
# puts "#{m.name}: #{m.filter}"
|
|
242
|
-
# end
|
|
243
|
-
# ```
|
|
244
|
-
#
|
|
245
|
-
# ## Writing log entries
|
|
246
|
-
#
|
|
247
|
-
# An {Gcloud::Logging::Entry} is composed of metadata and a payload. The
|
|
248
|
-
# payload is traditionally a message string, but in Stackdriver Logging it can
|
|
249
|
-
# also be a JSON or protocol buffer object. A single log can have entries with
|
|
250
|
-
# different payload types. In addition to the payload, your argument(s) to
|
|
251
|
-
# {Gcloud::Logging::Project#write_entries} must also contain a log name and a
|
|
252
|
-
# resource.
|
|
253
|
-
#
|
|
254
|
-
# ```ruby
|
|
255
|
-
# require "gcloud"
|
|
256
|
-
#
|
|
257
|
-
# gcloud = Gcloud.new
|
|
258
|
-
# logging = gcloud.logging
|
|
259
|
-
#
|
|
260
|
-
# entry = logging.entry
|
|
261
|
-
# entry.payload = "Job started."
|
|
262
|
-
# entry.log_name = "my_app_log"
|
|
263
|
-
# entry.resource.type = "gae_app"
|
|
264
|
-
# entry.resource.labels[:module_id] = "1"
|
|
265
|
-
# entry.resource.labels[:version_id] = "20150925t173233"
|
|
266
|
-
#
|
|
267
|
-
# logging.write_entries entry
|
|
268
|
-
# ```
|
|
269
|
-
#
|
|
270
|
-
# If you write a collection of log entries, you can provide the log name,
|
|
271
|
-
# resource, and/or labels hash to be used for all of the entries, and omit
|
|
272
|
-
# these values from the individual entries.
|
|
273
|
-
#
|
|
274
|
-
# ```ruby
|
|
275
|
-
# require "gcloud"
|
|
276
|
-
#
|
|
277
|
-
# gcloud = Gcloud.new
|
|
278
|
-
# logging = gcloud.logging
|
|
279
|
-
#
|
|
280
|
-
# entry1 = logging.entry
|
|
281
|
-
# entry1.payload = "Job started."
|
|
282
|
-
# entry2 = logging.entry
|
|
283
|
-
# entry2.payload = "Job completed."
|
|
284
|
-
# labels = { job_size: "large", job_code: "red" }
|
|
285
|
-
#
|
|
286
|
-
# resource = logging.resource "gae_app",
|
|
287
|
-
# "module_id" => "1",
|
|
288
|
-
# "version_id" => "20150925t173233"
|
|
289
|
-
#
|
|
290
|
-
# logging.write_entries [entry1, entry2],
|
|
291
|
-
# log_name: "my_app_log",
|
|
292
|
-
# resource: resource,
|
|
293
|
-
# labels: labels
|
|
294
|
-
# ```
|
|
295
|
-
#
|
|
296
|
-
# ### Creating a Ruby Logger implementation
|
|
297
|
-
#
|
|
298
|
-
# If your environment requires a logger instance that is API-compatible with
|
|
299
|
-
# Ruby's standard library
|
|
300
|
-
# [Logger](http://ruby-doc.org/stdlib/libdoc/logger/rdoc), you can use
|
|
301
|
-
# {Gcloud::Logging::Project#logger} to create one.
|
|
302
|
-
#
|
|
303
|
-
# ```ruby
|
|
304
|
-
# require "gcloud"
|
|
305
|
-
#
|
|
306
|
-
# gcloud = Gcloud.new
|
|
307
|
-
# logging = gcloud.logging
|
|
308
|
-
#
|
|
309
|
-
# resource = logging.resource "gae_app",
|
|
310
|
-
# module_id: "1",
|
|
311
|
-
# version_id: "20150925t173233"
|
|
312
|
-
#
|
|
313
|
-
# logger = logging.logger "my_app_log", resource, env: :production
|
|
314
|
-
# logger.info "Job started."
|
|
315
|
-
# ```
|
|
316
|
-
#
|
|
317
|
-
# ## Configuring retries and timeout
|
|
318
|
-
#
|
|
319
|
-
# You can configure how many times API requests may be automatically retried.
|
|
320
|
-
# When an API request fails, the response will be inspected to see if the
|
|
321
|
-
# request meets criteria indicating that it may succeed on retry, such as
|
|
322
|
-
# `500` and `503` status codes or a specific internal error code such as
|
|
323
|
-
# `rateLimitExceeded`. If it meets the criteria, the request will be retried
|
|
324
|
-
# after a delay. If another error occurs, the delay will be increased before a
|
|
325
|
-
# subsequent attempt, until the `retries` limit is reached.
|
|
326
|
-
#
|
|
327
|
-
# You can also set the request `timeout` value in seconds.
|
|
328
|
-
#
|
|
329
|
-
# ```ruby
|
|
330
|
-
# require "gcloud"
|
|
331
|
-
#
|
|
332
|
-
# gcloud = Gcloud.new
|
|
333
|
-
# logging = gcloud.logging retries: 10, timeout: 120
|
|
334
|
-
# ```
|
|
335
|
-
#
|
|
336
|
-
module Logging
|
|
337
|
-
end
|
|
338
|
-
end
|
|
17
|
+
require "google/cloud/logging"
|