fluent-plugin-google-cloud 0.12.11 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +83 -62
- data/fluent-plugin-google-cloud.gemspec +11 -15
- data/lib/fluent/plugin/filter_add_insert_ids.rb +0 -3
- data/lib/fluent/plugin/out_google_cloud.rb +53 -53
- data/lib/fluent/plugin/statusz.rb +4 -2
- data/test/plugin/base_test.rb +5 -2
- data/test/plugin/constants.rb +3 -14
- data/test/plugin/test_out_google_cloud.rb +4 -4
- data/test/plugin/test_out_google_cloud_grpc.rb +10 -8
- data/test/plugin/utils.rb +1 -2
- metadata +42 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c68b17bd8639e6e1c951fe8a6c910433fde73fbdec4d300c68d6bf3418e956a3
|
4
|
+
data.tar.gz: 55ecbf8dc1fa3c947cb122b7a5f61764e75fc0cfa8186fb76f80134122c2065f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f33ba5df092033dd0b038445eac3212ba8d9fc9ffd6f93ec57e54a952850e754a09c4fdf00bb831d0f1ce6a1d73ed5a2395a53b0f52bdfa4aac8b58b3ddd72f4
|
7
|
+
data.tar.gz: 9e39400962a03ab8babd674984601a3080e524188b4fd015189dfe2f17808397a00160a37923a6cb3e5a51019879ecaf5a226f518291168b867cfa1ccfb9427a
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-google-cloud (0.
|
4
|
+
fluent-plugin-google-cloud (0.13.0)
|
5
5
|
fluentd (= 1.13.3)
|
6
|
-
google-api-client (= 0.
|
7
|
-
google-cloud-logging (=
|
8
|
-
google-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
google-api-client (= 0.53.0)
|
7
|
+
google-cloud-logging (= 2.3.2)
|
8
|
+
google-cloud-monitoring-v3 (= 0.10.0)
|
9
|
+
google-protobuf (= 3.22.1)
|
10
|
+
googleapis-common-protos (= 1.4.0)
|
11
|
+
googleauth (= 1.3.0)
|
12
|
+
grpc (= 1.52.0)
|
12
13
|
json (= 2.6.3)
|
13
14
|
opencensus (= 0.5.0)
|
14
15
|
opencensus-stackdriver (= 0.4.1)
|
@@ -16,7 +17,12 @@ PATH
|
|
16
17
|
GEM
|
17
18
|
remote: https://rubygems.org/
|
18
19
|
specs:
|
19
|
-
|
20
|
+
activesupport (7.0.5)
|
21
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
22
|
+
i18n (>= 1.6, < 2)
|
23
|
+
minitest (>= 5.1)
|
24
|
+
tzinfo (~> 2.0)
|
25
|
+
addressable (2.8.4)
|
20
26
|
public_suffix (>= 2.0.2, < 6.0)
|
21
27
|
ast (2.4.2)
|
22
28
|
concurrent-ruby (1.2.2)
|
@@ -31,8 +37,12 @@ GEM
|
|
31
37
|
rexml
|
32
38
|
declarative (0.0.20)
|
33
39
|
docile (1.4.0)
|
34
|
-
faraday (
|
35
|
-
|
40
|
+
faraday (2.7.5)
|
41
|
+
faraday-net_http (>= 2.0, < 3.1)
|
42
|
+
ruby2_keywords (>= 0.0.4)
|
43
|
+
faraday-net_http (3.0.2)
|
44
|
+
faraday-retry (2.2.0)
|
45
|
+
faraday (~> 2.0)
|
36
46
|
fluentd (1.13.3)
|
37
47
|
bundler
|
38
48
|
cool.io (>= 1.4.5, < 2.0.0)
|
@@ -45,76 +55,87 @@ GEM
|
|
45
55
|
tzinfo-data (~> 1.0)
|
46
56
|
webrick (>= 1.4.2, < 1.8.0)
|
47
57
|
yajl-ruby (~> 1.0)
|
48
|
-
gapic-common (0.
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
58
|
+
gapic-common (0.19.1)
|
59
|
+
faraday (>= 1.9, < 3.a)
|
60
|
+
faraday-retry (>= 1.0, < 3.a)
|
61
|
+
google-protobuf (~> 3.14)
|
62
|
+
googleapis-common-protos (>= 1.3.12, < 2.a)
|
63
|
+
googleapis-common-protos-types (>= 1.3.1, < 2.a)
|
64
|
+
googleauth (~> 1.0)
|
65
|
+
grpc (~> 1.36)
|
66
|
+
gems (1.2.0)
|
67
|
+
google-api-client (0.53.0)
|
68
|
+
google-apis-core (~> 0.1)
|
69
|
+
google-apis-generator (~> 0.1)
|
70
|
+
google-apis-core (0.11.0)
|
55
71
|
addressable (~> 2.5, >= 2.5.1)
|
56
|
-
googleauth (
|
57
|
-
httpclient (>= 2.8.1, < 3.
|
72
|
+
googleauth (>= 0.16.2, < 2.a)
|
73
|
+
httpclient (>= 2.8.1, < 3.a)
|
58
74
|
mini_mime (~> 1.0)
|
59
75
|
representable (~> 3.0)
|
60
|
-
retriable (>= 2.0, < 4.
|
76
|
+
retriable (>= 2.0, < 4.a)
|
61
77
|
rexml
|
62
|
-
|
78
|
+
webrick
|
79
|
+
google-apis-discovery_v1 (0.14.0)
|
80
|
+
google-apis-core (>= 0.11.0, < 2.a)
|
81
|
+
google-apis-generator (0.12.0)
|
82
|
+
activesupport (>= 5.0)
|
83
|
+
gems (~> 1.2)
|
84
|
+
google-apis-core (>= 0.11.0, < 2.a)
|
85
|
+
google-apis-discovery_v1 (~> 0.5)
|
86
|
+
thor (>= 0.20, < 2.a)
|
63
87
|
google-cloud-core (1.6.0)
|
64
88
|
google-cloud-env (~> 1.0)
|
65
89
|
google-cloud-errors (~> 1.0)
|
66
90
|
google-cloud-env (1.6.0)
|
67
91
|
faraday (>= 0.17.3, < 3.0)
|
68
92
|
google-cloud-errors (1.3.1)
|
69
|
-
google-cloud-logging (
|
93
|
+
google-cloud-logging (2.3.2)
|
70
94
|
concurrent-ruby (~> 1.1)
|
71
|
-
google-cloud-core (~> 1.
|
72
|
-
google-
|
73
|
-
googleapis-common-protos-types (>= 1.0.2)
|
95
|
+
google-cloud-core (~> 1.5)
|
96
|
+
google-cloud-logging-v2 (~> 0.0)
|
74
97
|
stackdriver-core (~> 1.3)
|
75
|
-
google-cloud-
|
76
|
-
gapic-common (
|
98
|
+
google-cloud-logging-v2 (0.10.0)
|
99
|
+
gapic-common (>= 0.19.0, < 2.a)
|
100
|
+
google-cloud-errors (~> 1.0)
|
101
|
+
google-cloud-monitoring-v3 (0.10.0)
|
102
|
+
gapic-common (>= 0.16.0, < 2.a)
|
77
103
|
google-cloud-errors (~> 1.0)
|
78
|
-
google-cloud-trace-v2 (0.
|
79
|
-
gapic-common (
|
104
|
+
google-cloud-trace-v2 (0.6.0)
|
105
|
+
gapic-common (>= 0.19.0, < 2.a)
|
80
106
|
google-cloud-errors (~> 1.0)
|
81
|
-
google-
|
82
|
-
|
83
|
-
|
84
|
-
googleapis-common-protos-types (
|
85
|
-
googleauth (~> 0.9)
|
86
|
-
grpc (~> 1.24)
|
87
|
-
rly (~> 0.2.3)
|
88
|
-
google-protobuf (3.20.0-x86_64-linux)
|
89
|
-
googleapis-common-protos (1.3.10)
|
90
|
-
google-protobuf (~> 3.11)
|
91
|
-
googleapis-common-protos-types (>= 1.0.5, < 2.0)
|
107
|
+
google-protobuf (3.22.1)
|
108
|
+
googleapis-common-protos (1.4.0)
|
109
|
+
google-protobuf (~> 3.14)
|
110
|
+
googleapis-common-protos-types (~> 1.2)
|
92
111
|
grpc (~> 1.27)
|
93
|
-
googleapis-common-protos-types (1.
|
112
|
+
googleapis-common-protos-types (1.6.0)
|
94
113
|
google-protobuf (~> 3.14)
|
95
|
-
googleauth (
|
96
|
-
faraday (
|
114
|
+
googleauth (1.3.0)
|
115
|
+
faraday (>= 0.17.3, < 3.a)
|
97
116
|
jwt (>= 1.4, < 3.0)
|
98
117
|
memoist (~> 0.16)
|
99
118
|
multi_json (~> 1.11)
|
100
119
|
os (>= 0.9, < 2.0)
|
101
|
-
signet (
|
102
|
-
grpc (1.
|
103
|
-
google-protobuf (~> 3.
|
120
|
+
signet (>= 0.16, < 2.a)
|
121
|
+
grpc (1.52.0)
|
122
|
+
google-protobuf (~> 3.21)
|
104
123
|
googleapis-common-protos-types (~> 1.0)
|
105
124
|
hashdiff (1.0.1)
|
106
125
|
http_parser.rb (0.7.0)
|
107
126
|
httpclient (2.8.3)
|
127
|
+
i18n (1.14.1)
|
128
|
+
concurrent-ruby (~> 1.0)
|
108
129
|
json (2.6.3)
|
109
130
|
jwt (2.7.0)
|
110
131
|
memoist (0.16.2)
|
111
132
|
metaclass (0.0.4)
|
112
133
|
mini_mime (1.1.2)
|
134
|
+
minitest (5.18.0)
|
113
135
|
mocha (1.9.0)
|
114
136
|
metaclass (~> 0.0.1)
|
115
|
-
msgpack (1.
|
137
|
+
msgpack (1.7.1)
|
116
138
|
multi_json (1.15.0)
|
117
|
-
multipart-post (2.3.0)
|
118
139
|
opencensus (0.5.0)
|
119
140
|
opencensus-stackdriver (0.4.1)
|
120
141
|
concurrent-ruby (~> 1.0)
|
@@ -123,8 +144,8 @@ GEM
|
|
123
144
|
google-cloud-trace-v2 (~> 0.1)
|
124
145
|
opencensus (~> 0.5)
|
125
146
|
os (1.1.4)
|
126
|
-
parallel (1.
|
127
|
-
parser (3.2.
|
147
|
+
parallel (1.23.0)
|
148
|
+
parser (3.2.2.1)
|
128
149
|
ast (~> 2.4.1)
|
129
150
|
power_assert (2.0.3)
|
130
151
|
prometheus-client (0.9.0)
|
@@ -132,15 +153,14 @@ GEM
|
|
132
153
|
public_suffix (5.0.1)
|
133
154
|
quantile (0.2.1)
|
134
155
|
rainbow (3.1.1)
|
135
|
-
rake (
|
136
|
-
regexp_parser (2.
|
156
|
+
rake (13.0.6)
|
157
|
+
regexp_parser (2.8.0)
|
137
158
|
representable (3.2.0)
|
138
159
|
declarative (< 0.1.0)
|
139
160
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
140
161
|
uber (< 0.2.0)
|
141
162
|
retriable (3.1.2)
|
142
163
|
rexml (3.2.5)
|
143
|
-
rly (0.2.3)
|
144
164
|
rubocop (1.48.1)
|
145
165
|
json (~> 2.3)
|
146
166
|
parallel (~> 1.10)
|
@@ -151,9 +171,10 @@ GEM
|
|
151
171
|
rubocop-ast (>= 1.26.0, < 2.0)
|
152
172
|
ruby-progressbar (~> 1.7)
|
153
173
|
unicode-display_width (>= 2.4.0, < 3.0)
|
154
|
-
rubocop-ast (1.
|
174
|
+
rubocop-ast (1.29.0)
|
155
175
|
parser (>= 3.2.1.0)
|
156
176
|
ruby-progressbar (1.13.0)
|
177
|
+
ruby2_keywords (0.0.5)
|
157
178
|
serverengine (2.3.2)
|
158
179
|
sigdump (~> 0.2.2)
|
159
180
|
sigdump (0.2.4)
|
@@ -175,35 +196,35 @@ GEM
|
|
175
196
|
tins (~> 1.0)
|
176
197
|
test-unit (3.3.3)
|
177
198
|
power_assert
|
178
|
-
thor (1.2.
|
199
|
+
thor (1.2.2)
|
179
200
|
tins (1.32.1)
|
180
201
|
sync
|
181
202
|
trailblazer-option (0.1.2)
|
182
203
|
tzinfo (2.0.6)
|
183
204
|
concurrent-ruby (~> 1.0)
|
184
|
-
tzinfo-data (1.2023.
|
205
|
+
tzinfo-data (1.2023.3)
|
185
206
|
tzinfo (>= 1.0.0)
|
186
207
|
uber (0.1.0)
|
187
208
|
unicode-display_width (2.4.2)
|
188
|
-
webmock (3.
|
189
|
-
addressable (>= 2.
|
209
|
+
webmock (3.17.1)
|
210
|
+
addressable (>= 2.8.0)
|
190
211
|
crack (>= 0.3.2)
|
191
212
|
hashdiff (>= 0.4.0, < 2.0.0)
|
192
213
|
webrick (1.7.0)
|
193
214
|
yajl-ruby (1.4.3)
|
194
215
|
|
195
216
|
PLATFORMS
|
196
|
-
|
217
|
+
ruby
|
197
218
|
|
198
219
|
DEPENDENCIES
|
199
220
|
coveralls (= 0.8.23)
|
200
221
|
fluent-plugin-google-cloud!
|
201
222
|
mocha (= 1.9.0)
|
202
223
|
prometheus-client (< 0.10)
|
203
|
-
rake (=
|
224
|
+
rake (= 13.0.6)
|
204
225
|
rubocop (= 1.48.1)
|
205
226
|
test-unit (= 3.3.3)
|
206
|
-
webmock (= 3.
|
227
|
+
webmock (= 3.17.1)
|
207
228
|
|
208
229
|
BUNDLED WITH
|
209
|
-
2.4
|
230
|
+
2.1.4
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.homepage =
|
11
11
|
'https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud'
|
12
12
|
gem.license = 'Apache-2.0'
|
13
|
-
gem.version = '0.
|
13
|
+
gem.version = '0.13.0'
|
14
14
|
gem.authors = ['Stackdriver Agents Team']
|
15
15
|
gem.email = ['stackdriver-agents@google.com']
|
16
16
|
gem.required_ruby_version = Gem::Requirement.new('>= 2.6')
|
@@ -23,12 +23,13 @@ Gem::Specification.new do |gem|
|
|
23
23
|
# also the fluentd version in
|
24
24
|
# https://github.com/GoogleCloudPlatform/google-fluentd/blob/master/config/software/fluentd.rb.
|
25
25
|
gem.add_runtime_dependency 'fluentd', '1.13.3'
|
26
|
-
gem.add_runtime_dependency 'google-api-client', '0.
|
27
|
-
gem.add_runtime_dependency 'googleapis-common-protos', '1.
|
28
|
-
gem.add_runtime_dependency 'googleauth', '
|
29
|
-
gem.add_runtime_dependency 'google-cloud-logging', '
|
30
|
-
gem.add_runtime_dependency 'google-
|
31
|
-
gem.add_runtime_dependency '
|
26
|
+
gem.add_runtime_dependency 'google-api-client', '0.53.0'
|
27
|
+
gem.add_runtime_dependency 'googleapis-common-protos', '1.4.0'
|
28
|
+
gem.add_runtime_dependency 'googleauth', '1.3.0'
|
29
|
+
gem.add_runtime_dependency 'google-cloud-logging', '2.3.2'
|
30
|
+
gem.add_runtime_dependency 'google-cloud-monitoring-v3', '0.10.0'
|
31
|
+
gem.add_runtime_dependency 'google-protobuf', '3.22.1'
|
32
|
+
gem.add_runtime_dependency 'grpc', '1.52.0'
|
32
33
|
gem.add_runtime_dependency 'json', '2.6.3'
|
33
34
|
gem.add_runtime_dependency 'opencensus', '0.5.0'
|
34
35
|
gem.add_runtime_dependency 'opencensus-stackdriver', '0.4.1'
|
@@ -36,15 +37,10 @@ Gem::Specification.new do |gem|
|
|
36
37
|
gem.add_development_dependency 'mocha', '1.9.0'
|
37
38
|
# Keep this the same as in
|
38
39
|
# https://github.com/fluent/fluent-plugin-prometheus/blob/master/fluent-plugin-prometheus.gemspec
|
39
|
-
gem.add_development_dependency 'prometheus-client', '< 0.10'
|
40
|
-
# TODO(qingling128): Upgrade rake to 11.0+ after the following issues are
|
41
|
-
# fixed because rake (11.0+) requires ALL variables to be explicitly
|
42
|
-
# initialized.
|
43
|
-
# https://github.com/googleapis/google-auth-library-ruby/issues/227
|
44
|
-
# https://github.com/farcaller/rly/issues/2
|
45
40
|
gem.add_development_dependency 'coveralls', '0.8.23'
|
46
|
-
gem.add_development_dependency '
|
41
|
+
gem.add_development_dependency 'prometheus-client', '< 0.10'
|
42
|
+
gem.add_development_dependency 'rake', '13.0.6'
|
47
43
|
gem.add_development_dependency 'rubocop', '1.48.1'
|
48
44
|
gem.add_development_dependency 'test-unit', '3.3.3'
|
49
|
-
gem.add_development_dependency 'webmock', '3.
|
45
|
+
gem.add_development_dependency 'webmock', '3.17.1'
|
50
46
|
end
|
@@ -51,9 +51,6 @@ module Fluent
|
|
51
51
|
desc 'The field name for insertIds in the log record.'
|
52
52
|
config_param :insert_id_key, :string, default: DEFAULT_INSERT_ID_KEY
|
53
53
|
|
54
|
-
# Expose attr_readers for testing.
|
55
|
-
attr_reader :insert_id_key
|
56
|
-
|
57
54
|
def start
|
58
55
|
super
|
59
56
|
@log = $log # rubocop:disable Style/GlobalVars
|
@@ -20,9 +20,9 @@ require 'socket'
|
|
20
20
|
require 'time'
|
21
21
|
require 'yaml'
|
22
22
|
require 'google/apis'
|
23
|
+
require 'google/cloud/errors'
|
23
24
|
require 'google/apis/logging_v2'
|
24
25
|
require 'google/cloud/logging/v2'
|
25
|
-
require 'google/gax'
|
26
26
|
require 'google/logging/v2/logging_pb'
|
27
27
|
require 'google/logging/v2/logging_services_pb'
|
28
28
|
require 'google/logging/v2/log_entry_pb'
|
@@ -149,7 +149,7 @@ module Fluent
|
|
149
149
|
%w[userAgent user_agent parse_string]
|
150
150
|
],
|
151
151
|
# The grpc version class name.
|
152
|
-
'Google::Logging::Type::HttpRequest',
|
152
|
+
'Google::Cloud::Logging::Type::HttpRequest',
|
153
153
|
# The non-grpc version class name.
|
154
154
|
'Google::Apis::LoggingV2::HttpRequest'
|
155
155
|
],
|
@@ -161,7 +161,7 @@ module Fluent
|
|
161
161
|
%w[first first parse_bool],
|
162
162
|
%w[last last parse_bool]
|
163
163
|
],
|
164
|
-
'Google::Logging::V2::LogEntryOperation',
|
164
|
+
'Google::Cloud::Logging::V2::LogEntryOperation',
|
165
165
|
'Google::Apis::LoggingV2::LogEntryOperation'
|
166
166
|
],
|
167
167
|
'source_location' => [
|
@@ -171,7 +171,7 @@ module Fluent
|
|
171
171
|
%w[function function parse_string],
|
172
172
|
%w[line line parse_int]
|
173
173
|
],
|
174
|
-
'Google::Logging::V2::LogEntrySourceLocation',
|
174
|
+
'Google::Cloud::Logging::V2::LogEntrySourceLocation',
|
175
175
|
'Google::Apis::LoggingV2::LogEntrySourceLocation'
|
176
176
|
]
|
177
177
|
}.freeze
|
@@ -431,7 +431,7 @@ module Fluent
|
|
431
431
|
|
432
432
|
# Expose attr_readers to make testing of metadata more direct than only
|
433
433
|
# testing it indirectly through metadata sent with logs.
|
434
|
-
attr_reader :
|
434
|
+
attr_reader :resource, :common_labels, :monitoring_resource
|
435
435
|
|
436
436
|
def initialize
|
437
437
|
super
|
@@ -784,7 +784,7 @@ module Fluent
|
|
784
784
|
|
785
785
|
if @split_logs_by_tag
|
786
786
|
requests_to_send.each do |request|
|
787
|
-
@write_request.call(request)
|
787
|
+
@write_request.call(**request)
|
788
788
|
end
|
789
789
|
else
|
790
790
|
# Combine all requests into one. The request level "log_name" will be
|
@@ -846,7 +846,7 @@ module Fluent
|
|
846
846
|
severity,
|
847
847
|
ts_secs,
|
848
848
|
ts_nanos)
|
849
|
-
entry = Google::Logging::V2::LogEntry.new(
|
849
|
+
entry = Google::Cloud::Logging::V2::LogEntry.new(
|
850
850
|
labels: labels,
|
851
851
|
resource: Google::Api::MonitoredResource.new(
|
852
852
|
type: resource.type,
|
@@ -893,7 +893,7 @@ module Fluent
|
|
893
893
|
client = api_client
|
894
894
|
entries_count = entries.length
|
895
895
|
client.write_log_entries(
|
896
|
-
entries,
|
896
|
+
entries: entries,
|
897
897
|
log_name: log_name,
|
898
898
|
# Leave resource nil if it's nil.
|
899
899
|
resource: if resource
|
@@ -916,7 +916,7 @@ module Fluent
|
|
916
916
|
@successful_call = true
|
917
917
|
@log.info 'Successfully sent gRPC to Stackdriver Logging API.'
|
918
918
|
end
|
919
|
-
rescue Google::
|
919
|
+
rescue Google::Cloud::Error => e
|
920
920
|
# GRPC::BadStatus is wrapped in error.cause.
|
921
921
|
error = e.cause
|
922
922
|
|
@@ -1007,7 +1007,7 @@ module Fluent
|
|
1007
1007
|
error: error.to_s, error_code: error_code.to_s
|
1008
1008
|
end
|
1009
1009
|
|
1010
|
-
# Got an unexpected error (not Google::
|
1010
|
+
# Got an unexpected error (not Google::Cloud::Error) from the
|
1011
1011
|
# google-cloud-logging lib.
|
1012
1012
|
rescue StandardError => e
|
1013
1013
|
increment_failed_requests_count(GRPC::Core::StatusCodes::UNKNOWN)
|
@@ -1470,20 +1470,20 @@ module Fluent
|
|
1470
1470
|
|
1471
1471
|
extracted_subfields = subfields.each_with_object({}) \
|
1472
1472
|
do |(original_key, destination_key, cast_fn), extracted_fields|
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
|
1477
|
-
|
1478
|
-
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1473
|
+
value = fields.delete(original_key)
|
1474
|
+
next if value.nil?
|
1475
|
+
|
1476
|
+
begin
|
1477
|
+
casted_value = send(cast_fn, value)
|
1478
|
+
rescue TypeError
|
1479
|
+
@log.error "Failed to #{cast_fn} for #{field_name}." \
|
1480
|
+
"#{original_key} with value #{value.inspect}.", err
|
1481
|
+
next
|
1482
|
+
end
|
1483
|
+
next if casted_value.nil?
|
1484
1484
|
|
1485
|
-
|
1486
|
-
|
1485
|
+
extracted_fields[destination_key] = casted_value
|
1486
|
+
end
|
1487
1487
|
|
1488
1488
|
next unless extracted_subfields
|
1489
1489
|
|
@@ -1599,30 +1599,30 @@ module Fluent
|
|
1599
1599
|
end
|
1600
1600
|
|
1601
1601
|
GRPC_SEVERITY_MAPPING = {
|
1602
|
-
'DEFAULT' => Google::Logging::Type::LogSeverity::DEFAULT,
|
1603
|
-
'DEBUG' => Google::Logging::Type::LogSeverity::DEBUG,
|
1604
|
-
'INFO' => Google::Logging::Type::LogSeverity::INFO,
|
1605
|
-
'NOTICE' => Google::Logging::Type::LogSeverity::NOTICE,
|
1606
|
-
'WARNING' => Google::Logging::Type::LogSeverity::WARNING,
|
1607
|
-
'ERROR' => Google::Logging::Type::LogSeverity::ERROR,
|
1608
|
-
'CRITICAL' => Google::Logging::Type::LogSeverity::CRITICAL,
|
1609
|
-
'ALERT' => Google::Logging::Type::LogSeverity::ALERT,
|
1610
|
-
'EMERGENCY' => Google::Logging::Type::LogSeverity::EMERGENCY,
|
1611
|
-
0 => Google::Logging::Type::LogSeverity::DEFAULT,
|
1612
|
-
100 => Google::Logging::Type::LogSeverity::DEBUG,
|
1613
|
-
200 => Google::Logging::Type::LogSeverity::INFO,
|
1614
|
-
300 => Google::Logging::Type::LogSeverity::NOTICE,
|
1615
|
-
400 => Google::Logging::Type::LogSeverity::WARNING,
|
1616
|
-
500 => Google::Logging::Type::LogSeverity::ERROR,
|
1617
|
-
600 => Google::Logging::Type::LogSeverity::CRITICAL,
|
1618
|
-
700 => Google::Logging::Type::LogSeverity::ALERT,
|
1619
|
-
800 => Google::Logging::Type::LogSeverity::EMERGENCY
|
1602
|
+
'DEFAULT' => Google::Cloud::Logging::Type::LogSeverity::DEFAULT,
|
1603
|
+
'DEBUG' => Google::Cloud::Logging::Type::LogSeverity::DEBUG,
|
1604
|
+
'INFO' => Google::Cloud::Logging::Type::LogSeverity::INFO,
|
1605
|
+
'NOTICE' => Google::Cloud::Logging::Type::LogSeverity::NOTICE,
|
1606
|
+
'WARNING' => Google::Cloud::Logging::Type::LogSeverity::WARNING,
|
1607
|
+
'ERROR' => Google::Cloud::Logging::Type::LogSeverity::ERROR,
|
1608
|
+
'CRITICAL' => Google::Cloud::Logging::Type::LogSeverity::CRITICAL,
|
1609
|
+
'ALERT' => Google::Cloud::Logging::Type::LogSeverity::ALERT,
|
1610
|
+
'EMERGENCY' => Google::Cloud::Logging::Type::LogSeverity::EMERGENCY,
|
1611
|
+
0 => Google::Cloud::Logging::Type::LogSeverity::DEFAULT,
|
1612
|
+
100 => Google::Cloud::Logging::Type::LogSeverity::DEBUG,
|
1613
|
+
200 => Google::Cloud::Logging::Type::LogSeverity::INFO,
|
1614
|
+
300 => Google::Cloud::Logging::Type::LogSeverity::NOTICE,
|
1615
|
+
400 => Google::Cloud::Logging::Type::LogSeverity::WARNING,
|
1616
|
+
500 => Google::Cloud::Logging::Type::LogSeverity::ERROR,
|
1617
|
+
600 => Google::Cloud::Logging::Type::LogSeverity::CRITICAL,
|
1618
|
+
700 => Google::Cloud::Logging::Type::LogSeverity::ALERT,
|
1619
|
+
800 => Google::Cloud::Logging::Type::LogSeverity::EMERGENCY
|
1620
1620
|
}.freeze
|
1621
1621
|
|
1622
1622
|
def grpc_severity(severity)
|
1623
1623
|
# TODO: find out why this doesn't work.
|
1624
1624
|
# if severity.is_a? String
|
1625
|
-
# return Google::Logging::Type::LogSeverity.resolve(severity)
|
1625
|
+
# return Google::Cloud::Logging::Type::LogSeverity.resolve(severity)
|
1626
1626
|
# end
|
1627
1627
|
return GRPC_SEVERITY_MAPPING[severity] if GRPC_SEVERITY_MAPPING.key?(severity)
|
1628
1628
|
|
@@ -1700,9 +1700,9 @@ module Fluent
|
|
1700
1700
|
|
1701
1701
|
label_map.each_with_object({}) \
|
1702
1702
|
do |(original_label, new_label), extracted_labels|
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1703
|
+
value = hash.delete(original_label)
|
1704
|
+
extracted_labels[new_label] = convert_to_utf8(value.to_s) if value
|
1705
|
+
end
|
1706
1706
|
end
|
1707
1707
|
|
1708
1708
|
def value_from_ruby(value)
|
@@ -1834,11 +1834,11 @@ module Fluent
|
|
1834
1834
|
"#{Google::Apis::OS_VERSION}"
|
1835
1835
|
channel_args = { 'grpc.primary_user_agent' => user_agent }
|
1836
1836
|
.merge!(compression_channel_args)
|
1837
|
-
@client = Google::Cloud::Logging::V2::
|
1838
|
-
credentials
|
1837
|
+
@client = Google::Cloud::Logging::V2::LoggingService::Client.new do |config|
|
1838
|
+
config.credentials = GRPC::Core::Channel.new(
|
1839
1839
|
"#{host}#{port}", channel_args, creds
|
1840
1840
|
)
|
1841
|
-
|
1841
|
+
end
|
1842
1842
|
else
|
1843
1843
|
# TODO: Use a non-default ClientOptions object.
|
1844
1844
|
Google::Apis::ClientOptions.default.application_name = PLUGIN_NAME
|
@@ -2004,11 +2004,10 @@ module Fluent
|
|
2004
2004
|
# are a list of indexes of log entries that failed due to this error.
|
2005
2005
|
#
|
2006
2006
|
# A sample error looks like:
|
2007
|
-
# <Google::
|
2008
|
-
# message: '
|
2009
|
-
# ified as transient, caused by 7:User not authorized.',
|
2007
|
+
# <Google::Cloud::PermissionDeniedError:
|
2008
|
+
# message: 'User not authorized.',
|
2010
2009
|
# details: [
|
2011
|
-
# <Google::Logging::V2::WriteLogEntriesPartialErrors:
|
2010
|
+
# <Google::Cloud::Logging::V2::WriteLogEntriesPartialErrors:
|
2012
2011
|
# log_entry_errors: {
|
2013
2012
|
# 0 => <Google::Rpc::Status:
|
2014
2013
|
# code: 7,
|
@@ -2038,13 +2037,14 @@ module Fluent
|
|
2038
2037
|
# [3, 'Log name contains illegal character :']: [1, 3]
|
2039
2038
|
# }
|
2040
2039
|
def construct_error_details_map_grpc(gax_error)
|
2040
|
+
@log.error "construct_error_details_map_grpc: #{gax_error}"
|
2041
2041
|
error_details_map = Hash.new { |h, k| h[k] = [] }
|
2042
2042
|
error_details = ensure_array(gax_error.status_details)
|
2043
2043
|
raise JSON::ParserError, 'The error details are empty.' if
|
2044
2044
|
error_details.empty?
|
2045
2045
|
raise JSON::ParserError, 'No partial error info in error details.' unless
|
2046
2046
|
error_details[0].is_a?(
|
2047
|
-
Google::Logging::V2::WriteLogEntriesPartialErrors
|
2047
|
+
Google::Cloud::Logging::V2::WriteLogEntriesPartialErrors
|
2048
2048
|
)
|
2049
2049
|
|
2050
2050
|
log_entry_errors = ensure_hash(error_details[0].log_entry_errors)
|
@@ -19,14 +19,16 @@ require 'erb'
|
|
19
19
|
module Statusz
|
20
20
|
module_function
|
21
21
|
|
22
|
-
# NOTE: The plugin parameter is referenced in STATUSZ_TMPL.
|
23
22
|
def response(plugin)
|
24
23
|
uptime = Time.now - SERVER_START
|
25
24
|
uptime_str = format('%<hours>d hr %<minutes>02d min %<seconds>02d sec',
|
26
25
|
hours: uptime / 3600,
|
27
26
|
minutes: (uptime / 60) % 60,
|
28
27
|
seconds: uptime % 60)
|
29
|
-
ERB.new(STATUSZ_TMPL).
|
28
|
+
ERB.new(STATUSZ_TMPL).result_with_hash(
|
29
|
+
plugin: plugin,
|
30
|
+
uptime_str: uptime_str
|
31
|
+
)
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
data/test/plugin/base_test.rb
CHANGED
@@ -29,8 +29,10 @@ require_relative 'utils'
|
|
29
29
|
|
30
30
|
module Monitoring
|
31
31
|
# Prevent OpenCensus from writing to the network.
|
32
|
-
|
33
|
-
|
32
|
+
OpenCensusMonitoringRegistry.class_eval do
|
33
|
+
# Suppress redefine warning (https://bugs.ruby-lang.org/issues/17055).
|
34
|
+
alias_method :export, :export
|
35
|
+
define_method(:export) do
|
34
36
|
nil
|
35
37
|
end
|
36
38
|
end
|
@@ -55,6 +57,7 @@ module BaseTest
|
|
55
57
|
registry.unregister(:stackdriver_retried_entries_count)
|
56
58
|
|
57
59
|
setup_auth_stubs('https://www.googleapis.com/oauth2/v4/token')
|
60
|
+
setup_auth_stubs('https://oauth2.googleapis.com/token')
|
58
61
|
@logs_sent = []
|
59
62
|
end
|
60
63
|
|
data/test/plugin/constants.rb
CHANGED
@@ -12,20 +12,9 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require 'google/rpc/error_details_pb'
|
16
|
+
|
15
17
|
# Add some helper methods to standard classes.
|
16
|
-
module Google
|
17
|
-
module Protobuf
|
18
|
-
Any.class_eval do
|
19
|
-
# TODO(igorpeshansky): Remove this once
|
20
|
-
# https://github.com/google/protobuf/pull/4719 gets released.
|
21
|
-
def self.pack(msg, type_url_prefix = 'type.googleapis.com/')
|
22
|
-
any = Google::Protobuf::Any.new
|
23
|
-
any.pack(msg, type_url_prefix)
|
24
|
-
any
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
18
|
String.class_eval do
|
30
19
|
def inspect_octal
|
31
20
|
specials = {
|
@@ -1018,7 +1007,7 @@ module Constants
|
|
1018
1007
|
}.freeze
|
1019
1008
|
|
1020
1009
|
PARTIAL_SUCCESS_GRPC_METADATA = begin
|
1021
|
-
partial_errors = Google::Logging::V2::WriteLogEntriesPartialErrors.new(
|
1010
|
+
partial_errors = Google::Cloud::Logging::V2::WriteLogEntriesPartialErrors.new(
|
1022
1011
|
log_entry_errors: {
|
1023
1012
|
0 => Google::Rpc::Status.new(
|
1024
1013
|
code: GRPC::Core::StatusCodes::PERMISSION_DENIED,
|
@@ -198,10 +198,10 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
|
|
198
198
|
# known severities should translate to themselves, regardless of case
|
199
199
|
%w[DEFAULT DEBUG INFO NOTICE WARNING ERROR CRITICAL ALERT EMERGENCY].each \
|
200
200
|
do |severity|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
201
|
+
assert_equal(severity, test_obj.parse_severity(severity))
|
202
|
+
assert_equal(severity, test_obj.parse_severity(severity.downcase))
|
203
|
+
assert_equal(severity, test_obj.parse_severity(severity.capitalize))
|
204
|
+
end
|
205
205
|
|
206
206
|
# numeric levels
|
207
207
|
assert_equal(0, test_obj.parse_severity('0'))
|
@@ -34,6 +34,8 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
34
34
|
# Record user agent when creating a GRPC::Core::Channel.
|
35
35
|
GRPC::Core::Channel.class_eval do
|
36
36
|
old_initialize = instance_method(:initialize)
|
37
|
+
# Suppress redefine warning (https://bugs.ruby-lang.org/issues/17055).
|
38
|
+
alias_method :initialize, :initialize
|
37
39
|
define_method(:initialize) do |url, args, creds|
|
38
40
|
user_agent = args['grpc.primary_user_agent']
|
39
41
|
old_initialize.bind(self).call(url, args, creds)
|
@@ -270,8 +272,8 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
270
272
|
|
271
273
|
private
|
272
274
|
|
273
|
-
WriteLogEntriesRequest = Google::Logging::V2::WriteLogEntriesRequest
|
274
|
-
WriteLogEntriesResponse = Google::Logging::V2::WriteLogEntriesResponse
|
275
|
+
WriteLogEntriesRequest = Google::Cloud::Logging::V2::WriteLogEntriesRequest
|
276
|
+
WriteLogEntriesResponse = Google::Cloud::Logging::V2::WriteLogEntriesResponse
|
275
277
|
|
276
278
|
USE_GRPC_CONFIG = %(
|
277
279
|
use_grpc true
|
@@ -332,13 +334,13 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
332
334
|
|
333
335
|
# GRPC logging mock that successfully logs the records.
|
334
336
|
class GRPCLoggingMockService <
|
335
|
-
Google::Cloud::Logging::V2::
|
337
|
+
Google::Cloud::Logging::V2::LoggingService::Client
|
336
338
|
def initialize(requests_received)
|
337
339
|
super()
|
338
340
|
@requests_received = requests_received
|
339
341
|
end
|
340
342
|
|
341
|
-
def write_log_entries(entries
|
343
|
+
def write_log_entries(entries:,
|
342
344
|
log_name: nil,
|
343
345
|
resource: nil,
|
344
346
|
labels: nil,
|
@@ -357,7 +359,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
357
359
|
|
358
360
|
# GRPC logging mock that fails and returns server side or client side errors.
|
359
361
|
class GRPCLoggingMockFailingService <
|
360
|
-
Google::Cloud::Logging::V2::
|
362
|
+
Google::Cloud::Logging::V2::LoggingService::Client
|
361
363
|
def initialize(error, failed_attempts)
|
362
364
|
super()
|
363
365
|
@error = error
|
@@ -365,7 +367,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
365
367
|
end
|
366
368
|
|
367
369
|
# rubocop:disable Lint/UnusedMethodArgument
|
368
|
-
def write_log_entries(entries
|
370
|
+
def write_log_entries(entries:,
|
369
371
|
log_name: nil,
|
370
372
|
resource: nil,
|
371
373
|
labels: nil,
|
@@ -374,8 +376,8 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
374
376
|
begin
|
375
377
|
raise @error
|
376
378
|
rescue StandardError
|
377
|
-
# Google::
|
378
|
-
raise Google::
|
379
|
+
# Google::Cloud::Error will wrap the latest thrown exception as @cause.
|
380
|
+
raise Google::Cloud::Error, 'This test message does not matter.'
|
379
381
|
end
|
380
382
|
end
|
381
383
|
# rubocop:enable Lint/UnusedMethodArgument
|
data/test/plugin/utils.rb
CHANGED
@@ -60,8 +60,7 @@ module Utils
|
|
60
60
|
"attribute1\nattribute2\nattribute3")
|
61
61
|
|
62
62
|
# Used by 'googleauth' to fetch the default service account credentials.
|
63
|
-
stub_request(:get,
|
64
|
-
'instance/service-accounts/default/token')
|
63
|
+
stub_request(:get, %r{http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token(?:\?.*)})
|
65
64
|
.to_return(body: %({"access_token": "#{FAKE_AUTH_TOKEN}"}),
|
66
65
|
status: 200,
|
67
66
|
headers: { 'Content-Length' => FAKE_AUTH_TOKEN.length,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-google-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackdriver Agents Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -30,84 +30,98 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.53.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.53.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: googleapis-common-protos
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.4.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.4.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: googleauth
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.3.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.3.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: google-cloud-logging
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.3.2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.3.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: google-cloud-monitoring-v3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.10.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.10.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: google-protobuf
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - '='
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: 3.
|
103
|
+
version: 3.22.1
|
90
104
|
type: :runtime
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - '='
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: 3.
|
110
|
+
version: 3.22.1
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: grpc
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - '='
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
117
|
+
version: 1.52.0
|
104
118
|
type: :runtime
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - '='
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
124
|
+
version: 1.52.0
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: json
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,47 +179,47 @@ dependencies:
|
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: 1.9.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
182
|
+
name: coveralls
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
|
-
- -
|
185
|
+
- - '='
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
187
|
+
version: 0.8.23
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
|
-
- -
|
192
|
+
- - '='
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
194
|
+
version: 0.8.23
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
196
|
+
name: prometheus-client
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
|
-
- -
|
199
|
+
- - "<"
|
186
200
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.
|
201
|
+
version: '0.10'
|
188
202
|
type: :development
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
|
-
- -
|
206
|
+
- - "<"
|
193
207
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
208
|
+
version: '0.10'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: rake
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
198
212
|
requirements:
|
199
213
|
- - '='
|
200
214
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
215
|
+
version: 13.0.6
|
202
216
|
type: :development
|
203
217
|
prerelease: false
|
204
218
|
version_requirements: !ruby/object:Gem::Requirement
|
205
219
|
requirements:
|
206
220
|
- - '='
|
207
221
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
222
|
+
version: 13.0.6
|
209
223
|
- !ruby/object:Gem::Dependency
|
210
224
|
name: rubocop
|
211
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,14 +254,14 @@ dependencies:
|
|
240
254
|
requirements:
|
241
255
|
- - '='
|
242
256
|
- !ruby/object:Gem::Version
|
243
|
-
version: 3.
|
257
|
+
version: 3.17.1
|
244
258
|
type: :development
|
245
259
|
prerelease: false
|
246
260
|
version_requirements: !ruby/object:Gem::Requirement
|
247
261
|
requirements:
|
248
262
|
- - '='
|
249
263
|
- !ruby/object:Gem::Version
|
250
|
-
version: 3.
|
264
|
+
version: 3.17.1
|
251
265
|
description: |2
|
252
266
|
Fluentd plugins for the Stackdriver Logging API, which will make logs
|
253
267
|
viewable in the Stackdriver Logs Viewer and can optionally store them
|