fluent-plugin-google-cloud 0.6.9.pre.1 → 0.6.10.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +23 -25
- data/fluent-plugin-google-cloud.gemspec +4 -4
- data/lib/fluent/plugin/out_google_cloud.rb +93 -77
- data/test/plugin/base_test.rb +37 -24
- data/test/plugin/constants.rb +119 -110
- data/test/plugin/test_out_google_cloud.rb +2 -1
- data/test/plugin/test_out_google_cloud_grpc.rb +41 -24
- metadata +4 -10
data/test/plugin/base_test.rb
CHANGED
@@ -62,6 +62,17 @@ module BaseTest
|
|
62
62
|
assert_equal 1, exception_count
|
63
63
|
end
|
64
64
|
|
65
|
+
def test_configure_logging_api_url
|
66
|
+
setup_gce_metadata_stubs
|
67
|
+
{
|
68
|
+
APPLICATION_DEFAULT_CONFIG => DEFAULT_LOGGING_API_URL,
|
69
|
+
CUSTOM_LOGGING_API_URL_CONFIG => CUSTOM_LOGGING_API_URL
|
70
|
+
}.each do |(config, url)|
|
71
|
+
d = create_driver(config)
|
72
|
+
assert_equal url, d.instance.instance_variable_get(:@logging_api_url)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
65
76
|
def test_configure_custom_metadata
|
66
77
|
setup_no_metadata_service_stubs
|
67
78
|
d = create_driver(CUSTOM_METADATA_CONFIG)
|
@@ -607,10 +618,11 @@ module BaseTest
|
|
607
618
|
|
608
619
|
def test_timestamps
|
609
620
|
setup_gce_metadata_stubs
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
621
|
+
[Time.at(123_456.789), Time.at(0), Time.now].each do |ts|
|
622
|
+
expected_ts = []
|
623
|
+
emit_index = 0
|
624
|
+
setup_logging_stubs do
|
625
|
+
@logs_sent = []
|
614
626
|
d = create_driver
|
615
627
|
# Test the "native" fluentd timestamp as well as our nanosecond tags.
|
616
628
|
d.emit({ 'message' => log_entry(emit_index) }, ts.to_f)
|
@@ -629,30 +641,31 @@ module BaseTest
|
|
629
641
|
expected_ts.push(ts)
|
630
642
|
emit_index += 1
|
631
643
|
d.emit('message' => log_entry(emit_index),
|
632
|
-
'timestampSeconds' =>
|
633
|
-
'timestampNanos' =>
|
644
|
+
'timestampSeconds' => ts.tv_sec.to_s,
|
645
|
+
'timestampNanos' => ts.tv_nsec.to_s)
|
634
646
|
expected_ts.push(ts)
|
635
647
|
emit_index += 1
|
636
648
|
d.run
|
649
|
+
verify_index = 0
|
650
|
+
verify_log_entries(emit_index, COMPUTE_PARAMS) do |entry, i|
|
651
|
+
verify_default_log_entry_text(entry['textPayload'], i, entry)
|
652
|
+
assert_equal_with_default entry['timestamp']['seconds'],
|
653
|
+
expected_ts[verify_index].tv_sec, 0, entry
|
654
|
+
assert_equal_with_default \
|
655
|
+
entry['timestamp']['nanos'],
|
656
|
+
expected_ts[verify_index].tv_nsec, 0, entry do
|
657
|
+
# Fluentd v0.14 onwards supports nanosecond timestamp values.
|
658
|
+
# Added in 600 ns delta to avoid flaky tests introduced
|
659
|
+
# due to rounding error in double-precision floating-point numbers
|
660
|
+
# (to account for the missing 9 bits of precision ~ 512 ns).
|
661
|
+
# See http://wikipedia.org/wiki/Double-precision_floating-point_format.
|
662
|
+
assert_in_delta expected_ts[verify_index].tv_nsec,
|
663
|
+
entry['timestamp']['nanos'], 600, entry
|
664
|
+
end
|
665
|
+
verify_index += 1
|
666
|
+
end
|
637
667
|
end
|
638
668
|
end
|
639
|
-
verify_index = 0
|
640
|
-
verify_log_entries(emit_index, COMPUTE_PARAMS) do |entry, i|
|
641
|
-
verify_default_log_entry_text(entry['textPayload'], i, entry)
|
642
|
-
assert_equal_with_default entry['timestamp']['seconds'],
|
643
|
-
expected_ts[verify_index].tv_sec, 0, entry
|
644
|
-
assert_equal_with_default entry['timestamp']['nanos'],
|
645
|
-
expected_ts[verify_index].tv_nsec, 0, entry do
|
646
|
-
# Fluentd v0.14 onwards supports nanosecond timestamp values.
|
647
|
-
# Added in 600 ns delta to avoid flaky tests introduced
|
648
|
-
# due to rounding error in double-precision floating-point numbers
|
649
|
-
# (to account for the missing 9 bits of precision ~ 512 ns).
|
650
|
-
# See http://wikipedia.org/wiki/Double-precision_floating-point_format
|
651
|
-
assert_in_delta expected_ts[verify_index].tv_nsec,
|
652
|
-
entry['timestamp']['nanos'], 600, entry
|
653
|
-
end
|
654
|
-
verify_index += 1
|
655
|
-
end
|
656
669
|
end
|
657
670
|
|
658
671
|
def test_malformed_timestamp
|
@@ -1793,6 +1806,6 @@ module BaseTest
|
|
1793
1806
|
end
|
1794
1807
|
|
1795
1808
|
def _undefined
|
1796
|
-
|
1809
|
+
raise "Method #{__callee__} is unimplemented and needs to be overridden."
|
1797
1810
|
end
|
1798
1811
|
end
|
data/test/plugin/constants.rb
CHANGED
@@ -20,101 +20,104 @@ module Constants
|
|
20
20
|
|
21
21
|
# Generic attributes.
|
22
22
|
HOSTNAME = Socket.gethostname
|
23
|
+
CUSTOM_LOGGING_API_URL = 'custom.logging.googleapis.com'.freeze
|
23
24
|
|
24
25
|
# TODO(qingling128) Separate constants into different submodules.
|
25
26
|
# Attributes used for the GCE metadata service.
|
26
|
-
PROJECT_ID = 'test-project-id'
|
27
|
-
ZONE = 'us-central1-b'
|
28
|
-
FULLY_QUALIFIED_ZONE =
|
29
|
-
VM_ID = '9876543210'
|
27
|
+
PROJECT_ID = 'test-project-id'.freeze
|
28
|
+
ZONE = 'us-central1-b'.freeze
|
29
|
+
FULLY_QUALIFIED_ZONE = "projects/#{PROJECT_ID}/zones/#{ZONE}".freeze
|
30
|
+
VM_ID = '9876543210'.freeze
|
30
31
|
|
31
32
|
# Attributes used for the Metadata Agent resources.
|
32
|
-
METADATA_ZONE = 'us-central1-c'
|
33
|
-
METADATA_VM_ID = '0123456789'
|
33
|
+
METADATA_ZONE = 'us-central1-c'.freeze
|
34
|
+
METADATA_VM_ID = '0123456789'.freeze
|
34
35
|
|
35
36
|
# Attributes used for custom (overridden) configs.
|
36
|
-
CUSTOM_PROJECT_ID = 'test-custom-project-id'
|
37
|
-
CUSTOM_ZONE = 'us-custom-central1-b'
|
38
|
-
CUSTOM_FULLY_QUALIFIED_ZONE =
|
39
|
-
CUSTOM_VM_ID = 'C9876543210'
|
40
|
-
CUSTOM_HOSTNAME = 'custom.hostname.org'
|
37
|
+
CUSTOM_PROJECT_ID = 'test-custom-project-id'.freeze
|
38
|
+
CUSTOM_ZONE = 'us-custom-central1-b'.freeze
|
39
|
+
CUSTOM_FULLY_QUALIFIED_ZONE = "projects/#{PROJECT_ID}/zones/#{ZONE}".freeze
|
40
|
+
CUSTOM_VM_ID = 'C9876543210'.freeze
|
41
|
+
CUSTOM_HOSTNAME = 'custom.hostname.org'.freeze
|
41
42
|
|
42
43
|
# Attributes used for the EC2 metadata service.
|
43
|
-
EC2_PROJECT_ID = 'test-ec2-project-id'
|
44
|
-
EC2_ZONE = 'us-west-2b'
|
45
|
-
EC2_PREFIXED_ZONE =
|
46
|
-
EC2_VM_ID = 'i-81c16767'
|
47
|
-
EC2_ACCOUNT_ID = '123456789012'
|
44
|
+
EC2_PROJECT_ID = 'test-ec2-project-id'.freeze
|
45
|
+
EC2_ZONE = 'us-west-2b'.freeze
|
46
|
+
EC2_PREFIXED_ZONE = "aws:#{EC2_ZONE}".freeze
|
47
|
+
EC2_VM_ID = 'i-81c16767'.freeze
|
48
|
+
EC2_ACCOUNT_ID = '123456789012'.freeze
|
48
49
|
|
49
50
|
# The formatting here matches the format used on the VM.
|
50
51
|
EC2_IDENTITY_DOCUMENT = %({
|
51
52
|
"accountId" : "#{EC2_ACCOUNT_ID}",
|
52
53
|
"availabilityZone" : "#{EC2_ZONE}",
|
53
54
|
"instanceId" : "#{EC2_VM_ID}"
|
54
|
-
})
|
55
|
+
}).freeze
|
55
56
|
|
56
57
|
# Managed VMs specific labels.
|
57
|
-
MANAGED_VM_BACKEND_NAME = 'default'
|
58
|
-
MANAGED_VM_BACKEND_VERSION = 'guestbook2.0'
|
58
|
+
MANAGED_VM_BACKEND_NAME = 'default'.freeze
|
59
|
+
MANAGED_VM_BACKEND_VERSION = 'guestbook2.0'.freeze
|
59
60
|
|
60
61
|
# Docker Container labels.
|
61
|
-
DOCKER_CONTAINER_ID =
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
DOCKER_CONTAINER_ID =
|
63
|
+
'0d0f03ff8d3c42688692536d1af77a28cd135c0a5c531f25a31'.freeze
|
64
|
+
DOCKER_CONTAINER_NAME = 'happy_hippo'.freeze
|
65
|
+
DOCKER_CONTAINER_STREAM_STDOUT = 'stdout'.freeze
|
66
|
+
DOCKER_CONTAINER_STREAM_STDERR = 'stderr'.freeze
|
65
67
|
# Timestamp for 1234567890 seconds and 987654321 nanoseconds since epoch.
|
66
|
-
DOCKER_CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'
|
68
|
+
DOCKER_CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'.freeze
|
67
69
|
DOCKER_CONTAINER_SECONDS_EPOCH = 1_234_567_890
|
68
70
|
DOCKER_CONTAINER_NANOS = 987_654_321
|
69
71
|
|
70
72
|
# Container Engine / Kubernetes specific labels.
|
71
|
-
CONTAINER_CLUSTER_NAME = 'cluster-1'
|
72
|
-
CONTAINER_NAMESPACE_ID = '898268c8-4a36-11e5-9d81-42010af0194c'
|
73
|
-
CONTAINER_NAMESPACE_NAME = 'kube-system'
|
74
|
-
CONTAINER_POD_ID = 'cad3c3c4-4b9c-11e5-9d81-42010af0194c'
|
75
|
-
CONTAINER_POD_NAME = 'redis-master-c0l82.foo.bar'
|
76
|
-
CONTAINER_CONTAINER_NAME = 'redis'
|
77
|
-
CONTAINER_LABEL_KEY = 'component'
|
78
|
-
CONTAINER_LABEL_VALUE = 'redis-component'
|
79
|
-
CONTAINER_STREAM = 'stdout'
|
80
|
-
CONTAINER_SEVERITY = 'INFO'
|
73
|
+
CONTAINER_CLUSTER_NAME = 'cluster-1'.freeze
|
74
|
+
CONTAINER_NAMESPACE_ID = '898268c8-4a36-11e5-9d81-42010af0194c'.freeze
|
75
|
+
CONTAINER_NAMESPACE_NAME = 'kube-system'.freeze
|
76
|
+
CONTAINER_POD_ID = 'cad3c3c4-4b9c-11e5-9d81-42010af0194c'.freeze
|
77
|
+
CONTAINER_POD_NAME = 'redis-master-c0l82.foo.bar'.freeze
|
78
|
+
CONTAINER_CONTAINER_NAME = 'redis'.freeze
|
79
|
+
CONTAINER_LABEL_KEY = 'component'.freeze
|
80
|
+
CONTAINER_LABEL_VALUE = 'redis-component'.freeze
|
81
|
+
CONTAINER_STREAM = 'stdout'.freeze
|
82
|
+
CONTAINER_SEVERITY = 'INFO'.freeze
|
81
83
|
# Timestamp for 1234567890 seconds and 987654321 nanoseconds since epoch.
|
82
|
-
CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'
|
84
|
+
CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'.freeze
|
83
85
|
CONTAINER_SECONDS_EPOCH = 1_234_567_890
|
84
86
|
CONTAINER_NANOS = 987_654_321
|
85
87
|
|
86
88
|
# Cloud Functions specific labels.
|
87
|
-
CLOUDFUNCTIONS_FUNCTION_NAME = '$My_Function.Name-@1'
|
88
|
-
CLOUDFUNCTIONS_REGION = 'us-central1'
|
89
|
-
CLOUDFUNCTIONS_EXECUTION_ID = '123-0'
|
90
|
-
CLOUDFUNCTIONS_CLUSTER_NAME = 'cluster-1'
|
91
|
-
CLOUDFUNCTIONS_NAMESPACE_NAME = 'default'
|
92
|
-
CLOUDFUNCTIONS_POD_NAME =
|
93
|
-
|
89
|
+
CLOUDFUNCTIONS_FUNCTION_NAME = '$My_Function.Name-@1'.freeze
|
90
|
+
CLOUDFUNCTIONS_REGION = 'us-central1'.freeze
|
91
|
+
CLOUDFUNCTIONS_EXECUTION_ID = '123-0'.freeze
|
92
|
+
CLOUDFUNCTIONS_CLUSTER_NAME = 'cluster-1'.freeze
|
93
|
+
CLOUDFUNCTIONS_NAMESPACE_NAME = 'default'.freeze
|
94
|
+
CLOUDFUNCTIONS_POD_NAME =
|
95
|
+
'd.dc.myu.uc.functionp.pc.name-a.a1.987-c0l82'.freeze
|
96
|
+
CLOUDFUNCTIONS_CONTAINER_NAME = 'worker'.freeze
|
94
97
|
|
95
98
|
# Dataflow specific labels.
|
96
|
-
DATAFLOW_REGION = 'us-central1'
|
97
|
-
DATAFLOW_JOB_NAME = 'job_name_1'
|
98
|
-
DATAFLOW_JOB_ID = 'job_id_1'
|
99
|
-
DATAFLOW_STEP_ID = 'step_1'
|
100
|
-
DATAFLOW_TAG = 'dataflow-worker'
|
99
|
+
DATAFLOW_REGION = 'us-central1'.freeze
|
100
|
+
DATAFLOW_JOB_NAME = 'job_name_1'.freeze
|
101
|
+
DATAFLOW_JOB_ID = 'job_id_1'.freeze
|
102
|
+
DATAFLOW_STEP_ID = 'step_1'.freeze
|
103
|
+
DATAFLOW_TAG = 'dataflow-worker'.freeze
|
101
104
|
|
102
105
|
# Dataproc specific labels.
|
103
|
-
DATAPROC_CLUSTER_NAME = 'test-cluster'
|
104
|
-
DATAPROC_CLUSTER_UUID = '00000000-0000-0000-0000-000000000000'
|
105
|
-
DATAPROC_REGION = 'unittest'
|
106
|
+
DATAPROC_CLUSTER_NAME = 'test-cluster'.freeze
|
107
|
+
DATAPROC_CLUSTER_UUID = '00000000-0000-0000-0000-000000000000'.freeze
|
108
|
+
DATAPROC_REGION = 'unittest'.freeze
|
106
109
|
|
107
110
|
# ML specific labels.
|
108
|
-
ML_REGION = 'us-central1'
|
109
|
-
ML_JOB_ID = 'job_name_1'
|
110
|
-
ML_TASK_NAME = 'task_name_1'
|
111
|
-
ML_TRIAL_ID = 'trial_id_1'
|
112
|
-
ML_LOG_AREA = 'log_area_1'
|
113
|
-
ML_TAG = 'master-replica-0'
|
111
|
+
ML_REGION = 'us-central1'.freeze
|
112
|
+
ML_JOB_ID = 'job_name_1'.freeze
|
113
|
+
ML_TASK_NAME = 'task_name_1'.freeze
|
114
|
+
ML_TRIAL_ID = 'trial_id_1'.freeze
|
115
|
+
ML_LOG_AREA = 'log_area_1'.freeze
|
116
|
+
ML_TAG = 'master-replica-0'.freeze
|
114
117
|
|
115
118
|
# Parameters used for authentication.
|
116
|
-
AUTH_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:jwt-bearer'
|
117
|
-
FAKE_AUTH_TOKEN = 'abc123'
|
119
|
+
AUTH_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:jwt-bearer'.freeze
|
120
|
+
FAKE_AUTH_TOKEN = 'abc123'.freeze
|
118
121
|
|
119
122
|
# Information about test credentials files.
|
120
123
|
# path: Path to the credentials file.
|
@@ -122,97 +125,101 @@ module Constants
|
|
122
125
|
IAM_CREDENTIALS = {
|
123
126
|
path: 'test/plugin/data/iam-credentials.json',
|
124
127
|
project_id: 'fluent-test-project'
|
125
|
-
}
|
128
|
+
}.freeze
|
126
129
|
LEGACY_CREDENTIALS = {
|
127
130
|
path: 'test/plugin/data/credentials.json',
|
128
131
|
project_id: '847859579879'
|
129
|
-
}
|
132
|
+
}.freeze
|
130
133
|
INVALID_CREDENTIALS = {
|
131
134
|
path: 'test/plugin/data/invalid_credentials.json',
|
132
135
|
project_id: ''
|
133
|
-
}
|
136
|
+
}.freeze
|
134
137
|
|
135
138
|
# Configuration files for various test scenarios.
|
136
139
|
APPLICATION_DEFAULT_CONFIG = %(
|
137
|
-
)
|
140
|
+
).freeze
|
141
|
+
|
142
|
+
CUSTOM_LOGGING_API_URL_CONFIG = %(
|
143
|
+
logging_api_url #{CUSTOM_LOGGING_API_URL}
|
144
|
+
).freeze
|
138
145
|
|
139
146
|
DETECT_JSON_CONFIG = %(
|
140
147
|
detect_json true
|
141
|
-
)
|
148
|
+
).freeze
|
142
149
|
|
143
150
|
PARTIAL_SUCCESS_CONFIG = %(
|
144
151
|
partial_success true
|
145
|
-
)
|
152
|
+
).freeze
|
146
153
|
|
147
154
|
# rubocop:disable Metrics/LineLength
|
148
155
|
PRIVATE_KEY_CONFIG = %(
|
149
156
|
auth_method private_key
|
150
157
|
private_key_email 271661262351-ft99kc9kjro9rrihq3k2n3s2inbplu0q@developer.gserviceaccount.com
|
151
158
|
private_key_path test/plugin/data/c31e573fd7f62ed495c9ca3821a5a85cb036dee1-privatekey.p12
|
152
|
-
)
|
159
|
+
).freeze
|
153
160
|
# rubocop:enable Metrics/LineLength
|
154
161
|
|
155
162
|
REQUIRE_VALID_TAGS_CONFIG = %(
|
156
163
|
require_valid_tags true
|
157
|
-
)
|
164
|
+
).freeze
|
158
165
|
|
159
166
|
NO_METADATA_SERVICE_CONFIG = %(
|
160
167
|
use_metadata_service false
|
161
|
-
)
|
168
|
+
).freeze
|
162
169
|
|
163
170
|
NO_DETECT_SUBSERVICE_CONFIG = %(
|
164
171
|
detect_subservice false
|
165
|
-
)
|
172
|
+
).freeze
|
166
173
|
|
167
174
|
PROMETHEUS_ENABLE_CONFIG = %(
|
168
175
|
enable_monitoring true
|
169
176
|
monitoring_type prometheus
|
170
|
-
)
|
177
|
+
).freeze
|
171
178
|
|
172
179
|
ENABLE_METADATA_AGENT_CONFIG = %(
|
173
180
|
enable_metadata_agent true
|
174
|
-
)
|
181
|
+
).freeze
|
175
182
|
|
176
183
|
DISABLE_METADATA_AGENT_CONFIG = %(
|
177
184
|
enable_metadata_agent false
|
178
|
-
)
|
185
|
+
).freeze
|
179
186
|
|
180
187
|
DOCKER_CONTAINER_CONFIG = %(
|
181
188
|
enable_metadata_agent true
|
182
189
|
label_map { "source": "#{DOCKER_CONSTANTS[:service]}/stream" }
|
183
190
|
detect_json true
|
184
|
-
)
|
191
|
+
).freeze
|
185
192
|
|
186
193
|
CUSTOM_METADATA_CONFIG = %(
|
187
194
|
project_id #{CUSTOM_PROJECT_ID}
|
188
195
|
zone #{CUSTOM_ZONE}
|
189
196
|
vm_id #{CUSTOM_VM_ID}
|
190
197
|
vm_name #{CUSTOM_HOSTNAME}
|
191
|
-
)
|
198
|
+
).freeze
|
192
199
|
|
193
200
|
CONFIG_MISSING_METADATA_PROJECT_ID = %(
|
194
201
|
zone #{CUSTOM_ZONE}
|
195
202
|
vm_id #{CUSTOM_VM_ID}
|
196
|
-
)
|
203
|
+
).freeze
|
197
204
|
CONFIG_MISSING_METADATA_ZONE = %(
|
198
205
|
project_id #{CUSTOM_PROJECT_ID}
|
199
206
|
vm_id #{CUSTOM_VM_ID}
|
200
|
-
)
|
207
|
+
).freeze
|
201
208
|
CONFIG_MISSING_METADATA_VM_ID = %(
|
202
209
|
project_id #{CUSTOM_PROJECT_ID}
|
203
210
|
zone #{CUSTOM_ZONE}
|
204
|
-
)
|
211
|
+
).freeze
|
205
212
|
CONFIG_MISSING_METADATA_ALL = %(
|
206
|
-
)
|
213
|
+
).freeze
|
207
214
|
|
208
215
|
CONFIG_EC2_PROJECT_ID = %(
|
209
216
|
project_id #{EC2_PROJECT_ID}
|
210
|
-
)
|
217
|
+
).freeze
|
211
218
|
|
212
219
|
CONFIG_EC2_PROJECT_ID_AND_CUSTOM_VM_ID = %(
|
213
220
|
project_id #{EC2_PROJECT_ID}
|
214
221
|
vm_id #{CUSTOM_VM_ID}
|
215
|
-
)
|
222
|
+
).freeze
|
216
223
|
|
217
224
|
CONFIG_DATAFLOW = %(
|
218
225
|
subservice_name "#{DATAFLOW_CONSTANTS[:service]}"
|
@@ -222,7 +229,7 @@ module Constants
|
|
222
229
|
"#{DATAFLOW_CONSTANTS[:service]}/job_id" : "#{DATAFLOW_JOB_ID}"
|
223
230
|
}
|
224
231
|
label_map { "step": "#{DATAFLOW_CONSTANTS[:service]}/step_id" }
|
225
|
-
)
|
232
|
+
).freeze
|
226
233
|
|
227
234
|
CONFIG_ML = %(
|
228
235
|
subservice_name "#{ML_CONSTANTS[:service]}"
|
@@ -232,11 +239,11 @@ module Constants
|
|
232
239
|
"#{ML_CONSTANTS[:service]}/trial_id" : "#{ML_TRIAL_ID}"
|
233
240
|
}
|
234
241
|
label_map { "name": "#{ML_CONSTANTS[:service]}/job_id/log_area" }
|
235
|
-
)
|
242
|
+
).freeze
|
236
243
|
|
237
244
|
CONFIG_CUSTOM_TRACE_KEY_SPECIFIED = %(
|
238
245
|
trace_key custom_trace_key
|
239
|
-
)
|
246
|
+
).freeze
|
240
247
|
|
241
248
|
# Service configurations for various services.
|
242
249
|
|
@@ -254,7 +261,7 @@ module Constants
|
|
254
261
|
labels: {
|
255
262
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
256
263
|
}
|
257
|
-
}
|
264
|
+
}.freeze
|
258
265
|
COMPUTE_PARAMS_WITH_METADATA_VM_ID_AND_ZONE = COMPUTE_PARAMS.merge(
|
259
266
|
resource: COMPUTE_PARAMS[:resource].merge(
|
260
267
|
labels: {
|
@@ -262,7 +269,7 @@ module Constants
|
|
262
269
|
'zone' => METADATA_ZONE
|
263
270
|
}
|
264
271
|
)
|
265
|
-
)
|
272
|
+
).freeze
|
266
273
|
|
267
274
|
# GAE.
|
268
275
|
VMENGINE_PARAMS = {
|
@@ -280,11 +287,12 @@ module Constants
|
|
280
287
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
281
288
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
282
289
|
}
|
283
|
-
}
|
290
|
+
}.freeze
|
284
291
|
|
285
292
|
# GKE Container.
|
286
|
-
CONTAINER_TAG =
|
287
|
-
|
293
|
+
CONTAINER_TAG =
|
294
|
+
"kubernetes.#{CONTAINER_POD_NAME}_#{CONTAINER_NAMESPACE_NAME}_" \
|
295
|
+
"#{CONTAINER_CONTAINER_NAME}".freeze
|
288
296
|
|
289
297
|
CONTAINER_FROM_METADATA_PARAMS = {
|
290
298
|
resource: {
|
@@ -308,7 +316,7 @@ module Constants
|
|
308
316
|
"label/#{CONTAINER_LABEL_KEY}" => CONTAINER_LABEL_VALUE,
|
309
317
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
310
318
|
}
|
311
|
-
}
|
319
|
+
}.freeze
|
312
320
|
|
313
321
|
# Almost the same as from metadata, but namespace_id and pod_id come from
|
314
322
|
# namespace and pod names.
|
@@ -333,7 +341,7 @@ module Constants
|
|
333
341
|
"#{GKE_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
|
334
342
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
335
343
|
}
|
336
|
-
}
|
344
|
+
}.freeze
|
337
345
|
|
338
346
|
CONTAINER_FROM_APPLICATION_PARAMS = {
|
339
347
|
resource: {
|
@@ -352,7 +360,7 @@ module Constants
|
|
352
360
|
labels: {
|
353
361
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
354
362
|
}
|
355
|
-
}
|
363
|
+
}.freeze
|
356
364
|
|
357
365
|
# Docker Container.
|
358
366
|
DOCKER_CONTAINER_PARAMS = {
|
@@ -368,18 +376,19 @@ module Constants
|
|
368
376
|
labels: {
|
369
377
|
"#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDOUT
|
370
378
|
}
|
371
|
-
}
|
379
|
+
}.freeze
|
372
380
|
DOCKER_CONTAINER_PARAMS_STREAM_STDERR = DOCKER_CONTAINER_PARAMS.merge(
|
373
381
|
labels: DOCKER_CONTAINER_PARAMS[:labels].merge(
|
374
382
|
"#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDERR
|
375
383
|
)
|
376
|
-
)
|
377
|
-
DOCKER_CONTAINER_PARAMS_NO_STREAM =
|
384
|
+
).freeze
|
385
|
+
DOCKER_CONTAINER_PARAMS_NO_STREAM =
|
386
|
+
DOCKER_CONTAINER_PARAMS.merge(labels: {}).freeze
|
378
387
|
|
379
388
|
# Cloud Functions.
|
380
389
|
CLOUDFUNCTIONS_TAG = "kubernetes.#{CLOUDFUNCTIONS_POD_NAME}_" \
|
381
390
|
"#{CLOUDFUNCTIONS_NAMESPACE_NAME}_" \
|
382
|
-
"#{CLOUDFUNCTIONS_CONTAINER_NAME}"
|
391
|
+
"#{CLOUDFUNCTIONS_CONTAINER_NAME}".freeze
|
383
392
|
|
384
393
|
CLOUDFUNCTIONS_PARAMS = {
|
385
394
|
resource: {
|
@@ -400,7 +409,7 @@ module Constants
|
|
400
409
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
401
410
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
402
411
|
}
|
403
|
-
}
|
412
|
+
}.freeze
|
404
413
|
|
405
414
|
CLOUDFUNCTIONS_TEXT_NOT_MATCHED_PARAMS = {
|
406
415
|
resource: {
|
@@ -420,7 +429,7 @@ module Constants
|
|
420
429
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
421
430
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
422
431
|
}
|
423
|
-
}
|
432
|
+
}.freeze
|
424
433
|
|
425
434
|
# Cloud Dataflow.
|
426
435
|
DATAFLOW_PARAMS = {
|
@@ -440,7 +449,7 @@ module Constants
|
|
440
449
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
441
450
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
442
451
|
}
|
443
|
-
}
|
452
|
+
}.freeze
|
444
453
|
|
445
454
|
# Cloud Dataproc.
|
446
455
|
DATAPROC_PARAMS = {
|
@@ -459,7 +468,7 @@ module Constants
|
|
459
468
|
"#{COMPUTE_CONSTANTS[:service]}/resource_id" => VM_ID,
|
460
469
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
461
470
|
}
|
462
|
-
}
|
471
|
+
}.freeze
|
463
472
|
|
464
473
|
# Cloud ML.
|
465
474
|
ML_PARAMS = {
|
@@ -479,7 +488,7 @@ module Constants
|
|
479
488
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
|
480
489
|
"#{COMPUTE_CONSTANTS[:service]}/zone" => ZONE
|
481
490
|
}
|
482
|
-
}
|
491
|
+
}.freeze
|
483
492
|
|
484
493
|
CUSTOM_PARAMS = {
|
485
494
|
resource: {
|
@@ -494,7 +503,7 @@ module Constants
|
|
494
503
|
labels: {
|
495
504
|
"#{COMPUTE_CONSTANTS[:service]}/resource_name" => CUSTOM_HOSTNAME
|
496
505
|
}
|
497
|
-
}
|
506
|
+
}.freeze
|
498
507
|
|
499
508
|
EC2_PARAMS = {
|
500
509
|
resource: {
|
@@ -510,7 +519,7 @@ module Constants
|
|
510
519
|
labels: {
|
511
520
|
"#{EC2_CONSTANTS[:service]}/resource_name" => HOSTNAME
|
512
521
|
}
|
513
|
-
}
|
522
|
+
}.freeze
|
514
523
|
|
515
524
|
HTTP_REQUEST_MESSAGE = {
|
516
525
|
'requestMethod' => 'POST',
|
@@ -523,24 +532,24 @@ module Constants
|
|
523
532
|
'referer' => 'http://referer/',
|
524
533
|
'cacheHit' => true,
|
525
534
|
'cacheValidatedWithOriginServer' => true
|
526
|
-
}
|
535
|
+
}.freeze
|
527
536
|
|
528
537
|
SOURCE_LOCATION_MESSAGE = {
|
529
538
|
'file' => 'source/file',
|
530
539
|
'function' => 'my_function',
|
531
540
|
'line' => 18
|
532
|
-
}
|
541
|
+
}.freeze
|
533
542
|
|
534
543
|
OPERATION_MESSAGE = {
|
535
544
|
'id' => 'op_id',
|
536
545
|
'producer' => 'my/app',
|
537
546
|
'last' => true
|
538
|
-
}
|
547
|
+
}.freeze
|
539
548
|
|
540
549
|
CUSTOM_LABELS_MESSAGE = {
|
541
550
|
'customKey' => 'value'
|
542
|
-
}
|
543
|
-
CONFLICTING_LABEL_KEY = "#{COMPUTE_CONSTANTS[:service]}/resource_name"
|
551
|
+
}.freeze
|
552
|
+
CONFLICTING_LABEL_KEY = "#{COMPUTE_CONSTANTS[:service]}/resource_name".freeze
|
544
553
|
|
545
554
|
# Tags and their sanitized and encoded version.
|
546
555
|
VALID_TAGS = {
|
@@ -550,7 +559,7 @@ module Constants
|
|
550
559
|
'specialCharacter/_-.' => 'specialCharacter%2F_-.',
|
551
560
|
'abc@&^$*' => 'abc%40%26%5E%24%2A',
|
552
561
|
'@&^$*' => '%40%26%5E%24%2A'
|
553
|
-
}
|
562
|
+
}.freeze
|
554
563
|
INVALID_TAGS = {
|
555
564
|
# Non-string tags.
|
556
565
|
123 => '123',
|
@@ -560,10 +569,10 @@ module Constants
|
|
560
569
|
# Non-utf8 string tags.
|
561
570
|
"nonutf8#{[0x92].pack('C*')}" => 'nonutf8%20',
|
562
571
|
"abc#{[0x92].pack('C*')}" => 'abc%20',
|
563
|
-
|
572
|
+
[0x92].pack('C*') => '%20',
|
564
573
|
# Empty string tag.
|
565
574
|
'' => '_'
|
566
|
-
}
|
575
|
+
}.freeze
|
567
576
|
ALL_TAGS = VALID_TAGS.merge(INVALID_TAGS)
|
568
577
|
|
569
578
|
# Stub value for Monitored resources from Metadata Agent.
|
@@ -601,7 +610,7 @@ module Constants
|
|
601
610
|
'zone' => ZONE
|
602
611
|
}
|
603
612
|
}.to_json
|
604
|
-
}
|
613
|
+
}.freeze
|
605
614
|
|
606
615
|
PARTIAL_SUCCESS_RESPONSE_BODY = {
|
607
616
|
'error' => {
|