fluent-plugin-kubernetes_metadata_filter 1.2.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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