fluent-plugin-google-cloud 0.6.9.pre.1 → 0.6.10.pre.1
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 +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' => {
|