fluent-plugin-kubernetes_metadata_filter 1.2.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,6 +18,7 @@
18
18
  #
19
19
  module KubernetesMetadata
20
20
  module CacheStrategy
21
+
21
22
  def get_pod_metadata(key, namespace_name, pod_name, record_create_time, batch_miss_cache)
22
23
  metadata = {}
23
24
  ids = @id_cache[key]
@@ -83,7 +84,6 @@ module KubernetesMetadata
83
84
  end
84
85
  @id_cache[key] = ids unless batch_miss_cache.key?("#{namespace_name}_#{pod_name}")
85
86
  end
86
-
87
87
  # remove namespace info that is only used for comparison
88
88
  metadata.delete('creation_timestamp')
89
89
  metadata.delete_if{|k,v| v.nil?}
@@ -54,30 +54,10 @@ module KubernetesMetadata
54
54
  self.de_dot!(labels)
55
55
  self.de_dot!(annotations)
56
56
  end
57
-
58
- # collect container informations
59
- container_meta = {}
60
- begin
61
- pod_object['status']['containerStatuses'].each do|container_status|
62
- # get plain container id (eg. docker://hash -> hash)
63
- container_id = container_status['containerID'].sub /^[-_a-zA-Z0-9]+:\/\//, ''
64
- container_meta[container_id] = {
65
- 'name' => container_status['name'],
66
- 'image' => container_status['image'],
67
- 'image_id' => container_status['imageID']
68
- }
69
- end
70
- rescue
71
- log.on_debug do
72
- log.debug("parsing container meta information failed for: #{pod_object['metadata']['namespace']}/#{pod_object['metadata']['name']} ")
73
- end
74
- end
75
-
76
57
  kubernetes_metadata = {
77
58
  'namespace_name' => pod_object['metadata']['namespace'],
78
59
  'pod_id' => pod_object['metadata']['uid'],
79
60
  'pod_name' => pod_object['metadata']['name'],
80
- 'containers' => syms_to_strs(container_meta),
81
61
  'labels' => labels,
82
62
  'host' => pod_object['spec']['nodeName'],
83
63
  'master_url' => @kubernetes_url
@@ -103,29 +83,3 @@ module KubernetesMetadata
103
83
 
104
84
  end
105
85
  end
106
-
107
- # copied from activesupport
108
- class Object
109
- # An object is blank if it's false, empty, or a whitespace string.
110
- # For example, +nil+, '', ' ', [], {}, and +false+ are all blank.
111
- #
112
- # This simplifies
113
- #
114
- # !address || address.empty?
115
- #
116
- # to
117
- #
118
- # address.blank?
119
- #
120
- # @return [true, false]
121
- def blank?
122
- respond_to?(:empty?) ? !!empty? : !self
123
- end
124
-
125
- # An object is present if it's not blank.
126
- #
127
- # @return [true, false]
128
- def present?
129
- !blank?
130
- end
131
- end
@@ -42,9 +42,6 @@ module KubernetesMetadata
42
42
  if cached
43
43
  @cache[cache_key] = parse_pod_metadata(notice.object)
44
44
  @stats.bump(:pod_cache_watch_updates)
45
- elsif ENV['K8S_NODE_NAME'] == notice.object['spec']['nodeName'] then
46
- @cache[cache_key] = parse_pod_metadata(notice.object)
47
- @stats.bump(:pod_cache_host_updates)
48
45
  else
49
46
  @stats.bump(:pod_cache_watch_misses)
50
47
  end
@@ -174,7 +174,7 @@ http_interactions:
174
174
  "restartCount": 2,
175
175
  "image": "fabric8/hawtio-kubernetes:latest",
176
176
  "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
177
- "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
177
+ "containerID": "docker://1b1d1f61c1205fe73328c75b2945e2ce05acfba2fde16299a8103fb22e9ec58a"
178
178
  },
179
179
  {
180
180
  "name": "POD",
@@ -17,6 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
  require_relative '../helper'
20
+ require 'fluent/test/driver/filter'
20
21
  require 'fluent/plugin/filter_kubernetes_metadata'
21
22
 
22
23
  require 'webmock/test_unit'
@@ -30,8 +31,10 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
30
31
  @time = Fluent::Engine.now
31
32
  end
32
33
 
34
+ DEFAULT_TAG = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
35
+
33
36
  def create_driver(conf = '')
34
- Test::FilterTestDriver.new(KubernetesMetadataFilter, 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log').configure(conf, true)
37
+ Test::Driver::Filter.new(Plugin::KubernetesMetadataFilter).configure(conf)
35
38
  end
36
39
 
37
40
  sub_test_case 'configure' do
@@ -84,8 +87,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
84
87
 
85
88
  Dir.mktmpdir { |dir|
86
89
  # Fake token file and CA crt.
87
- expected_cert_path = File.join(dir, KubernetesMetadataFilter::K8_POD_CA_CERT)
88
- expected_token_path = File.join(dir, KubernetesMetadataFilter::K8_POD_TOKEN)
90
+ expected_cert_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_CA_CERT)
91
+ expected_token_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_TOKEN)
89
92
 
90
93
  File.open(expected_cert_path, "w") {}
91
94
  File.open(expected_token_path, "w") {}
@@ -137,9 +140,16 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
137
140
  cache_size 1
138
141
  ', d: nil)
139
142
  d = create_driver(config) if d.nil?
140
- d.run {
141
- d.emit(msg, @time)
142
- }.filtered
143
+ if ENV['LOGLEVEL']
144
+ logger = Logger.new(STDOUT)
145
+ logger.level = eval("Logger::#{ENV['LOGLEVEL'].upcase}")
146
+ instance = d.instance
147
+ instance.instance_variable_set(:@log,logger)
148
+ end
149
+ d.run(default_tag: DEFAULT_TAG) {
150
+ d.feed(@time, msg)
151
+ }
152
+ d.filtered.map{|e| e.last}
143
153
  end
144
154
 
145
155
  def emit_with_tag(tag, msg={}, config='
@@ -148,45 +158,10 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
148
158
  cache_size 1
149
159
  ')
150
160
  d = create_driver(config)
151
- d.run {
152
- d.emit_with_tag(tag, msg, @time)
153
- }.filtered
154
- end
155
-
156
- test 'nil event stream' do
157
- #not certain how this is possible but adding test to properly
158
- #guard against this condition we have seen - test for nil,
159
- #empty, no empty method, not an event stream
160
- plugin = create_driver.instance
161
- plugin.filter_stream('tag', nil)
162
- plugin.filter_stream('tag', Fluent::MultiEventStream.new)
163
- end
164
-
165
- test 'inability to connect to the api server handles exception and doensnt block pipeline' do
166
- VCR.use_cassette('kubernetes_docker_metadata') do
167
- driver = create_driver('
168
- kubernetes_url https://localhost:8443
169
- watch false
170
- cache_size 1
171
- ')
172
- stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_raise(SocketError.new('error from pod fetch'))
173
- stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_raise(SocketError.new('socket error from namespace fetch'))
174
- es = emit({'time'=>'2015-05-08T09:22:01Z'}, '', :d => driver)
175
- expected_kube_metadata = {
176
- 'time'=>'2015-05-08T09:22:01Z',
177
- 'docker' => {
178
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
179
- },
180
- 'kubernetes' => {
181
- 'pod_name' => 'fabric8-console-controller-98rqc',
182
- 'container_name' => 'fabric8-console-container',
183
- "namespace_id"=>"orphaned",
184
- 'namespace_name' => '.orphaned',
185
- "orphaned_namespace"=>"default"
186
- }
187
- }
188
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
189
- end
161
+ d.run(default_tag: tag) {
162
+ d.feed(@time, msg)
163
+ }
164
+ d.filtered.map{|e| e.last}
190
165
  end
191
166
 
192
167
  test 'with docker & kubernetes metadata where id cache hit and metadata miss' do
@@ -203,22 +178,22 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
203
178
  }
204
179
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_timeout
205
180
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_timeout
206
- es = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
181
+ filtered = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
207
182
  expected_kube_metadata = {
208
183
  'time'=>'2015-05-08T09:22:01Z',
209
184
  'docker' => {
210
185
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
211
186
  },
212
187
  'kubernetes' => {
213
- 'pod_name' => 'fabric8-console-controller-98rqc',
214
- 'container_name' => 'fabric8-console-container',
215
- 'namespace_name' => 'default',
216
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
217
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
188
+ 'pod_name' => 'fabric8-console-controller-98rqc',
189
+ 'container_name' => 'fabric8-console-container',
190
+ 'namespace_name' => 'default',
191
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
192
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
218
193
  }
219
194
  }
220
195
 
221
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
196
+ assert_equal(expected_kube_metadata, filtered[0])
222
197
  end
223
198
  end
224
199
 
@@ -234,63 +209,59 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
234
209
  :pod_id =>'c76927af-f563-11e4-b32d-54ee7527188d',
235
210
  :namespace_id =>'898268c8-4a36-11e5-9d81-42010af0194c'
236
211
  }
237
- es = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
212
+ filtered = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
238
213
  expected_kube_metadata = {
239
214
  'time'=>'2015-05-08T09:22:01Z',
240
215
  'docker' => {
241
216
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
242
217
  },
243
218
  'kubernetes' => {
244
- 'host' => 'jimmi-redhat.localnet',
245
- 'pod_name' => 'fabric8-console-controller-98rqc',
246
- 'container_name' => 'fabric8-console-container',
247
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
248
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
249
- 'namespace_name' => 'default',
250
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
251
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
252
- 'master_url' => 'https://localhost:8443',
219
+ 'host' => 'jimmi-redhat.localnet',
220
+ 'pod_name' => 'fabric8-console-controller-98rqc',
221
+ 'container_name' => 'fabric8-console-container',
222
+ 'namespace_name' => 'default',
223
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
224
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
225
+ 'master_url' => 'https://localhost:8443',
253
226
  'labels' => {
254
227
  'component' => 'fabric8Console'
255
228
  }
256
229
  }
257
230
  }
258
231
 
259
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
232
+ assert_equal(expected_kube_metadata, filtered[0])
260
233
  end
261
234
  end
262
235
 
263
236
  test 'with docker & kubernetes metadata' do
264
237
  VCR.use_cassette('kubernetes_docker_metadata') do
265
- es = emit({'time'=>'2015-05-08T09:22:01Z'})
238
+ filtered = emit({'time'=>'2015-05-08T09:22:01Z'})
266
239
  expected_kube_metadata = {
267
240
  'time'=>'2015-05-08T09:22:01Z',
268
241
  'docker' => {
269
242
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
270
243
  },
271
244
  'kubernetes' => {
272
- 'host' => 'jimmi-redhat.localnet',
273
- 'pod_name' => 'fabric8-console-controller-98rqc',
274
- 'container_name' => 'fabric8-console-container',
275
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
276
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
277
- 'namespace_name' => 'default',
278
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
279
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
280
- 'master_url' => 'https://localhost:8443',
245
+ 'host' => 'jimmi-redhat.localnet',
246
+ 'pod_name' => 'fabric8-console-controller-98rqc',
247
+ 'container_name' => 'fabric8-console-container',
248
+ 'namespace_name' => 'default',
249
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
250
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
251
+ 'master_url' => 'https://localhost:8443',
281
252
  'labels' => {
282
253
  'component' => 'fabric8Console'
283
254
  }
284
255
  }
285
256
  }
286
257
 
287
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
258
+ assert_equal(expected_kube_metadata, filtered[0])
288
259
  end
289
260
  end
290
261
 
291
262
  test 'with docker & kubernetes metadata & namespace_id enabled' do
292
263
  VCR.use_cassette('metadata_with_namespace_id') do
293
- es = emit({}, '
264
+ filtered = emit({}, '
294
265
  kubernetes_url https://localhost:8443
295
266
  watch false
296
267
  cache_size 1
@@ -300,27 +271,25 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
300
271
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
301
272
  },
302
273
  'kubernetes' => {
303
- 'host' => 'jimmi-redhat.localnet',
304
- 'pod_name' => 'fabric8-console-controller-98rqc',
305
- 'container_name' => 'fabric8-console-container',
306
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
307
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
308
- 'namespace_name' => 'default',
309
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
310
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
311
- 'master_url' => 'https://localhost:8443',
274
+ 'host' => 'jimmi-redhat.localnet',
275
+ 'pod_name' => 'fabric8-console-controller-98rqc',
276
+ 'container_name' => 'fabric8-console-container',
277
+ 'namespace_name' => 'default',
278
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
279
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
280
+ 'master_url' => 'https://localhost:8443',
312
281
  'labels' => {
313
282
  'component' => 'fabric8Console'
314
283
  }
315
284
  }
316
285
  }
317
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
286
+ assert_equal(expected_kube_metadata, filtered[0])
318
287
  end
319
288
  end
320
289
 
321
290
  test 'with docker & kubernetes metadata using bearer token' do
322
291
  VCR.use_cassette('kubernetes_docker_metadata_using_bearer_token') do
323
- es = emit({}, '
292
+ filtered = emit({}, '
324
293
  kubernetes_url https://localhost:8443
325
294
  verify_ssl false
326
295
  watch false
@@ -331,37 +300,35 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
331
300
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
332
301
  },
333
302
  'kubernetes' => {
334
- 'host' => 'jimmi-redhat.localnet',
335
- 'pod_name' => 'fabric8-console-controller-98rqc',
336
- 'container_name' => 'fabric8-console-container',
337
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
338
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
339
- 'namespace_name' => 'default',
340
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
341
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
342
- 'master_url' => 'https://localhost:8443',
303
+ 'host' => 'jimmi-redhat.localnet',
304
+ 'pod_name' => 'fabric8-console-controller-98rqc',
305
+ 'container_name' => 'fabric8-console-container',
306
+ 'namespace_name' => 'default',
307
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
308
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
309
+ 'master_url' => 'https://localhost:8443',
343
310
  'labels' => {
344
311
  'component' => 'fabric8Console'
345
312
  }
346
313
  }
347
314
  }
348
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
315
+ assert_equal(expected_kube_metadata, filtered[0])
349
316
  end
350
317
  end
351
318
 
352
319
  test 'with docker & kubernetes metadata but no configured api server' do
353
- es = emit({}, '')
320
+ filtered = emit({}, '')
354
321
  expected_kube_metadata = {
355
322
  'docker' => {
356
323
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
357
324
  },
358
325
  'kubernetes' => {
359
- 'pod_name' => 'fabric8-console-controller-98rqc',
360
- 'container_name' => 'fabric8-console-container',
361
- 'namespace_name' => 'default',
326
+ 'pod_name' => 'fabric8-console-controller-98rqc',
327
+ 'container_name' => 'fabric8-console-container',
328
+ 'namespace_name' => 'default',
362
329
  }
363
330
  }
364
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
331
+ assert_equal(expected_kube_metadata, filtered[0])
365
332
  end
366
333
 
367
334
  test 'with docker & inaccessible kubernetes metadata' do
@@ -372,20 +339,20 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
372
339
  )
373
340
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_timeout
374
341
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_timeout
375
- es = emit()
342
+ filtered = emit()
376
343
  expected_kube_metadata = {
377
344
  'docker' => {
378
345
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
379
346
  },
380
347
  'kubernetes' => {
381
- 'pod_name' => 'fabric8-console-controller-98rqc',
382
- 'container_name' => 'fabric8-console-container',
383
- 'namespace_name' => '.orphaned',
348
+ 'pod_name' => 'fabric8-console-controller-98rqc',
349
+ 'container_name' => 'fabric8-console-container',
350
+ 'namespace_name' => '.orphaned',
384
351
  'orphaned_namespace' => 'default',
385
- 'namespace_id' => 'orphaned'
352
+ 'namespace_id' => 'orphaned'
386
353
  }
387
354
  }
388
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
355
+ assert_equal(expected_kube_metadata, filtered[0])
389
356
  end
390
357
 
391
358
  test 'with dot in pod name' do
@@ -395,23 +362,62 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
395
362
  }.to_json
396
363
  )
397
364
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller.98rqc').to_timeout
398
- es = emit_with_tag('var.log.containers.fabric8-console-controller.98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log', {}, '')
365
+ filtered = emit_with_tag('var.log.containers.fabric8-console-controller.98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log', {}, '')
399
366
  expected_kube_metadata = {
400
367
  'docker' => {
401
368
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
402
369
  },
403
370
  'kubernetes' => {
404
- 'pod_name' => 'fabric8-console-controller.98rqc',
405
- 'container_name' => 'fabric8-console-container',
406
- 'namespace_name' => 'default'
371
+ 'pod_name' => 'fabric8-console-controller.98rqc',
372
+ 'container_name' => 'fabric8-console-container',
373
+ 'namespace_name' => 'default'
407
374
  }
408
375
  }
409
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
376
+ assert_equal(expected_kube_metadata, filtered[0])
410
377
  end
411
378
 
412
379
  test 'with docker metadata, non-kubernetes' do
413
- es = emit_with_tag('non-kubernetes', {}, '')
414
- assert_false(es.instance_variable_get(:@record_array)[0].has_key?(:kubernetes))
380
+ filtered = emit_with_tag('non-kubernetes', {}, '')
381
+ assert_false(filtered[0].has_key?(:kubernetes))
382
+ end
383
+
384
+ test 'merges json log data' do
385
+ json_log = {
386
+ 'hello' => 'world'
387
+ }
388
+ msg = {
389
+ 'log' => "#{json_log.to_json}"
390
+ }
391
+ filtered = emit_with_tag('non-kubernetes', msg, '')
392
+ assert_equal(msg.merge(json_log), filtered[0])
393
+ end
394
+
395
+ test 'merges json log data in MESSAGE' do
396
+ json_log = {
397
+ 'hello' => 'world'
398
+ }
399
+ msg = {
400
+ 'MESSAGE' => "#{json_log.to_json}"
401
+ }
402
+ filtered = emit_with_tag('non-kubernetes', msg, 'use_journal true')
403
+ assert_equal(msg.merge(json_log), filtered[0])
404
+ end
405
+
406
+ test 'merges json log data with message field' do
407
+ json_log = {
408
+ 'timeMillis' => 1459853347608,
409
+ 'thread' => 'main',
410
+ 'level' => 'INFO',
411
+ 'loggerName' => 'org.apache.camel.spring.SpringCamelContext',
412
+ 'message' => 'Total 1 routes, of which 1 is started.',
413
+ 'endOfBatch' => false,
414
+ 'loggerFqcn' => 'org.apache.logging.slf4j.Log4jLogger'
415
+ }
416
+ msg = {
417
+ 'log' => "#{json_log.to_json}"
418
+ }
419
+ filtered = emit_with_tag('non-kubernetes', msg, '')
420
+ assert_equal(msg.merge(json_log), filtered[0])
415
421
  end
416
422
 
417
423
  test 'ignores invalid json in log field' do
@@ -419,13 +425,57 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
419
425
  msg = {
420
426
  'log' => json_log
421
427
  }
422
- es = emit_with_tag('non-kubernetes', msg, '')
423
- assert_equal(msg, es.instance_variable_get(:@record_array)[0])
428
+ filtered = emit_with_tag('non-kubernetes', msg, '')
429
+ assert_equal(msg, filtered[0])
430
+ end
431
+
432
+ test 'merges json log data with message field in MESSAGE' do
433
+ json_log = {
434
+ 'timeMillis' => 1459853347608,
435
+ 'thread' => 'main',
436
+ 'level' => 'INFO',
437
+ 'loggerName' => 'org.apache.camel.spring.SpringCamelContext',
438
+ 'message' => 'Total 1 routes, of which 1 is started.',
439
+ 'endOfBatch' => false,
440
+ 'loggerFqcn' => 'org.apache.logging.slf4j.Log4jLogger'
441
+ }
442
+ msg = {
443
+ 'MESSAGE' => "#{json_log.to_json}"
444
+ }
445
+ filtered = emit_with_tag('non-kubernetes', msg, 'use_journal true')
446
+ assert_equal(msg.merge(json_log), filtered[0])
447
+ end
448
+
449
+ test 'emit individual fields from json, throw out whole original string' do
450
+ json_log = {
451
+ 'hello' => 'world',
452
+ 'more' => 'data'
453
+ }
454
+ msg = {
455
+ 'log' => "#{json_log.to_json}"
456
+ }
457
+ filtered = emit_with_tag('non-kubernetes', msg, 'preserve_json_log false')
458
+ assert_equal(json_log, filtered[0])
459
+ end
460
+
461
+ test 'emit individual fields from json, throw out whole original string in MESSAGE' do
462
+ json_log = {
463
+ 'hello' => 'world',
464
+ 'more' => 'data'
465
+ }
466
+ msg = {
467
+ 'MESSAGE' => "#{json_log.to_json}"
468
+ }
469
+ filtered = emit_with_tag('non-kubernetes', msg, '
470
+ preserve_json_log false
471
+ use_journal true
472
+ ')
473
+ assert_equal(json_log, filtered[0])
424
474
  end
425
475
 
426
476
  test 'with kubernetes dotted labels, de_dot enabled' do
427
477
  VCR.use_cassette('kubernetes_docker_metadata_dotted_labels') do
428
- es = emit({}, '
478
+ filtered = emit({}, '
429
479
  kubernetes_url https://localhost:8443
430
480
  watch false
431
481
  cache_size 1
@@ -435,30 +485,28 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
435
485
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
436
486
  },
437
487
  'kubernetes' => {
438
- 'host' => 'jimmi-redhat.localnet',
439
- 'pod_name' => 'fabric8-console-controller-98rqc',
440
- 'container_name' => 'fabric8-console-container',
441
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
442
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
443
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
444
- 'namespace_labels' => {
488
+ 'host' => 'jimmi-redhat.localnet',
489
+ 'pod_name' => 'fabric8-console-controller-98rqc',
490
+ 'container_name' => 'fabric8-console-container',
491
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
492
+ 'namespace_labels' => {
445
493
  'kubernetes_io/namespacetest' => 'somevalue'
446
494
  },
447
- 'namespace_name' => 'default',
448
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
449
- 'master_url' => 'https://localhost:8443',
495
+ 'namespace_name' => 'default',
496
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
497
+ 'master_url' => 'https://localhost:8443',
450
498
  'labels' => {
451
499
  'kubernetes_io/test' => 'somevalue'
452
500
  }
453
501
  }
454
502
  }
455
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
503
+ assert_equal(expected_kube_metadata, filtered[0])
456
504
  end
457
505
  end
458
506
 
459
507
  test 'with kubernetes dotted labels, de_dot disabled' do
460
508
  VCR.use_cassette('kubernetes_docker_metadata_dotted_labels') do
461
- es = emit({}, '
509
+ filtered = emit({}, '
462
510
  kubernetes_url https://localhost:8443
463
511
  watch false
464
512
  cache_size 1
@@ -469,24 +517,22 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
469
517
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
470
518
  },
471
519
  'kubernetes' => {
472
- 'host' => 'jimmi-redhat.localnet',
473
- 'pod_name' => 'fabric8-console-controller-98rqc',
474
- 'container_name' => 'fabric8-console-container',
475
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
476
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
477
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
478
- 'namespace_labels' => {
520
+ 'host' => 'jimmi-redhat.localnet',
521
+ 'pod_name' => 'fabric8-console-controller-98rqc',
522
+ 'container_name' => 'fabric8-console-container',
523
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
524
+ 'namespace_labels' => {
479
525
  'kubernetes.io/namespacetest' => 'somevalue'
480
526
  },
481
- 'namespace_name' => 'default',
482
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
483
- 'master_url' => 'https://localhost:8443',
527
+ 'namespace_name' => 'default',
528
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
529
+ 'master_url' => 'https://localhost:8443',
484
530
  'labels' => {
485
531
  'kubernetes.io/test' => 'somevalue'
486
532
  }
487
533
  }
488
534
  }
489
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
535
+ assert_equal(expected_kube_metadata, filtered[0])
490
536
  end
491
537
  end
492
538
 
@@ -507,7 +553,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
507
553
  'randomfield' => 'randomvalue'
508
554
  }
509
555
  VCR.use_cassette('kubernetes_docker_metadata') do
510
- es = emit_with_tag(tag, msg, '
556
+ filtered = emit_with_tag(tag, msg, '
511
557
  kubernetes_url https://localhost:8443
512
558
  watch false
513
559
  cache_size 1
@@ -518,21 +564,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
518
564
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
519
565
  },
520
566
  'kubernetes' => {
521
- 'host' => 'jimmi-redhat.localnet',
522
- 'pod_name' => 'fabric8-console-controller-98rqc',
523
- 'container_name' => 'fabric8-console-container',
524
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
525
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
526
- 'namespace_name' => 'default',
527
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
528
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
529
- 'master_url' => 'https://localhost:8443',
567
+ 'host' => 'jimmi-redhat.localnet',
568
+ 'pod_name' => 'fabric8-console-controller-98rqc',
569
+ 'container_name' => 'fabric8-console-container',
570
+ 'namespace_name' => 'default',
571
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
572
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
573
+ 'master_url' => 'https://localhost:8443',
530
574
  'labels' => {
531
575
  'component' => 'fabric8Console'
532
576
  }
533
577
  }
534
578
  }.merge(msg)
535
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
579
+ assert_equal(expected_kube_metadata, filtered[0])
536
580
  end
537
581
  end
538
582
 
@@ -545,7 +589,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
545
589
  'randomfield' => 'randomvalue'
546
590
  }
547
591
  VCR.use_cassette('metadata_with_namespace_id') do
548
- es = emit_with_tag(tag, msg, '
592
+ filtered = emit_with_tag(tag, msg, '
549
593
  kubernetes_url https://localhost:8443
550
594
  watch false
551
595
  cache_size 1
@@ -556,159 +600,25 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
556
600
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
557
601
  },
558
602
  'kubernetes' => {
559
- 'host' => 'jimmi-redhat.localnet',
560
- 'pod_name' => 'fabric8-console-controller-98rqc',
561
- 'container_name' => 'fabric8-console-container',
562
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
563
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
564
- 'namespace_name' => 'default',
565
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
566
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
567
- 'master_url' => 'https://localhost:8443',
603
+ 'host' => 'jimmi-redhat.localnet',
604
+ 'pod_name' => 'fabric8-console-controller-98rqc',
605
+ 'container_name' => 'fabric8-console-container',
606
+ 'namespace_name' => 'default',
607
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
608
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
609
+ 'master_url' => 'https://localhost:8443',
568
610
  'labels' => {
569
611
  'component' => 'fabric8Console'
570
612
  }
571
613
  }
572
614
  }.merge(msg)
573
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
574
- end
575
- end
576
-
577
- test 'with records from journald and docker & kubernetes metadata with use_journal unset' do
578
- # with use_journal unset, should still use the journal fields instead of tag fields
579
- tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
580
- msg = {
581
- 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
582
- 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
583
- 'kubernetes' => {
584
- 'namespace_name' => 'k8s-namespace-name',
585
- 'pod_name' => 'k8s-pod-name',
586
- 'container_name' => 'k8s-container-name'
587
- },
588
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
589
- 'randomfield' => 'randomvalue'
590
- }
591
- VCR.use_cassette('metadata_from_tag_journald_and_kubernetes_fields') do
592
- es = emit_with_tag(tag, msg, '
593
- kubernetes_url https://localhost:8443
594
- watch false
595
- cache_size 1
596
- ')
597
- expected_kube_metadata = {
598
- 'docker' => {
599
- 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'
600
- },
601
- 'kubernetes' => {
602
- 'host' => 'jimmi-redhat.localnet',
603
- 'pod_name' => 'k8s-pod-name',
604
- 'container_name' => 'k8s-container-name',
605
- 'container_image' => 'k8s-container-image:latest',
606
- 'container_image_id' => 'docker://d78c5217c41e9af08d37d9ae2cb070afa1fe3da6bc77bfb18879a8b4bfdf8a34',
607
- 'namespace_name' => 'k8s-namespace-name',
608
- 'namespace_id' => '8e0dc8fc-59f2-49f7-a3e2-ed0913e19d9f',
609
- 'pod_id' => 'ebabf749-5fcd-4750-a3f0-aedd89476da8',
610
- 'master_url' => 'https://localhost:8443',
611
- 'labels' => {
612
- 'component' => 'k8s-test'
613
- }
614
- }
615
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
616
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
617
- end
618
- end
619
-
620
- test 'with records from journald and docker & kubernetes metadata with lookup_from_k8s_field false' do
621
- # with use_journal unset, should still use the journal fields instead of tag fields
622
- tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
623
- msg = {
624
- 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
625
- 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
626
- 'kubernetes' => {
627
- 'namespace_name' => 'k8s-namespace-name',
628
- 'pod_name' => 'k8s-pod-name',
629
- 'container_name' => 'k8s-container-name'
630
- },
631
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
632
- 'randomfield' => 'randomvalue'
633
- }
634
- VCR.use_cassette('metadata_from_tag_and_journald_fields') do
635
- es = emit_with_tag(tag, msg, '
636
- kubernetes_url https://localhost:8443
637
- watch false
638
- cache_size 1
639
- lookup_from_k8s_field false
640
- ')
641
- expected_kube_metadata = {
642
- 'docker' => {
643
- 'container_id' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b'
644
- },
645
- 'kubernetes' => {
646
- 'host' => 'jimmi-redhat.localnet',
647
- 'pod_name' => 'journald-pod-name',
648
- 'container_name' => 'journald-container-name',
649
- 'container_image' => 'journald-container-image:latest',
650
- 'container_image_id' => 'docker://dda4c95705fb7050b701b10a7fe928ca5bc971a1dcb521ae3c339194cbf36b47',
651
- 'namespace_name' => 'journald-namespace-name',
652
- 'namespace_id' => '8282888f-733f-4f23-a3d3-1fdfa3bdacf2',
653
- 'pod_id' => '5e1c1e27-b637-4e81-80b6-6d8a8c404d3b',
654
- 'master_url' => 'https://localhost:8443',
655
- 'labels' => {
656
- 'component' => 'journald-test'
657
- }
658
- }
659
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
660
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
661
- end
662
- end
663
-
664
- test 'uses metadata from tag if use_journal false and lookup_from_k8s_field false' do
665
- # with use_journal unset, should still use the journal fields instead of tag fields
666
- tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
667
- msg = {
668
- 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
669
- 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
670
- 'kubernetes' => {
671
- 'namespace_name' => 'k8s-namespace-name',
672
- 'pod_name' => 'k8s-pod-name',
673
- 'container_name' => 'k8s-container-name'
674
- },
675
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
676
- 'randomfield' => 'randomvalue'
677
- }
678
- VCR.use_cassette('metadata_from_tag_and_journald_fields') do
679
- es = emit_with_tag(tag, msg, '
680
- kubernetes_url https://localhost:8443
681
- watch false
682
- cache_size 1
683
- lookup_from_k8s_field false
684
- use_journal false
685
- ')
686
- expected_kube_metadata = {
687
- 'docker' => {
688
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
689
- },
690
- 'kubernetes' => {
691
- 'host' => 'jimmi-redhat.localnet',
692
- 'pod_name' => 'fabric8-console-controller-98rqc',
693
- 'container_name' => 'fabric8-console-container',
694
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
695
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
696
- 'namespace_name' => 'default',
697
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
698
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
699
- 'master_url' => 'https://localhost:8443',
700
- 'labels' => {
701
- 'component' => 'fabric8Console'
702
- }
703
- }
704
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
705
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
615
+ assert_equal(expected_kube_metadata, filtered[0])
706
616
  end
707
617
  end
708
618
 
709
619
  test 'with kubernetes annotations' do
710
620
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
711
- es = emit({},'
621
+ filtered = emit({},'
712
622
  kubernetes_url https://localhost:8443
713
623
  watch false
714
624
  cache_size 1
@@ -719,16 +629,14 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
719
629
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
720
630
  },
721
631
  'kubernetes' => {
722
- 'host' => 'jimmi-redhat.localnet',
723
- 'pod_name' => 'fabric8-console-controller-98rqc',
724
- 'container_name' => 'fabric8-console-container',
725
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
726
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
727
- 'namespace_name' => 'default',
728
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
729
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
730
- 'master_url' => 'https://localhost:8443',
731
- 'labels' => {
632
+ 'host' => 'jimmi-redhat.localnet',
633
+ 'pod_name' => 'fabric8-console-controller-98rqc',
634
+ 'container_name' => 'fabric8-console-container',
635
+ 'namespace_name' => 'default',
636
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
637
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
638
+ 'master_url' => 'https://localhost:8443',
639
+ 'labels' => {
732
640
  'component' => 'fabric8Console'
733
641
  },
734
642
  'annotations' => {
@@ -737,7 +645,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
737
645
  }
738
646
  }
739
647
  }
740
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
648
+ assert_equal(expected_kube_metadata, filtered[0])
741
649
  end
742
650
  end
743
651
 
@@ -750,7 +658,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
750
658
  'randomfield' => 'randomvalue'
751
659
  }
752
660
  VCR.use_cassette('kubernetes_docker_metadata') do
753
- es = emit_with_tag(tag, msg, '
661
+ filtered = emit_with_tag(tag, msg, '
754
662
  kubernetes_url https://localhost:8443
755
663
  watch false
756
664
  cache_size 1
@@ -761,27 +669,25 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
761
669
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
762
670
  },
763
671
  'kubernetes' => {
764
- 'host' => 'jimmi-redhat.localnet',
765
- 'pod_name' => 'fabric8-console-controller-98rqc',
766
- 'container_name' => 'fabric8-console-container',
767
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
768
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
769
- 'namespace_name' => 'default',
770
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
771
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
772
- 'master_url' => 'https://localhost:8443',
672
+ 'host' => 'jimmi-redhat.localnet',
673
+ 'pod_name' => 'fabric8-console-controller-98rqc',
674
+ 'container_name' => 'fabric8-console-container',
675
+ 'namespace_name' => 'default',
676
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
677
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
678
+ 'master_url' => 'https://localhost:8443',
773
679
  'labels' => {
774
680
  'component' => 'fabric8Console'
775
681
  }
776
682
  }
777
683
  }.merge(msg)
778
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
684
+ assert_equal(expected_kube_metadata, filtered[0])
779
685
  end
780
686
  end
781
687
 
782
688
  test 'with kubernetes namespace annotations' do
783
689
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
784
- es = emit({},'
690
+ filtered = emit({},'
785
691
  kubernetes_url https://localhost:8443
786
692
  watch false
787
693
  cache_size 1
@@ -792,16 +698,14 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
792
698
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
793
699
  },
794
700
  'kubernetes' => {
795
- 'host' => 'jimmi-redhat.localnet',
796
- 'pod_name' => 'fabric8-console-controller-98rqc',
797
- 'container_name' => 'fabric8-console-container',
798
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
799
- 'namespace_name' => 'default',
800
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
801
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
802
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
803
- 'master_url' => 'https://localhost:8443',
804
- 'labels' => {
701
+ 'host' => 'jimmi-redhat.localnet',
702
+ 'pod_name' => 'fabric8-console-controller-98rqc',
703
+ 'container_name' => 'fabric8-console-container',
704
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
705
+ 'namespace_name' => 'default',
706
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
707
+ 'master_url' => 'https://localhost:8443',
708
+ 'labels' => {
805
709
  'component' => 'fabric8Console'
806
710
  },
807
711
  'annotations' => {
@@ -813,13 +717,13 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
813
717
  }
814
718
  }
815
719
  }
816
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
720
+ assert_equal(expected_kube_metadata, filtered[0])
817
721
  end
818
722
  end
819
723
 
820
724
  test 'with kubernetes namespace annotations no match' do
821
725
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
822
- es = emit({},'
726
+ filtered = emit({},'
823
727
  kubernetes_url https://localhost:8443
824
728
  watch false
825
729
  cache_size 1
@@ -830,21 +734,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
830
734
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
831
735
  },
832
736
  'kubernetes' => {
833
- 'host' => 'jimmi-redhat.localnet',
834
- 'pod_name' => 'fabric8-console-controller-98rqc',
835
- 'container_name' => 'fabric8-console-container',
836
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
837
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
838
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
839
- 'namespace_name' => 'default',
840
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
841
- 'master_url' => 'https://localhost:8443',
842
- 'labels' => {
737
+ 'host' => 'jimmi-redhat.localnet',
738
+ 'pod_name' => 'fabric8-console-controller-98rqc',
739
+ 'container_name' => 'fabric8-console-container',
740
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
741
+ 'namespace_name' => 'default',
742
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
743
+ 'master_url' => 'https://localhost:8443',
744
+ 'labels' => {
843
745
  'component' => 'fabric8Console'
844
746
  }
845
747
  }
846
748
  }
847
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
749
+ assert_equal(expected_kube_metadata, filtered[0])
848
750
  end
849
751
  end
850
752
  test 'with CONTAINER_NAME that does not match' do
@@ -855,7 +757,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
855
757
  'randomfield' => 'randomvalue'
856
758
  }
857
759
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
858
- es = emit_with_tag(tag, msg, '
760
+ filtered = emit_with_tag(tag, msg, '
859
761
  kubernetes_url https://localhost:8443
860
762
  watch false
861
763
  cache_size 1
@@ -866,7 +768,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
866
768
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
867
769
  'randomfield' => 'randomvalue'
868
770
  }
869
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
771
+ assert_equal(expected_kube_metadata, filtered[0])
870
772
  end
871
773
  end
872
774
  test 'with CONTAINER_NAME starts with k8s_ that does not match' do
@@ -877,7 +779,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
877
779
  'randomfield' => 'randomvalue'
878
780
  }
879
781
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
880
- es = emit_with_tag(tag, msg, '
782
+ filtered = emit_with_tag(tag, msg, '
881
783
  kubernetes_url https://localhost:8443
882
784
  watch false
883
785
  cache_size 1
@@ -888,7 +790,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
888
790
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
889
791
  'randomfield' => 'randomvalue'
890
792
  }
891
- assert_equal(expected_kube_metadata, es.instance_variable_get(:@record_array)[0])
793
+ assert_equal(expected_kube_metadata, filtered[0])
892
794
  end
893
795
  end
894
796
  end