gcloud 0.6.3 → 0.7.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 +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
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Copyright 2016 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/logging/metric/list"
|
|
17
|
+
|
|
18
|
+
module Gcloud
|
|
19
|
+
module Logging
|
|
20
|
+
##
|
|
21
|
+
# # Metric
|
|
22
|
+
#
|
|
23
|
+
# A logs-based [Google Cloud
|
|
24
|
+
# Monitoring](https://cloud.google.com/monitoring/docs) metric. A metric is
|
|
25
|
+
# a measured value that can be used to assess a system. The basis of a
|
|
26
|
+
# logs-based metric is the collection of log entries that match a logs
|
|
27
|
+
# filter.
|
|
28
|
+
#
|
|
29
|
+
# @see https://cloud.google.com/logging/docs/view/logs_based_metrics
|
|
30
|
+
# Logs-based Metrics
|
|
31
|
+
# @see https://cloud.google.com/monitoring/docs Google Cloud Monitoring
|
|
32
|
+
#
|
|
33
|
+
# @example
|
|
34
|
+
# require "gcloud"
|
|
35
|
+
#
|
|
36
|
+
# gcloud = Gcloud.new
|
|
37
|
+
# logging = gcloud.logging
|
|
38
|
+
# metric = logging.create_metric "errors", "severity>=ERROR"
|
|
39
|
+
#
|
|
40
|
+
class Metric
|
|
41
|
+
##
|
|
42
|
+
# @private The gRPC Service object.
|
|
43
|
+
attr_accessor :service
|
|
44
|
+
|
|
45
|
+
##
|
|
46
|
+
# @private The gRPC Google::Logging::V2::LogMetric object.
|
|
47
|
+
attr_accessor :grpc
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# @private Create an empty Metric object.
|
|
51
|
+
def initialize
|
|
52
|
+
@service = nil
|
|
53
|
+
@grpc = Google::Logging::V2::LogMetric.new
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# The client-assigned metric identifier. Metric identifiers are limited to
|
|
58
|
+
# 1000 characters and can include only the following characters: `A-Z`,
|
|
59
|
+
# `a-z`, `0-9`, and the special characters `_-.,+!*',()%/\`. The
|
|
60
|
+
# forward-slash character (`/`) denotes a hierarchy of name pieces, and it
|
|
61
|
+
# cannot be the first character of the name.
|
|
62
|
+
def name
|
|
63
|
+
grpc.name
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
##
|
|
67
|
+
# The description of this metric, which is used in documentation.
|
|
68
|
+
def description
|
|
69
|
+
grpc.description
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
##
|
|
73
|
+
# Updates the description of this metric, which is used in documentation.
|
|
74
|
+
def description= description
|
|
75
|
+
grpc.description = description
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
##
|
|
79
|
+
# An [advanced logs
|
|
80
|
+
# filter](https://cloud.google.com/logging/docs/view/advanced_filters).
|
|
81
|
+
def filter
|
|
82
|
+
grpc.filter
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
##
|
|
86
|
+
# Updates the [advanced logs
|
|
87
|
+
# filter](https://cloud.google.com/logging/docs/view/advanced_filters).
|
|
88
|
+
def filter= filter
|
|
89
|
+
grpc.filter = filter
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
##
|
|
93
|
+
# Updates the logs-based metric.
|
|
94
|
+
#
|
|
95
|
+
# @example
|
|
96
|
+
# require "gcloud"
|
|
97
|
+
#
|
|
98
|
+
# gcloud = Gcloud.new
|
|
99
|
+
# logging = gcloud.logging
|
|
100
|
+
# metric = logging.metric "severe_errors"
|
|
101
|
+
# metric.filter = "logName:syslog AND severity>=ERROR"
|
|
102
|
+
# metric.save
|
|
103
|
+
#
|
|
104
|
+
def save
|
|
105
|
+
ensure_service!
|
|
106
|
+
@grpc = service.update_metric name, description, filter
|
|
107
|
+
return true
|
|
108
|
+
rescue GRPC::BadStatus => e
|
|
109
|
+
raise Gcloud::Error.from_error(e)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
##
|
|
113
|
+
# Reloads the logs-based metric with current data from the Logging
|
|
114
|
+
# service.
|
|
115
|
+
#
|
|
116
|
+
# @example
|
|
117
|
+
# require "gcloud"
|
|
118
|
+
#
|
|
119
|
+
# gcloud = Gcloud.new
|
|
120
|
+
# logging = gcloud.logging
|
|
121
|
+
# metric = logging.metric "severe_errors"
|
|
122
|
+
# metric.filter = "Unwanted value"
|
|
123
|
+
# metric.reload!
|
|
124
|
+
# metric.filter #=> "logName:syslog"
|
|
125
|
+
#
|
|
126
|
+
def reload!
|
|
127
|
+
ensure_service!
|
|
128
|
+
@grpc = service.get_metric name
|
|
129
|
+
return true
|
|
130
|
+
rescue GRPC::BadStatus => e
|
|
131
|
+
raise Gcloud::Error.from_error(e)
|
|
132
|
+
end
|
|
133
|
+
alias_method :refresh!, :reload!
|
|
134
|
+
|
|
135
|
+
##
|
|
136
|
+
# Permanently deletes the logs-based metric.
|
|
137
|
+
#
|
|
138
|
+
# @return [Boolean] Returns `true` if the metric was deleted.
|
|
139
|
+
#
|
|
140
|
+
# @example
|
|
141
|
+
# require "gcloud"
|
|
142
|
+
#
|
|
143
|
+
# gcloud = Gcloud.new
|
|
144
|
+
# logging = gcloud.logging
|
|
145
|
+
# metric = logging.metric "severe_errors"
|
|
146
|
+
# metric.delete
|
|
147
|
+
#
|
|
148
|
+
def delete
|
|
149
|
+
ensure_service!
|
|
150
|
+
service.delete_metric name
|
|
151
|
+
return true
|
|
152
|
+
rescue GRPC::BadStatus => e
|
|
153
|
+
raise Gcloud::Error.from_error(e)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
##
|
|
157
|
+
# @private New Metric from a gRPC object.
|
|
158
|
+
def self.from_grpc grpc, service
|
|
159
|
+
new.tap do |m|
|
|
160
|
+
m.grpc = grpc
|
|
161
|
+
m.service = service
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
protected
|
|
166
|
+
|
|
167
|
+
##
|
|
168
|
+
# @private Raise an error unless an active connection to the service is
|
|
169
|
+
# available.
|
|
170
|
+
def ensure_service!
|
|
171
|
+
fail "Must have active connection to service" unless service
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Copyright 2016 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 "delegate"
|
|
17
|
+
|
|
18
|
+
module Gcloud
|
|
19
|
+
module Logging
|
|
20
|
+
class Metric
|
|
21
|
+
##
|
|
22
|
+
# Metric::List is a special case Array with additional values.
|
|
23
|
+
class List < DelegateClass(::Array)
|
|
24
|
+
##
|
|
25
|
+
# If not empty, indicates that there are more records that match
|
|
26
|
+
# the request and this value should be passed to continue.
|
|
27
|
+
attr_accessor :token
|
|
28
|
+
|
|
29
|
+
##
|
|
30
|
+
# @private Create a new Metric::List with an array of Metric instances.
|
|
31
|
+
def initialize arr = []
|
|
32
|
+
super arr
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
# Whether there is a next page of metrics.
|
|
37
|
+
def next?
|
|
38
|
+
!token.nil?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Retrieve the next page of metrics.
|
|
43
|
+
def next
|
|
44
|
+
return nil unless next?
|
|
45
|
+
ensure_service!
|
|
46
|
+
grpc = @service.list_metrics token: token
|
|
47
|
+
self.class.from_grpc grpc, @service
|
|
48
|
+
rescue GRPC::BadStatus => e
|
|
49
|
+
raise Gcloud::Error.from_error(e)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
##
|
|
53
|
+
# Retrieves all metrics by repeatedly loading {#next?} until {#next?}
|
|
54
|
+
# returns `false`. Returns the list instance for method chaining.
|
|
55
|
+
#
|
|
56
|
+
# @example
|
|
57
|
+
# require "gcloud"
|
|
58
|
+
#
|
|
59
|
+
# gcloud = Gcloud.new
|
|
60
|
+
# logging = gcloud.logging
|
|
61
|
+
# all_metrics = logging.metrics.all # Load all pages of metrics
|
|
62
|
+
#
|
|
63
|
+
def all
|
|
64
|
+
while next?
|
|
65
|
+
next_records = self.next
|
|
66
|
+
push(*next_records)
|
|
67
|
+
self.token = next_records.token
|
|
68
|
+
end
|
|
69
|
+
self
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
##
|
|
73
|
+
# @private New Metric::List from a
|
|
74
|
+
# Google::Logging::V2::ListLogMetricsResponse object.
|
|
75
|
+
def self.from_grpc grpc_list, service
|
|
76
|
+
metrics = new(Array(grpc_list.metrics).map do |grpc_metric|
|
|
77
|
+
Metric.from_grpc grpc_metric, service
|
|
78
|
+
end)
|
|
79
|
+
metrics.instance_eval do
|
|
80
|
+
@token = grpc_list.next_page_token
|
|
81
|
+
@token = nil if @token == ""
|
|
82
|
+
@service = service
|
|
83
|
+
end
|
|
84
|
+
metrics
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
protected
|
|
88
|
+
|
|
89
|
+
##
|
|
90
|
+
# @private Raise an error unless an active connection to the service is
|
|
91
|
+
# available.
|
|
92
|
+
def ensure_service!
|
|
93
|
+
fail "Must have active connection to service" unless @service
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
# Copyright 2016 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
|
+
require "gcloud/gce"
|
|
18
|
+
require "gcloud/logging/service"
|
|
19
|
+
require "gcloud/logging/credentials"
|
|
20
|
+
require "gcloud/logging/entry"
|
|
21
|
+
require "gcloud/logging/resource_descriptor"
|
|
22
|
+
require "gcloud/logging/sink"
|
|
23
|
+
require "gcloud/logging/metric"
|
|
24
|
+
require "gcloud/logging/logger"
|
|
25
|
+
|
|
26
|
+
module Gcloud
|
|
27
|
+
module Logging
|
|
28
|
+
##
|
|
29
|
+
# # Project
|
|
30
|
+
#
|
|
31
|
+
# Projects are top-level containers in Google Cloud Platform. They store
|
|
32
|
+
# information about billing and authorized users, and they control access to
|
|
33
|
+
# Google Cloud Logging resources. Each project has a friendly name and a
|
|
34
|
+
# unique ID. Projects can be created only in the [Google Developers
|
|
35
|
+
# Console](https://console.developers.google.com). See {Gcloud#logging}.
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
# require "gcloud"
|
|
39
|
+
#
|
|
40
|
+
# gcloud = Gcloud.new
|
|
41
|
+
# logging = gcloud.logging
|
|
42
|
+
# entries = logging.entries
|
|
43
|
+
#
|
|
44
|
+
# See Gcloud#logging
|
|
45
|
+
class Project
|
|
46
|
+
##
|
|
47
|
+
# @private The gRPC Service object.
|
|
48
|
+
attr_accessor :service
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# @private Creates a new Connection instance.
|
|
52
|
+
def initialize project, credentials
|
|
53
|
+
project = project.to_s # Always cast to a string
|
|
54
|
+
fail ArgumentError, "project is missing" if project.empty?
|
|
55
|
+
@service = Service.new project, credentials
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# The ID of the current project.
|
|
60
|
+
#
|
|
61
|
+
# @return [String] the Google Cloud project ID
|
|
62
|
+
#
|
|
63
|
+
# @example
|
|
64
|
+
# require "gcloud"
|
|
65
|
+
#
|
|
66
|
+
# gcloud = Gcloud.new "my-project", "/path/to/keyfile.json"
|
|
67
|
+
# logging = gcloud.logging
|
|
68
|
+
#
|
|
69
|
+
# logging.project #=> "my-project"
|
|
70
|
+
#
|
|
71
|
+
def project
|
|
72
|
+
service.project
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
##
|
|
76
|
+
# @private Default project.
|
|
77
|
+
def self.default_project
|
|
78
|
+
ENV["LOGGING_PROJECT"] ||
|
|
79
|
+
ENV["GCLOUD_PROJECT"] ||
|
|
80
|
+
ENV["GOOGLE_CLOUD_PROJECT"] ||
|
|
81
|
+
Gcloud::GCE.project_id
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
##
|
|
85
|
+
# Lists log entries. Use this method to retrieve log entries from Cloud
|
|
86
|
+
# Logging.
|
|
87
|
+
#
|
|
88
|
+
# @param [String, Array] projects One or more project IDs or project
|
|
89
|
+
# numbers from which to retrieve log entries. If `nil`, the ID of the
|
|
90
|
+
# receiving project instance will be used.
|
|
91
|
+
# @param [String] filter An [advanced logs
|
|
92
|
+
# filter](https://cloud.google.com/logging/docs/view/advanced_filters).
|
|
93
|
+
# The filter is compared against all log entries in the projects
|
|
94
|
+
# specified by `projects`. Only entries that match the filter are
|
|
95
|
+
# retrieved. An empty filter matches all log entries.
|
|
96
|
+
# @param [String] order How the results should be sorted. Presently, the
|
|
97
|
+
# only permitted values are "timestamp" (default) and "timestamp desc".
|
|
98
|
+
# @param [String] token A previously-returned page token representing part
|
|
99
|
+
# of the larger set of results to view.
|
|
100
|
+
# @param [Integer] max Maximum number of entries to return.
|
|
101
|
+
#
|
|
102
|
+
# @return [Array<Gcloud::Logging::Entry>] (See
|
|
103
|
+
# {Gcloud::Logging::Entry::List})
|
|
104
|
+
#
|
|
105
|
+
# @example
|
|
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
|
+
# @example You can use a filter to narrow results to a single log.
|
|
116
|
+
# require "gcloud"
|
|
117
|
+
#
|
|
118
|
+
# gcloud = Gcloud.new
|
|
119
|
+
# logging = gcloud.logging
|
|
120
|
+
# entries = logging.entries filter: "log:syslog"
|
|
121
|
+
# entries.each do |e|
|
|
122
|
+
# puts "[#{e.timestamp}] #{e.payload.inspect}"
|
|
123
|
+
# end
|
|
124
|
+
#
|
|
125
|
+
# @example You can also order the results by timestamp.
|
|
126
|
+
# require "gcloud"
|
|
127
|
+
#
|
|
128
|
+
# gcloud = Gcloud.new
|
|
129
|
+
# logging = gcloud.logging
|
|
130
|
+
# entries = logging.entries order: "timestamp desc"
|
|
131
|
+
# entries.each do |e|
|
|
132
|
+
# puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
|
|
133
|
+
# end
|
|
134
|
+
#
|
|
135
|
+
# @example With pagination: (See {Gcloud::Logging::Entry::List})
|
|
136
|
+
# require "gcloud"
|
|
137
|
+
#
|
|
138
|
+
# gcloud = Gcloud.new
|
|
139
|
+
# logging = gcloud.logging
|
|
140
|
+
# entries = logging.entries
|
|
141
|
+
# loop do
|
|
142
|
+
# entries.each do |e|
|
|
143
|
+
# puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
|
|
144
|
+
# end
|
|
145
|
+
# break unless entries.next?
|
|
146
|
+
# entries = entries.next
|
|
147
|
+
# end
|
|
148
|
+
#
|
|
149
|
+
def entries projects: nil, filter: nil, order: nil, token: nil, max: nil
|
|
150
|
+
ensure_service!
|
|
151
|
+
list_grpc = service.list_entries projects: projects, filter: filter,
|
|
152
|
+
order: order, token: token, max: max
|
|
153
|
+
Entry::List.from_grpc list_grpc, service, projects: projects, max: max,
|
|
154
|
+
filter: filter, order: order
|
|
155
|
+
rescue GRPC::BadStatus => e
|
|
156
|
+
raise Gcloud::Error.from_error(e)
|
|
157
|
+
end
|
|
158
|
+
alias_method :find_entries, :entries
|
|
159
|
+
|
|
160
|
+
##
|
|
161
|
+
# Creates an new Entry instance that may be populated and written to the
|
|
162
|
+
# Cloud Logging service. The {Entry#resource} attribute is pre-populated
|
|
163
|
+
# with a new {Gcloud::Logging::Resource} instance. Equivalent to calling
|
|
164
|
+
# `Gcloud::Logging::Entry.new`.
|
|
165
|
+
#
|
|
166
|
+
# @return [Gcloud::Logging::Entry] a new Entry instance
|
|
167
|
+
#
|
|
168
|
+
# @example
|
|
169
|
+
# require "gcloud"
|
|
170
|
+
#
|
|
171
|
+
# gcloud = Gcloud.new
|
|
172
|
+
# logging = gcloud.logging
|
|
173
|
+
#
|
|
174
|
+
# entry = logging.entry
|
|
175
|
+
# entry.severity = :INFO
|
|
176
|
+
# entry.payload = "Job started."
|
|
177
|
+
#
|
|
178
|
+
# logging.write_entries entry
|
|
179
|
+
#
|
|
180
|
+
def entry
|
|
181
|
+
Entry.new
|
|
182
|
+
end
|
|
183
|
+
alias_method :new_entry, :entry
|
|
184
|
+
|
|
185
|
+
##
|
|
186
|
+
# Writes log entries to the Cloud Logging service.
|
|
187
|
+
#
|
|
188
|
+
# If you write a collection of log entries, you can provide the log name,
|
|
189
|
+
# resource, and/or labels hash to be used for all of the entries, and omit
|
|
190
|
+
# these values from the individual entries.
|
|
191
|
+
#
|
|
192
|
+
# @param [Gcloud::Logging::Entry, Array<Gcloud::Logging::Entry>] entries
|
|
193
|
+
# One or more entry objects to write. The log entries must have values
|
|
194
|
+
# for all required fields.
|
|
195
|
+
# @param [String] log_name A default log ID for those log entries in
|
|
196
|
+
# `entries` that do not specify their own `log_name`. See also
|
|
197
|
+
# {Entry#log_name=}.
|
|
198
|
+
# @param [Resource] resource A default monitored resource for those log
|
|
199
|
+
# entries in entries that do not specify their own resource. See also
|
|
200
|
+
# {Entry#resource}.
|
|
201
|
+
# @param [Hash{Symbol,String => String}] labels User-defined `key:value`
|
|
202
|
+
# items that are added to the `labels` field of each log entry in
|
|
203
|
+
# `entries`, except when a log entry specifies its own `key:value` item
|
|
204
|
+
# with the same key. See also {Entry#labels=}.
|
|
205
|
+
#
|
|
206
|
+
# @return [Boolean] Returns `true` if the entries were written.
|
|
207
|
+
#
|
|
208
|
+
# @example
|
|
209
|
+
# require "gcloud"
|
|
210
|
+
#
|
|
211
|
+
# gcloud = Gcloud.new
|
|
212
|
+
# logging = gcloud.logging
|
|
213
|
+
#
|
|
214
|
+
# entry = logging.entry
|
|
215
|
+
# entry.payload = "Job started."
|
|
216
|
+
# entry.log_name = "my_app_log"
|
|
217
|
+
# entry.resource.type = "gae_app"
|
|
218
|
+
# entry.resource.labels[:module_id] = "1"
|
|
219
|
+
# entry.resource.labels[:version_id] = "20150925t173233"
|
|
220
|
+
#
|
|
221
|
+
# logging.write_entries entry
|
|
222
|
+
#
|
|
223
|
+
# @example Optionally pass log name, resource, and labels for all entries.
|
|
224
|
+
# require "gcloud"
|
|
225
|
+
#
|
|
226
|
+
# gcloud = Gcloud.new
|
|
227
|
+
# logging = gcloud.logging
|
|
228
|
+
#
|
|
229
|
+
# entry1 = logging.entry
|
|
230
|
+
# entry1.payload = "Job started."
|
|
231
|
+
# entry2 = logging.entry
|
|
232
|
+
# entry2.payload = "Job completed."
|
|
233
|
+
# labels = { job_size: "large", job_code: "red" }
|
|
234
|
+
#
|
|
235
|
+
# resource = logging.resource "gae_app",
|
|
236
|
+
# "module_id" => "1",
|
|
237
|
+
# "version_id" => "20150925t173233"
|
|
238
|
+
#
|
|
239
|
+
# logging.write_entries [entry1, entry2],
|
|
240
|
+
# log_name: "my_app_log",
|
|
241
|
+
# resource: resource,
|
|
242
|
+
# labels: labels
|
|
243
|
+
#
|
|
244
|
+
def write_entries entries, log_name: nil, resource: nil, labels: nil
|
|
245
|
+
ensure_service!
|
|
246
|
+
service.write_entries Array(entries).map(&:to_grpc),
|
|
247
|
+
log_name: log_name, resource: resource,
|
|
248
|
+
labels: labels
|
|
249
|
+
return true
|
|
250
|
+
rescue GRPC::BadStatus => e
|
|
251
|
+
raise Gcloud::Error.from_error(e)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
##
|
|
255
|
+
# Creates a logger instance that is API-compatible with Ruby's standard
|
|
256
|
+
# library [Logger](http://ruby-doc.org/stdlib/libdoc/logger/rdoc).
|
|
257
|
+
#
|
|
258
|
+
# @param [String] log_name A log resource name to be associated with the
|
|
259
|
+
# written log entries.
|
|
260
|
+
# @param [Gcloud::Logging::Resource] resource The monitored resource to be
|
|
261
|
+
# associated with written log entries.
|
|
262
|
+
# @param [Hash] labels A set of user-defined data to be associated with
|
|
263
|
+
# written log entries.
|
|
264
|
+
#
|
|
265
|
+
# @return [Gcloud::Logging::Logger] a Logger object that can be used in
|
|
266
|
+
# place of a ruby standard library logger object.
|
|
267
|
+
#
|
|
268
|
+
# @example
|
|
269
|
+
# require "gcloud"
|
|
270
|
+
#
|
|
271
|
+
# gcloud = Gcloud.new
|
|
272
|
+
# logging = gcloud.logging
|
|
273
|
+
#
|
|
274
|
+
# resource = logging.resource "gae_app",
|
|
275
|
+
# module_id: "1",
|
|
276
|
+
# version_id: "20150925t173233"
|
|
277
|
+
#
|
|
278
|
+
# logger = logging.logger "my_app_log", resource, env: :production
|
|
279
|
+
# logger.info "Job started."
|
|
280
|
+
#
|
|
281
|
+
def logger log_name, resource, labels = {}
|
|
282
|
+
Logger.new self, log_name, resource, labels
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
##
|
|
286
|
+
# Deletes a log and all its log entries. The log will reappear if it
|
|
287
|
+
# receives new entries.
|
|
288
|
+
#
|
|
289
|
+
# @param [String] name The name of the log, which may be the full path
|
|
290
|
+
# including the project ID (`projects/<project-id>/logs/<log-id>`), or
|
|
291
|
+
# just the short name (`<log-id>`), in which case the beginning of the
|
|
292
|
+
# path will be automatically prepended, using the ID of the current
|
|
293
|
+
# project.
|
|
294
|
+
#
|
|
295
|
+
# @return [Boolean] Returns `true` if the log and all its log entries were
|
|
296
|
+
# deleted.
|
|
297
|
+
#
|
|
298
|
+
# @example
|
|
299
|
+
# require "gcloud"
|
|
300
|
+
#
|
|
301
|
+
# gcloud = Gcloud.new
|
|
302
|
+
# logging = gcloud.logging
|
|
303
|
+
# logging.delete_log "my_app_log"
|
|
304
|
+
#
|
|
305
|
+
def delete_log name
|
|
306
|
+
ensure_service!
|
|
307
|
+
service.delete_log name
|
|
308
|
+
return true
|
|
309
|
+
rescue GRPC::BadStatus => e
|
|
310
|
+
raise Gcloud::Error.from_error(e)
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
##
|
|
314
|
+
# Retrieves the list of monitored resource descriptors that are used by
|
|
315
|
+
# Google Cloud Logging.
|
|
316
|
+
#
|
|
317
|
+
# @see https://cloud.google.com/logging/docs/api/introduction_v2#monitored_resources
|
|
318
|
+
# Monitored Resources
|
|
319
|
+
#
|
|
320
|
+
# @param [String] token A previously-returned page token representing part
|
|
321
|
+
# of the larger set of results to view.
|
|
322
|
+
# @param [Integer] max Maximum number of resource descriptors to return.
|
|
323
|
+
#
|
|
324
|
+
# @return [Array<Gcloud::Logging::ResourceDescriptor>] (See
|
|
325
|
+
# {Gcloud::Logging::ResourceDescriptor::List})
|
|
326
|
+
#
|
|
327
|
+
# @example
|
|
328
|
+
# require "gcloud"
|
|
329
|
+
#
|
|
330
|
+
# gcloud = Gcloud.new
|
|
331
|
+
# logging = gcloud.logging
|
|
332
|
+
# resource_descriptors = logging.resource_descriptors
|
|
333
|
+
# resource_descriptors.each do |rd|
|
|
334
|
+
# label_keys = rd.labels.map(&:key).join(", ")
|
|
335
|
+
# puts "#{rd.type} (#{label_keys})"
|
|
336
|
+
# end
|
|
337
|
+
#
|
|
338
|
+
# @example Pagination: (See {Gcloud::Logging::ResourceDescriptor::List})
|
|
339
|
+
# require "gcloud"
|
|
340
|
+
#
|
|
341
|
+
# gcloud = Gcloud.new
|
|
342
|
+
# logging = gcloud.logging
|
|
343
|
+
# resource_descriptors = logging.resource_descriptors
|
|
344
|
+
# loop do
|
|
345
|
+
# resource_descriptors.each do |rd|
|
|
346
|
+
# puts rd.type
|
|
347
|
+
# end
|
|
348
|
+
# break unless resource_descriptors.next?
|
|
349
|
+
# resource_descriptors = resource_descriptors.next
|
|
350
|
+
# end
|
|
351
|
+
#
|
|
352
|
+
def resource_descriptors token: nil, max: nil
|
|
353
|
+
ensure_service!
|
|
354
|
+
list_grpc = service.list_resource_descriptors token: token, max: max
|
|
355
|
+
ResourceDescriptor::List.from_grpc list_grpc, service
|
|
356
|
+
rescue GRPC::BadStatus => e
|
|
357
|
+
raise Gcloud::Error.from_error(e)
|
|
358
|
+
end
|
|
359
|
+
alias_method :find_resource_descriptors, :resource_descriptors
|
|
360
|
+
|
|
361
|
+
##
|
|
362
|
+
# Creates a new monitored resource instance.
|
|
363
|
+
#
|
|
364
|
+
# @return [Gcloud::Logging::Resource]
|
|
365
|
+
#
|
|
366
|
+
# @example
|
|
367
|
+
# require "gcloud"
|
|
368
|
+
#
|
|
369
|
+
# gcloud = Gcloud.new
|
|
370
|
+
# logging = gcloud.logging
|
|
371
|
+
#
|
|
372
|
+
# resource = logging.resource "gae_app",
|
|
373
|
+
# "module_id" => "1",
|
|
374
|
+
# "version_id" => "20150925t173233"
|
|
375
|
+
#
|
|
376
|
+
def resource type, labels = {}
|
|
377
|
+
Resource.new.tap do |r|
|
|
378
|
+
r.type = type
|
|
379
|
+
r.labels = labels
|
|
380
|
+
end
|
|
381
|
+
end
|
|
382
|
+
alias_method :new_resource, :resource
|
|
383
|
+
|
|
384
|
+
##
|
|
385
|
+
# Retrieves the list of sinks belonging to the project.
|
|
386
|
+
#
|
|
387
|
+
# @param [String] token A previously-returned page token representing part
|
|
388
|
+
# of the larger set of results to view.
|
|
389
|
+
# @param [Integer] max Maximum number of sinks to return.
|
|
390
|
+
#
|
|
391
|
+
# @return [Array<Gcloud::Logging::Sink>] (See
|
|
392
|
+
# {Gcloud::Logging::Sink::List})
|
|
393
|
+
#
|
|
394
|
+
# @example
|
|
395
|
+
# require "gcloud"
|
|
396
|
+
#
|
|
397
|
+
# gcloud = Gcloud.new
|
|
398
|
+
# logging = gcloud.logging
|
|
399
|
+
# sinks = logging.sinks
|
|
400
|
+
# sinks.each do |s|
|
|
401
|
+
# puts "#{s.name}: #{s.filter} -> #{s.destination}"
|
|
402
|
+
# end
|
|
403
|
+
#
|
|
404
|
+
# @example With pagination: (See {Gcloud::Logging::Sink::List})
|
|
405
|
+
# require "gcloud"
|
|
406
|
+
#
|
|
407
|
+
# gcloud = Gcloud.new
|
|
408
|
+
# logging = gcloud.logging
|
|
409
|
+
# sinks = logging.sinks
|
|
410
|
+
# loop do
|
|
411
|
+
# sinks.each do |s|
|
|
412
|
+
# puts "#{s.name}: #{s.filter} -> #{s.destination}"
|
|
413
|
+
# end
|
|
414
|
+
# break unless sinks.next?
|
|
415
|
+
# sinks = sinks.next
|
|
416
|
+
# end
|
|
417
|
+
#
|
|
418
|
+
def sinks token: nil, max: nil
|
|
419
|
+
ensure_service!
|
|
420
|
+
list_grpc = service.list_sinks token: token, max: max
|
|
421
|
+
Sink::List.from_grpc list_grpc, service
|
|
422
|
+
rescue GRPC::BadStatus => e
|
|
423
|
+
raise Gcloud::Error.from_error(e)
|
|
424
|
+
end
|
|
425
|
+
alias_method :find_sinks, :sinks
|
|
426
|
+
|
|
427
|
+
##
|
|
428
|
+
# Creates a new project sink. When you create a sink, only new log entries
|
|
429
|
+
# that match the sink's filter are exported. Cloud Logging does not send
|
|
430
|
+
# previously-ingested log entries to the sink's destination.
|
|
431
|
+
#
|
|
432
|
+
# Before creating the sink, ensure that you have granted
|
|
433
|
+
# `cloud-logs@google.com` permission to write logs to the destination. See
|
|
434
|
+
# [Permissions for writing exported
|
|
435
|
+
# logs](https://cloud.google.com/logging/docs/export/configure_export#setting_product_name_short_permissions_for_writing_exported_logs).
|
|
436
|
+
#
|
|
437
|
+
# @see https://cloud.google.com/logging/docs/api/tasks/exporting-logs
|
|
438
|
+
# Exporting Logs With Sinks
|
|
439
|
+
# @see https://cloud.google.com/logging/docs/api/introduction_v2#kinds_of_log_sinks
|
|
440
|
+
# Kinds of log sinks (API V2)
|
|
441
|
+
# @see https://cloud.google.com/logging/docs/api/#sinks Sinks (API V1)
|
|
442
|
+
# @see https://cloud.google.com/logging/docs/export/configure_export#setting_product_name_short_permissions_for_writing_exported_logs
|
|
443
|
+
# Permissions for writing exported logs
|
|
444
|
+
#
|
|
445
|
+
# @param [String] name The client-assigned sink identifier. Sink
|
|
446
|
+
# identifiers are limited to 1000 characters and can include only the
|
|
447
|
+
# following characters: `A-Z`, `a-z`, `0-9`, and the special characters
|
|
448
|
+
# `_-.`.
|
|
449
|
+
# @param [String] destination The resource name of the export destination.
|
|
450
|
+
# See [About
|
|
451
|
+
# sinks](https://cloud.google.com/logging/docs/api/tasks/exporting-logs#about_sinks)
|
|
452
|
+
# for examples.
|
|
453
|
+
# @param [String, nil] filter An [advanced logs
|
|
454
|
+
# filter](https://cloud.google.com/logging/docs/view/advanced_filters)
|
|
455
|
+
# that defines the log entries to be exported. The filter must be
|
|
456
|
+
# consistent with the log entry format designed by the `version`
|
|
457
|
+
# parameter, regardless of the format of the log entry that was
|
|
458
|
+
# originally written to Cloud Logging.
|
|
459
|
+
# @param [Symbol] version The log entry version used when exporting log
|
|
460
|
+
# entries from this sink. This version does not have to correspond to
|
|
461
|
+
# the version of the log entry when it was written to Cloud Logging.
|
|
462
|
+
# Accepted values are `:unspecified`, `:v2`, and `:v1`. Version 2 is
|
|
463
|
+
# currently the preferred format. An unspecified version format
|
|
464
|
+
# currently defaults to V2 in the service. The default value is
|
|
465
|
+
# `:unspecified`.
|
|
466
|
+
#
|
|
467
|
+
# @return [Gcloud::Logging::Sink] a project sink
|
|
468
|
+
#
|
|
469
|
+
# @example
|
|
470
|
+
# require "gcloud"
|
|
471
|
+
#
|
|
472
|
+
# gcloud = Gcloud.new
|
|
473
|
+
# logging = gcloud.logging
|
|
474
|
+
# storage = gcloud.storage
|
|
475
|
+
#
|
|
476
|
+
# bucket = storage.create_bucket "my-logs-bucket"
|
|
477
|
+
#
|
|
478
|
+
# # Grant owner permission to Cloud Logging service
|
|
479
|
+
# email = "cloud-logs@google.com"
|
|
480
|
+
# bucket.acl.add_owner "group-#{email}"
|
|
481
|
+
#
|
|
482
|
+
# sink = logging.create_sink "my-sink",
|
|
483
|
+
# "storage.googleapis.com/#{bucket.id}"
|
|
484
|
+
#
|
|
485
|
+
def create_sink name, destination, filter: nil, version: :unspecified
|
|
486
|
+
version = Sink.resolve_version version
|
|
487
|
+
ensure_service!
|
|
488
|
+
grpc = service.create_sink name, destination, filter, version
|
|
489
|
+
Sink.from_grpc grpc, service
|
|
490
|
+
rescue GRPC::BadStatus => e
|
|
491
|
+
raise Gcloud::Error.from_error(e)
|
|
492
|
+
end
|
|
493
|
+
alias_method :new_sink, :create_sink
|
|
494
|
+
|
|
495
|
+
##
|
|
496
|
+
# Retrieves a sink by name.
|
|
497
|
+
#
|
|
498
|
+
# @param [String] sink_name Name of a sink.
|
|
499
|
+
#
|
|
500
|
+
# @return [Gcloud::Logging::Sink, nil] Returns `nil` if the sink does not
|
|
501
|
+
# exist.
|
|
502
|
+
#
|
|
503
|
+
# @example
|
|
504
|
+
# require "gcloud"
|
|
505
|
+
#
|
|
506
|
+
# gcloud = Gcloud.new
|
|
507
|
+
# logging = gcloud.logging
|
|
508
|
+
# sink = logging.sink "existing-sink"
|
|
509
|
+
#
|
|
510
|
+
# @example By default `nil` will be returned if the sink does not exist.
|
|
511
|
+
# require "gcloud"
|
|
512
|
+
#
|
|
513
|
+
# gcloud = Gcloud.new
|
|
514
|
+
# logging = gcloud.logging
|
|
515
|
+
# sink = logging.sink "non-existing-sink" #=> nil
|
|
516
|
+
#
|
|
517
|
+
def sink sink_name
|
|
518
|
+
ensure_service!
|
|
519
|
+
grpc = service.get_sink sink_name
|
|
520
|
+
Sink.from_grpc grpc, service
|
|
521
|
+
rescue GRPC::BadStatus => e
|
|
522
|
+
return nil if e.code == 5
|
|
523
|
+
raise Gcloud::Error.from_error(e)
|
|
524
|
+
end
|
|
525
|
+
alias_method :get_sink, :sink
|
|
526
|
+
alias_method :find_sink, :sink
|
|
527
|
+
|
|
528
|
+
##
|
|
529
|
+
# Retrieves the list of metrics belonging to the project.
|
|
530
|
+
#
|
|
531
|
+
# @param [String] token A previously-returned page token representing part
|
|
532
|
+
# of the larger set of results to view.
|
|
533
|
+
# @param [Integer] max Maximum number of metrics to return.
|
|
534
|
+
#
|
|
535
|
+
# @return [Array<Gcloud::Logging::Metric>] (See
|
|
536
|
+
# {Gcloud::Logging::Metric::List})
|
|
537
|
+
#
|
|
538
|
+
# @example
|
|
539
|
+
# require "gcloud"
|
|
540
|
+
#
|
|
541
|
+
# gcloud = Gcloud.new
|
|
542
|
+
# logging = gcloud.logging
|
|
543
|
+
# metrics = logging.metrics
|
|
544
|
+
# metrics.each do |m|
|
|
545
|
+
# puts "#{m.name}: #{m.filter}"
|
|
546
|
+
# end
|
|
547
|
+
#
|
|
548
|
+
# @example With pagination: (See {Gcloud::Logging::Metric::List})
|
|
549
|
+
# require "gcloud"
|
|
550
|
+
#
|
|
551
|
+
# gcloud = Gcloud.new
|
|
552
|
+
# logging = gcloud.logging
|
|
553
|
+
# metrics = logging.metrics
|
|
554
|
+
# loop do
|
|
555
|
+
# metrics.each do |m|
|
|
556
|
+
# puts "#{m.name}: #{m.filter}"
|
|
557
|
+
# end
|
|
558
|
+
# break unless metrics.next?
|
|
559
|
+
# metrics = metrics.next
|
|
560
|
+
# end
|
|
561
|
+
#
|
|
562
|
+
def metrics token: nil, max: nil
|
|
563
|
+
ensure_service!
|
|
564
|
+
grpc = service.list_metrics token: token, max: max
|
|
565
|
+
Metric::List.from_grpc grpc, service
|
|
566
|
+
rescue GRPC::BadStatus => e
|
|
567
|
+
raise Gcloud::Error.from_error(e)
|
|
568
|
+
end
|
|
569
|
+
alias_method :find_metrics, :metrics
|
|
570
|
+
|
|
571
|
+
##
|
|
572
|
+
# Creates a new logs-based metric for Google Cloud Monitoring.
|
|
573
|
+
#
|
|
574
|
+
# @see https://cloud.google.com/logging/docs/view/logs_based_metrics
|
|
575
|
+
# Logs-based Metrics
|
|
576
|
+
# @see https://cloud.google.com/monitoring/docs Google Cloud Monitoring
|
|
577
|
+
#
|
|
578
|
+
# @param [String] name The client-assigned metric identifier. Metric
|
|
579
|
+
# identifiers are limited to 1000 characters and can include only the
|
|
580
|
+
# following characters: `A-Z`, `a-z`, `0-9`, and the special characters
|
|
581
|
+
# `_-.,+!*',()%/\`. The forward-slash character (`/`) denotes a
|
|
582
|
+
# hierarchy of name pieces, and it cannot be the first character of the
|
|
583
|
+
# name.
|
|
584
|
+
# @param [String] filter An [advanced logs
|
|
585
|
+
# filter](https://cloud.google.com/logging/docs/view/advanced_filters).
|
|
586
|
+
# @param [String, nil] description A description of this metric, which is
|
|
587
|
+
# used in documentation.
|
|
588
|
+
#
|
|
589
|
+
# @return [Gcloud::Logging::Metric]
|
|
590
|
+
#
|
|
591
|
+
# @example
|
|
592
|
+
# require "gcloud"
|
|
593
|
+
#
|
|
594
|
+
# gcloud = Gcloud.new
|
|
595
|
+
# logging = gcloud.logging
|
|
596
|
+
# metric = logging.create_metric "errors", "severity>=ERROR"
|
|
597
|
+
#
|
|
598
|
+
def create_metric name, filter, description: nil
|
|
599
|
+
ensure_service!
|
|
600
|
+
grpc = service.create_metric name, filter, description
|
|
601
|
+
Metric.from_grpc grpc, service
|
|
602
|
+
rescue GRPC::BadStatus => e
|
|
603
|
+
raise Gcloud::Error.from_error(e)
|
|
604
|
+
end
|
|
605
|
+
alias_method :new_metric, :create_metric
|
|
606
|
+
|
|
607
|
+
##
|
|
608
|
+
# Retrieves metric by name.
|
|
609
|
+
#
|
|
610
|
+
# @param [String] name Name of a metric.
|
|
611
|
+
#
|
|
612
|
+
# @return [Gcloud::Logging::Metric, nil] Returns `nil` if metric does not
|
|
613
|
+
# exist.
|
|
614
|
+
#
|
|
615
|
+
# @example
|
|
616
|
+
# require "gcloud"
|
|
617
|
+
#
|
|
618
|
+
# gcloud = Gcloud.new
|
|
619
|
+
# logging = gcloud.logging
|
|
620
|
+
# metric = logging.metric "existing_metric"
|
|
621
|
+
#
|
|
622
|
+
# @example By default `nil` will be returned if the metric does not exist.
|
|
623
|
+
# require "gcloud"
|
|
624
|
+
#
|
|
625
|
+
# gcloud = Gcloud.new
|
|
626
|
+
# logging = gcloud.logging
|
|
627
|
+
# metric = logging.metric "non_existing_metric" #=> nil
|
|
628
|
+
#
|
|
629
|
+
def metric name
|
|
630
|
+
ensure_service!
|
|
631
|
+
grpc = service.get_metric name
|
|
632
|
+
Metric.from_grpc grpc, service
|
|
633
|
+
rescue GRPC::BadStatus => e
|
|
634
|
+
return nil if e.code == 5
|
|
635
|
+
raise Gcloud::Error.from_error(e)
|
|
636
|
+
end
|
|
637
|
+
alias_method :get_metric, :metric
|
|
638
|
+
alias_method :find_metric, :metric
|
|
639
|
+
|
|
640
|
+
protected
|
|
641
|
+
|
|
642
|
+
##
|
|
643
|
+
# @private Raise an error unless an active connection to the service is
|
|
644
|
+
# available.
|
|
645
|
+
def ensure_service!
|
|
646
|
+
fail "Must have active connection to service" unless service
|
|
647
|
+
end
|
|
648
|
+
end
|
|
649
|
+
end
|
|
650
|
+
end
|