fluent-plugin-kubernetes_metadata_filter 2.6.0 → 2.8.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.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #
2
4
  # Fluentd Kubernetes Metadata Filter Plugin - Enrich Fluentd events with
3
5
  # Kubernetes metadata
@@ -33,12 +35,17 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
33
35
  end
34
36
 
35
37
  sub_test_case 'configure' do
36
-
37
38
  test 'check default' do
38
39
  d = create_driver
39
40
  assert_equal(1000, d.instance.cache_size)
40
41
  end
41
42
 
43
+ test 'check test_api_adapter' do
44
+ d = create_driver('test_api_adapter KubernetesMetadata::TestApiAdapter')
45
+ assert_equal('KubernetesMetadata::TestApiAdapter', d.instance.test_api_adapter)
46
+ end
47
+
48
+
42
49
  test 'kubernetes url' do
43
50
  VCR.use_cassette('valid_kubernetes_api_server') do
44
51
  d = create_driver('
@@ -77,94 +84,89 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
77
84
 
78
85
  test 'service account credentials' do
79
86
  VCR.use_cassette('valid_kubernetes_api_server') do
80
- begin
81
- ENV['KUBERNETES_SERVICE_HOST'] = 'localhost'
82
- ENV['KUBERNETES_SERVICE_PORT'] = '8443'
87
+ ENV['KUBERNETES_SERVICE_HOST'] = 'localhost'
88
+ ENV['KUBERNETES_SERVICE_PORT'] = '8443'
83
89
 
84
- Dir.mktmpdir { |dir|
85
- # Fake token file and CA crt.
86
- expected_cert_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_CA_CERT)
87
- expected_token_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_TOKEN)
90
+ Dir.mktmpdir do |dir|
91
+ # Fake token file and CA crt.
92
+ expected_cert_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_CA_CERT)
93
+ expected_token_path = File.join(dir, Plugin::KubernetesMetadataFilter::K8_POD_TOKEN)
88
94
 
89
- File.open(expected_cert_path, "w") {}
90
- File.open(expected_token_path, "w") {}
95
+ File.open(expected_cert_path, 'w')
96
+ File.open(expected_token_path, 'w')
91
97
 
92
- d = create_driver("
98
+ d = create_driver("
93
99
  watch false
94
100
  secret_dir #{dir}
95
101
  ")
96
102
 
97
- assert_equal(d.instance.kubernetes_url, "https://localhost:8443/api")
98
- assert_equal(d.instance.ca_file, expected_cert_path)
99
- assert_equal(d.instance.bearer_token_file, expected_token_path)
100
- }
101
- ensure
102
- ENV['KUBERNETES_SERVICE_HOST'] = nil
103
- ENV['KUBERNETES_SERVICE_PORT'] = nil
103
+ assert_equal(d.instance.kubernetes_url, 'https://localhost:8443/api')
104
+ assert_equal(d.instance.ca_file, expected_cert_path)
105
+ assert_equal(d.instance.bearer_token_file, expected_token_path)
104
106
  end
107
+ ensure
108
+ ENV['KUBERNETES_SERVICE_HOST'] = nil
109
+ ENV['KUBERNETES_SERVICE_PORT'] = nil
105
110
  end
106
111
  end
107
112
 
108
113
  test 'service account credential files are tested for existence' do
109
114
  VCR.use_cassette('valid_kubernetes_api_server') do
110
- begin
111
- ENV['KUBERNETES_SERVICE_HOST'] = 'localhost'
112
- ENV['KUBERNETES_SERVICE_PORT'] = '8443'
115
+ ENV['KUBERNETES_SERVICE_HOST'] = 'localhost'
116
+ ENV['KUBERNETES_SERVICE_PORT'] = '8443'
113
117
 
114
- Dir.mktmpdir { |dir|
115
- d = create_driver("
118
+ Dir.mktmpdir do |dir|
119
+ d = create_driver("
116
120
  watch false
117
121
  secret_dir #{dir}
118
122
  ")
119
- assert_equal(d.instance.kubernetes_url, "https://localhost:8443/api")
120
- assert_nil(d.instance.ca_file, nil)
121
- assert_nil(d.instance.bearer_token_file)
122
- }
123
- ensure
124
- ENV['KUBERNETES_SERVICE_HOST'] = nil
125
- ENV['KUBERNETES_SERVICE_PORT'] = nil
123
+ assert_equal(d.instance.kubernetes_url, 'https://localhost:8443/api')
124
+ assert_nil(d.instance.ca_file, nil)
125
+ assert_nil(d.instance.bearer_token_file)
126
126
  end
127
+ ensure
128
+ ENV['KUBERNETES_SERVICE_HOST'] = nil
129
+ ENV['KUBERNETES_SERVICE_PORT'] = nil
127
130
  end
128
131
  end
129
132
  end
130
133
 
131
- sub_test_case 'filter_stream' do
132
-
133
- def emit(msg={}, config='
134
+ sub_test_case 'filter' do
135
+ def emit(msg = {}, config = '
134
136
  kubernetes_url https://localhost:8443
135
137
  watch false
136
138
  cache_size 1
137
139
  ', d: nil)
138
140
  d = create_driver(config) if d.nil?
139
- d.run(default_tag: DEFAULT_TAG) {
141
+ d.run(default_tag: DEFAULT_TAG) do
140
142
  d.feed(@time, msg)
141
- }
142
- d.filtered.map{|e| e.last}
143
+ end
144
+ d.filtered.map(&:last)
143
145
  end
144
146
 
145
- def emit_with_tag(tag, msg={}, config='
147
+ def emit_with_tag(tag, msg = {}, config = '
146
148
  kubernetes_url https://localhost:8443
147
149
  watch false
148
150
  cache_size 1
149
151
  ')
150
152
  d = create_driver(config)
151
- d.run(default_tag: tag) {
153
+ d.run(default_tag: tag) do
152
154
  d.feed(@time, msg)
153
- }
154
- d.filtered.map{|e| e.last}
155
+ end
156
+ d.filtered.map(&:last)
155
157
  end
156
158
 
157
159
  test 'nil event stream' do
158
- #not certain how this is possible but adding test to properly
159
- #guard against this condition we have seen - test for nil,
160
- #empty, no empty method, not an event stream
161
- plugin = create_driver.instance
162
- plugin.filter_stream('tag', nil)
163
- plugin.filter_stream('tag', Fluent::MultiEventStream.new)
160
+ # not certain how this is possible but adding test to properly
161
+ # guard against this condition we have seen - test for nil,
162
+ # empty, no empty method, not an event stream
163
+ plugin = create_driver.instance
164
+ plugin.filter_stream('tag', nil)
165
+ plugin.filter_stream('tag', Fluent::MultiEventStream.new)
164
166
  end
165
167
 
166
168
  test 'inability to connect to the api server handles exception and doensnt block pipeline' do
167
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}]) do
169
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }]) do
168
170
  driver = create_driver('
169
171
  kubernetes_url https://localhost:8443
170
172
  watch false
@@ -172,18 +174,18 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
172
174
  ')
173
175
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_raise(SocketError.new('error from pod fetch'))
174
176
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_raise(SocketError.new('socket error from namespace fetch'))
175
- filtered = emit({'time'=>'2015-05-08T09:22:01Z'}, '', :d => driver)
177
+ filtered = emit({ 'time' => '2015-05-08T09:22:01Z' }, '', d: driver)
176
178
  expected_kube_metadata = {
177
- 'time'=>'2015-05-08T09:22:01Z',
179
+ 'time' => '2015-05-08T09:22:01Z',
178
180
  'docker' => {
179
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
181
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
180
182
  },
181
183
  'kubernetes' => {
182
- 'pod_name' => 'fabric8-console-controller-98rqc',
184
+ 'pod_name' => 'fabric8-console-controller-98rqc',
183
185
  'container_name' => 'fabric8-console-container',
184
- "namespace_id"=>"orphaned",
186
+ 'namespace_id' => 'orphaned',
185
187
  'namespace_name' => '.orphaned',
186
- "orphaned_namespace"=>"default"
188
+ 'orphaned_namespace' => 'default'
187
189
  }
188
190
  }
189
191
  assert_equal(expected_kube_metadata, filtered[0])
@@ -191,7 +193,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
191
193
  end
192
194
 
193
195
  test 'with docker & kubernetes metadata where id cache hit and metadata miss' do
194
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}]) do
196
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }]) do
195
197
  driver = create_driver('
196
198
  kubernetes_url https://localhost:8443
197
199
  watch false
@@ -199,23 +201,23 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
199
201
  ')
200
202
  cache = driver.instance.instance_variable_get(:@id_cache)
201
203
  cache['49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'] = {
202
- :pod_id =>'c76927af-f563-11e4-b32d-54ee7527188d',
203
- :namespace_id =>'898268c8-4a36-11e5-9d81-42010af0194c'
204
+ pod_id: 'c76927af-f563-11e4-b32d-54ee7527188d',
205
+ namespace_id: '898268c8-4a36-11e5-9d81-42010af0194c'
204
206
  }
205
207
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_timeout
206
208
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_timeout
207
- filtered = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
209
+ filtered = emit({ 'time' => '2015-05-08T09:22:01Z' }, '', d: driver)
208
210
  expected_kube_metadata = {
209
- 'time'=>'2015-05-08T09:22:01Z',
211
+ 'time' => '2015-05-08T09:22:01Z',
210
212
  'docker' => {
211
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
213
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
212
214
  },
213
215
  'kubernetes' => {
214
- 'pod_name' => 'fabric8-console-controller-98rqc',
215
- 'container_name' => 'fabric8-console-container',
216
- 'namespace_name' => 'default',
217
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
218
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
216
+ 'pod_name' => 'fabric8-console-controller-98rqc',
217
+ 'container_name' => 'fabric8-console-container',
218
+ 'namespace_name' => 'default',
219
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
220
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d'
219
221
  }
220
222
  }
221
223
 
@@ -224,7 +226,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
224
226
  end
225
227
 
226
228
  test 'with docker & kubernetes metadata where id cache hit and metadata is reloaded' do
227
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'}, {name: 'kubernetes_get_namespace_default'}]) do
229
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' }, { name: 'kubernetes_get_namespace_default' }]) do
228
230
  driver = create_driver('
229
231
  kubernetes_url https://localhost:8443
230
232
  watch false
@@ -232,25 +234,26 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
232
234
  ')
233
235
  cache = driver.instance.instance_variable_get(:@id_cache)
234
236
  cache['49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'] = {
235
- :pod_id =>'c76927af-f563-11e4-b32d-54ee7527188d',
236
- :namespace_id =>'898268c8-4a36-11e5-9d81-42010af0194c'
237
+ pod_id: 'c76927af-f563-11e4-b32d-54ee7527188d',
238
+ namespace_id: '898268c8-4a36-11e5-9d81-42010af0194c'
237
239
  }
238
- filtered = emit({'time'=>'2015-05-08T09:22:01Z'}, '', d:driver)
240
+ filtered = emit({ 'time' => '2015-05-08T09:22:01Z' }, '', d: driver)
239
241
  expected_kube_metadata = {
240
- 'time'=>'2015-05-08T09:22:01Z',
242
+ 'time' => '2015-05-08T09:22:01Z',
241
243
  'docker' => {
242
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
244
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
243
245
  },
244
246
  'kubernetes' => {
245
- 'host' => 'jimmi-redhat.localnet',
246
- 'pod_name' => 'fabric8-console-controller-98rqc',
247
- 'container_name' => 'fabric8-console-container',
248
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
247
+ 'host' => 'jimmi-redhat.localnet',
248
+ 'pod_name' => 'fabric8-console-controller-98rqc',
249
+ 'container_name' => 'fabric8-console-container',
250
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
249
251
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
250
- 'namespace_name' => 'default',
251
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
252
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
253
- 'master_url' => 'https://localhost:8443',
252
+ 'namespace_name' => 'default',
253
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
254
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
255
+ 'pod_ip' => '172.17.0.8',
256
+ 'master_url' => 'https://localhost:8443',
254
257
  'labels' => {
255
258
  'component' => 'fabric8Console'
256
259
  }
@@ -262,23 +265,24 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
262
265
  end
263
266
 
264
267
  test 'with docker & kubernetes metadata' do
265
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'}, {name: 'kubernetes_get_namespace_default'}]) do
266
- filtered = emit({'time'=>'2015-05-08T09:22:01Z'})
268
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' }, { name: 'kubernetes_get_namespace_default' }]) do
269
+ filtered = emit({ 'time' => '2015-05-08T09:22:01Z' })
267
270
  expected_kube_metadata = {
268
- 'time'=>'2015-05-08T09:22:01Z',
271
+ 'time' => '2015-05-08T09:22:01Z',
269
272
  'docker' => {
270
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
273
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
271
274
  },
272
275
  'kubernetes' => {
273
- 'host' => 'jimmi-redhat.localnet',
274
- 'pod_name' => 'fabric8-console-controller-98rqc',
275
- 'container_name' => 'fabric8-console-container',
276
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
276
+ 'host' => 'jimmi-redhat.localnet',
277
+ 'pod_name' => 'fabric8-console-controller-98rqc',
278
+ 'container_name' => 'fabric8-console-container',
279
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
277
280
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
278
- 'namespace_name' => 'default',
279
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
280
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
281
- 'master_url' => 'https://localhost:8443',
281
+ 'namespace_name' => 'default',
282
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
283
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
284
+ 'pod_ip' => '172.17.0.8',
285
+ 'master_url' => 'https://localhost:8443',
282
286
  'labels' => {
283
287
  'component' => 'fabric8Console'
284
288
  }
@@ -290,8 +294,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
290
294
  end
291
295
 
292
296
  test 'with docker & kubernetes metadata & namespace_id enabled' do
293
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
294
- {name: 'kubernetes_get_namespace_default', options: {allow_playback_repeats: true}}]) do
297
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
298
+ { name: 'kubernetes_get_namespace_default', options: { allow_playback_repeats: true } }]) do
295
299
  filtered = emit({}, '
296
300
  kubernetes_url https://localhost:8443
297
301
  watch false
@@ -299,18 +303,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
299
303
  ')
300
304
  expected_kube_metadata = {
301
305
  'docker' => {
302
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
306
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
303
307
  },
304
308
  'kubernetes' => {
305
- 'host' => 'jimmi-redhat.localnet',
306
- 'pod_name' => 'fabric8-console-controller-98rqc',
307
- 'container_name' => 'fabric8-console-container',
308
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
309
+ 'host' => 'jimmi-redhat.localnet',
310
+ 'pod_name' => 'fabric8-console-controller-98rqc',
311
+ 'container_name' => 'fabric8-console-container',
312
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
309
313
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
310
- 'namespace_name' => 'default',
311
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
312
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
313
- 'master_url' => 'https://localhost:8443',
314
+ 'namespace_name' => 'default',
315
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
316
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
317
+ 'pod_ip' => '172.17.0.8',
318
+ 'master_url' => 'https://localhost:8443',
314
319
  'labels' => {
315
320
  'component' => 'fabric8Console'
316
321
  }
@@ -321,8 +326,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
321
326
  end
322
327
 
323
328
  test 'with docker & kubernetes metadata using bearer token' do
324
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server_using_token'}, {name: 'kubernetes_get_api_v1_using_token'},
325
- {name: 'kubernetes_get_pod_using_token'}, {name: 'kubernetes_get_namespace_default_using_token'}]) do
329
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server_using_token' }, { name: 'kubernetes_get_api_v1_using_token' },
330
+ { name: 'kubernetes_get_pod_using_token' }, { name: 'kubernetes_get_namespace_default_using_token' }]) do
326
331
  filtered = emit({}, '
327
332
  kubernetes_url https://localhost:8443
328
333
  verify_ssl false
@@ -334,15 +339,16 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
334
339
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
335
340
  },
336
341
  'kubernetes' => {
337
- 'host' => 'jimmi-redhat.localnet',
338
- 'pod_name' => 'fabric8-console-controller-98rqc',
339
- 'container_name' => 'fabric8-console-container',
340
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
342
+ 'host' => 'jimmi-redhat.localnet',
343
+ 'pod_name' => 'fabric8-console-controller-98rqc',
344
+ 'container_name' => 'fabric8-console-container',
345
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
341
346
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
342
- 'namespace_name' => 'default',
343
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
344
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
345
- 'master_url' => 'https://localhost:8443',
347
+ 'namespace_name' => 'default',
348
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
349
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
350
+ 'pod_ip' => '172.17.0.8',
351
+ 'master_url' => 'https://localhost:8443',
346
352
  'labels' => {
347
353
  'component' => 'fabric8Console'
348
354
  }
@@ -355,14 +361,14 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
355
361
  test 'with docker & kubernetes metadata but no configured api server' do
356
362
  filtered = emit({}, '')
357
363
  expected_kube_metadata = {
358
- 'docker' => {
359
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
360
- },
361
- 'kubernetes' => {
362
- 'pod_name' => 'fabric8-console-controller-98rqc',
363
- 'container_name' => 'fabric8-console-container',
364
- 'namespace_name' => 'default',
365
- }
364
+ 'docker' => {
365
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
366
+ },
367
+ 'kubernetes' => {
368
+ 'pod_name' => 'fabric8-console-controller-98rqc',
369
+ 'container_name' => 'fabric8-console-container',
370
+ 'namespace_name' => 'default'
371
+ }
366
372
  }
367
373
  assert_equal(expected_kube_metadata, filtered[0])
368
374
  end
@@ -375,17 +381,17 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
375
381
  )
376
382
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc').to_timeout
377
383
  stub_request(:any, 'https://localhost:8443/api/v1/namespaces/default').to_timeout
378
- filtered = emit()
384
+ filtered = emit
379
385
  expected_kube_metadata = {
380
386
  'docker' => {
381
387
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
382
388
  },
383
389
  'kubernetes' => {
384
- 'pod_name' => 'fabric8-console-controller-98rqc',
385
- 'container_name' => 'fabric8-console-container',
386
- 'namespace_name' => '.orphaned',
390
+ 'pod_name' => 'fabric8-console-controller-98rqc',
391
+ 'container_name' => 'fabric8-console-container',
392
+ 'namespace_name' => '.orphaned',
387
393
  'orphaned_namespace' => 'default',
388
- 'namespace_id' => 'orphaned'
394
+ 'namespace_id' => 'orphaned'
389
395
  }
390
396
  }
391
397
  assert_equal(expected_kube_metadata, filtered[0])
@@ -404,9 +410,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
404
410
  'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
405
411
  },
406
412
  'kubernetes' => {
407
- 'pod_name' => 'fabric8-console-controller.98rqc',
408
- 'container_name' => 'fabric8-console-container',
409
- 'namespace_name' => 'default'
413
+ 'pod_name' => 'fabric8-console-controller.98rqc',
414
+ 'container_name' => 'fabric8-console-container',
415
+ 'namespace_name' => 'default'
410
416
  }
411
417
  }
412
418
  assert_equal(expected_kube_metadata, filtered[0])
@@ -414,21 +420,21 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
414
420
 
415
421
  test 'with docker metadata, non-kubernetes' do
416
422
  filtered = emit_with_tag('non-kubernetes', {}, '')
417
- assert_false(filtered[0].has_key?(:kubernetes))
423
+ assert_false(filtered[0].key?(:kubernetes))
418
424
  end
419
425
 
420
426
  test 'ignores invalid json in log field' do
421
427
  json_log = "{'foo':123}"
422
428
  msg = {
423
- 'log' => json_log
429
+ 'log' => json_log
424
430
  }
425
431
  filtered = emit_with_tag('non-kubernetes', msg, '')
426
432
  assert_equal(msg, filtered[0])
427
433
  end
428
434
 
429
435
  test 'with kubernetes dotted labels, de_dot enabled' do
430
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
431
- {name: 'kubernetes_docker_metadata_dotted_labels'}]) do
436
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
437
+ { name: 'kubernetes_docker_metadata_dotted_labels' }]) do
432
438
  filtered = emit({}, '
433
439
  kubernetes_url https://localhost:8443
434
440
  watch false
@@ -436,21 +442,22 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
436
442
  ')
437
443
  expected_kube_metadata = {
438
444
  'docker' => {
439
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
445
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
440
446
  },
441
447
  'kubernetes' => {
442
- 'host' => 'jimmi-redhat.localnet',
443
- 'pod_name' => 'fabric8-console-controller-98rqc',
444
- 'container_name' => 'fabric8-console-container',
445
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
448
+ 'host' => 'jimmi-redhat.localnet',
449
+ 'pod_name' => 'fabric8-console-controller-98rqc',
450
+ 'container_name' => 'fabric8-console-container',
451
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
446
452
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
447
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
448
- 'namespace_labels' => {
453
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
454
+ 'namespace_labels' => {
449
455
  'kubernetes_io/namespacetest' => 'somevalue'
450
456
  },
451
- 'namespace_name' => 'default',
452
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
453
- 'master_url' => 'https://localhost:8443',
457
+ 'namespace_name' => 'default',
458
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
459
+ 'pod_ip' => '172.17.0.8',
460
+ 'master_url' => 'https://localhost:8443',
454
461
  'labels' => {
455
462
  'kubernetes_io/test' => 'somevalue'
456
463
  }
@@ -461,8 +468,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
461
468
  end
462
469
 
463
470
  test 'with kubernetes dotted labels, de_dot disabled' do
464
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
465
- {name: 'kubernetes_docker_metadata_dotted_labels'}]) do
471
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
472
+ { name: 'kubernetes_docker_metadata_dotted_labels' }]) do
466
473
  filtered = emit({}, '
467
474
  kubernetes_url https://localhost:8443
468
475
  watch false
@@ -471,21 +478,22 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
471
478
  ')
472
479
  expected_kube_metadata = {
473
480
  'docker' => {
474
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
481
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
475
482
  },
476
483
  'kubernetes' => {
477
- 'host' => 'jimmi-redhat.localnet',
478
- 'pod_name' => 'fabric8-console-controller-98rqc',
479
- 'container_name' => 'fabric8-console-container',
480
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
484
+ 'host' => 'jimmi-redhat.localnet',
485
+ 'pod_name' => 'fabric8-console-controller-98rqc',
486
+ 'container_name' => 'fabric8-console-container',
487
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
481
488
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
482
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
483
- 'namespace_labels' => {
489
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
490
+ 'namespace_labels' => {
484
491
  'kubernetes.io/namespacetest' => 'somevalue'
485
492
  },
486
- 'namespace_name' => 'default',
487
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
488
- 'master_url' => 'https://localhost:8443',
493
+ 'namespace_name' => 'default',
494
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
495
+ 'pod_ip' => '172.17.0.8',
496
+ 'master_url' => 'https://localhost:8443',
489
497
  'labels' => {
490
498
  'kubernetes.io/test' => 'somevalue'
491
499
  }
@@ -511,8 +519,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
511
519
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
512
520
  'randomfield' => 'randomvalue'
513
521
  }
514
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
515
- {name: 'kubernetes_get_namespace_default'}]) do
522
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
523
+ { name: 'kubernetes_get_namespace_default' }]) do
516
524
  filtered = emit_with_tag(tag, msg, '
517
525
  kubernetes_url https://localhost:8443
518
526
  watch false
@@ -521,18 +529,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
521
529
  ')
522
530
  expected_kube_metadata = {
523
531
  'docker' => {
524
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
532
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
525
533
  },
526
534
  'kubernetes' => {
527
- 'host' => 'jimmi-redhat.localnet',
528
- 'pod_name' => 'fabric8-console-controller-98rqc',
529
- 'container_name' => 'fabric8-console-container',
530
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
535
+ 'host' => 'jimmi-redhat.localnet',
536
+ 'pod_name' => 'fabric8-console-controller-98rqc',
537
+ 'container_name' => 'fabric8-console-container',
538
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
531
539
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
532
- 'namespace_name' => 'default',
533
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
534
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
535
- 'master_url' => 'https://localhost:8443',
540
+ 'namespace_name' => 'default',
541
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
542
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
543
+ 'pod_ip' => '172.17.0.8',
544
+ 'master_url' => 'https://localhost:8443',
536
545
  'labels' => {
537
546
  'component' => 'fabric8Console'
538
547
  }
@@ -550,8 +559,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
550
559
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
551
560
  'randomfield' => 'randomvalue'
552
561
  }
553
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
554
- {name: 'kubernetes_get_namespace_default', options: {allow_playback_repeats: true}}]) do
562
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
563
+ { name: 'kubernetes_get_namespace_default', options: { allow_playback_repeats: true } }]) do
555
564
  filtered = emit_with_tag(tag, msg, '
556
565
  kubernetes_url https://localhost:8443
557
566
  watch false
@@ -560,18 +569,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
560
569
  ')
561
570
  expected_kube_metadata = {
562
571
  'docker' => {
563
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
572
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
564
573
  },
565
574
  'kubernetes' => {
566
- 'host' => 'jimmi-redhat.localnet',
567
- 'pod_name' => 'fabric8-console-controller-98rqc',
568
- 'container_name' => 'fabric8-console-container',
569
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
575
+ 'host' => 'jimmi-redhat.localnet',
576
+ 'pod_name' => 'fabric8-console-controller-98rqc',
577
+ 'container_name' => 'fabric8-console-container',
578
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
570
579
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
571
- 'namespace_name' => 'default',
572
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
573
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
574
- 'master_url' => 'https://localhost:8443',
580
+ 'namespace_name' => 'default',
581
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
582
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
583
+ 'pod_ip' => '172.17.0.8',
584
+ 'master_url' => 'https://localhost:8443',
575
585
  'labels' => {
576
586
  'component' => 'fabric8Console'
577
587
  }
@@ -592,12 +602,12 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
592
602
  'pod_name' => 'k8s-pod-name',
593
603
  'container_name' => 'k8s-container-name'
594
604
  },
595
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
605
+ 'docker' => { 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95' },
596
606
  'randomfield' => 'randomvalue'
597
607
  }
598
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
599
- {name: 'kubernetes_get_namespace_default'},
600
- {name: 'metadata_from_tag_journald_and_kubernetes_fields'}]) do
608
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
609
+ { name: 'kubernetes_get_namespace_default' },
610
+ { name: 'metadata_from_tag_journald_and_kubernetes_fields' }]) do
601
611
  es = emit_with_tag(tag, msg, '
602
612
  kubernetes_url https://localhost:8443
603
613
  watch false
@@ -605,23 +615,24 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
605
615
  ')
606
616
  expected_kube_metadata = {
607
617
  'docker' => {
608
- 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'
618
+ 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'
609
619
  },
610
620
  'kubernetes' => {
611
- 'host' => 'jimmi-redhat.localnet',
612
- 'pod_name' => 'k8s-pod-name',
613
- 'container_name' => 'k8s-container-name',
614
- 'container_image' => 'k8s-container-image:latest',
621
+ 'host' => 'jimmi-redhat.localnet',
622
+ 'pod_name' => 'k8s-pod-name',
623
+ 'container_name' => 'k8s-container-name',
624
+ 'container_image' => 'k8s-container-image:latest',
615
625
  'container_image_id' => 'docker://d78c5217c41e9af08d37d9ae2cb070afa1fe3da6bc77bfb18879a8b4bfdf8a34',
616
- 'namespace_name' => 'k8s-namespace-name',
617
- 'namespace_id' => '8e0dc8fc-59f2-49f7-a3e2-ed0913e19d9f',
618
- 'pod_id' => 'ebabf749-5fcd-4750-a3f0-aedd89476da8',
619
- 'master_url' => 'https://localhost:8443',
626
+ 'namespace_name' => 'k8s-namespace-name',
627
+ 'namespace_id' => '8e0dc8fc-59f2-49f7-a3e2-ed0913e19d9f',
628
+ 'pod_id' => 'ebabf749-5fcd-4750-a3f0-aedd89476da8',
629
+ 'pod_ip' => '172.17.0.8',
630
+ 'master_url' => 'https://localhost:8443',
620
631
  'labels' => {
621
632
  'component' => 'k8s-test'
622
633
  }
623
634
  }
624
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
635
+ }.merge(msg) { |key, oldval, newval| (key == 'kubernetes') || (key == 'docker') ? oldval : newval }
625
636
  assert_equal(expected_kube_metadata, es[0])
626
637
  end
627
638
  end
@@ -637,12 +648,12 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
637
648
  'pod_name' => 'k8s-pod-name',
638
649
  'container_name' => 'k8s-container-name'
639
650
  },
640
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
651
+ 'docker' => { 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95' },
641
652
  'randomfield' => 'randomvalue'
642
653
  }
643
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
644
- {name: 'kubernetes_get_namespace_default', options: {allow_playback_repeats: true}},
645
- {name: 'metadata_from_tag_and_journald_fields'}]) do
654
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
655
+ { name: 'kubernetes_get_namespace_default', options: { allow_playback_repeats: true } },
656
+ { name: 'metadata_from_tag_and_journald_fields' }]) do
646
657
  es = emit_with_tag(tag, msg, '
647
658
  kubernetes_url https://localhost:8443
648
659
  watch false
@@ -651,23 +662,24 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
651
662
  ')
652
663
  expected_kube_metadata = {
653
664
  'docker' => {
654
- 'container_id' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b'
665
+ 'container_id' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b'
655
666
  },
656
667
  'kubernetes' => {
657
- 'host' => 'jimmi-redhat.localnet',
658
- 'pod_name' => 'journald-pod-name',
659
- 'container_name' => 'journald-container-name',
660
- 'container_image' => 'journald-container-image:latest',
668
+ 'host' => 'jimmi-redhat.localnet',
669
+ 'pod_name' => 'journald-pod-name',
670
+ 'container_name' => 'journald-container-name',
671
+ 'container_image' => 'journald-container-image:latest',
661
672
  'container_image_id' => 'docker://dda4c95705fb7050b701b10a7fe928ca5bc971a1dcb521ae3c339194cbf36b47',
662
- 'namespace_name' => 'journald-namespace-name',
663
- 'namespace_id' => '8282888f-733f-4f23-a3d3-1fdfa3bdacf2',
664
- 'pod_id' => '5e1c1e27-b637-4e81-80b6-6d8a8c404d3b',
665
- 'master_url' => 'https://localhost:8443',
673
+ 'namespace_name' => 'journald-namespace-name',
674
+ 'namespace_id' => '8282888f-733f-4f23-a3d3-1fdfa3bdacf2',
675
+ 'pod_id' => '5e1c1e27-b637-4e81-80b6-6d8a8c404d3b',
676
+ 'pod_ip' => '172.17.0.8',
677
+ 'master_url' => 'https://localhost:8443',
666
678
  'labels' => {
667
679
  'component' => 'journald-test'
668
680
  }
669
681
  }
670
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
682
+ }.merge(msg) { |key, oldval, newval| (key == 'kubernetes') || (key == 'docker') ? oldval : newval }
671
683
  assert_equal(expected_kube_metadata, es[0])
672
684
  end
673
685
  end
@@ -683,12 +695,12 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
683
695
  'pod_name' => 'k8s-pod-name',
684
696
  'container_name' => 'k8s-container-name'
685
697
  },
686
- 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
698
+ 'docker' => { 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95' },
687
699
  'randomfield' => 'randomvalue'
688
700
  }
689
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
690
- {name: 'kubernetes_get_namespace_default', options: {allow_playback_repeats: true}},
691
- {name: 'metadata_from_tag_and_journald_fields'}]) do
701
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
702
+ { name: 'kubernetes_get_namespace_default', options: { allow_playback_repeats: true } },
703
+ { name: 'metadata_from_tag_and_journald_fields' }]) do
692
704
  es = emit_with_tag(tag, msg, '
693
705
  kubernetes_url https://localhost:8443
694
706
  watch false
@@ -698,59 +710,61 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
698
710
  ')
699
711
  expected_kube_metadata = {
700
712
  'docker' => {
701
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
713
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
702
714
  },
703
715
  'kubernetes' => {
704
- 'host' => 'jimmi-redhat.localnet',
705
- 'pod_name' => 'fabric8-console-controller-98rqc',
706
- 'container_name' => 'fabric8-console-container',
707
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
716
+ 'host' => 'jimmi-redhat.localnet',
717
+ 'pod_name' => 'fabric8-console-controller-98rqc',
718
+ 'container_name' => 'fabric8-console-container',
719
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
708
720
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
709
- 'namespace_name' => 'default',
710
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
711
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
712
- 'master_url' => 'https://localhost:8443',
721
+ 'namespace_name' => 'default',
722
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
723
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
724
+ 'pod_ip' => '172.17.0.8',
725
+ 'master_url' => 'https://localhost:8443',
713
726
  'labels' => {
714
727
  'component' => 'fabric8Console'
715
728
  }
716
729
  }
717
- }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
730
+ }.merge(msg) { |key, oldval, newval| (key == 'kubernetes') || (key == 'docker') ? oldval : newval }
718
731
  assert_equal(expected_kube_metadata, es[0])
719
732
  end
720
733
  end
721
734
 
722
735
  test 'with kubernetes annotations' do
723
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
724
- {name: 'kubernetes_docker_metadata_annotations'},
725
- {name: 'kubernetes_get_namespace_default'}]) do
726
- filtered = emit({},'
736
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
737
+ { name: 'kubernetes_docker_metadata_annotations' },
738
+ { name: 'kubernetes_get_namespace_default' }]) do
739
+ filtered = emit({}, '
727
740
  kubernetes_url https://localhost:8443
728
741
  watch false
729
742
  cache_size 1
730
743
  annotation_match [ "^custom.+", "two"]
731
744
  ')
732
745
  expected_kube_metadata = {
733
- 'docker' => {
734
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
746
+ 'docker' => {
747
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
748
+ },
749
+ 'kubernetes' => {
750
+ 'host' => 'jimmi-redhat.localnet',
751
+ 'pod_name' => 'fabric8-console-controller-98rqc',
752
+ 'container_name' => 'fabric8-console-container',
753
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
754
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
755
+ 'namespace_name' => 'default',
756
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
757
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
758
+ 'pod_ip' => '172.17.0.8',
759
+ 'master_url' => 'https://localhost:8443',
760
+ 'labels' => {
761
+ 'component' => 'fabric8Console'
735
762
  },
736
- 'kubernetes' => {
737
- 'host' => 'jimmi-redhat.localnet',
738
- 'pod_name' => 'fabric8-console-controller-98rqc',
739
- 'container_name' => 'fabric8-console-container',
740
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
741
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
742
- 'namespace_name' => 'default',
743
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
744
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
745
- 'master_url' => 'https://localhost:8443',
746
- 'labels' => {
747
- 'component' => 'fabric8Console'
748
- },
749
- 'annotations' => {
750
- 'custom_field1' => 'hello_kitty',
751
- 'field_two' => 'value'
752
- }
763
+ 'annotations' => {
764
+ 'custom_field1' => 'hello_kitty',
765
+ 'field_two' => 'value'
753
766
  }
767
+ }
754
768
  }
755
769
  assert_equal(expected_kube_metadata, filtered[0])
756
770
  end
@@ -765,12 +779,12 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
765
779
  'randomfield' => 'randomvalue'
766
780
  }
767
781
  VCR.use_cassettes([
768
- {name: 'valid_kubernetes_api_server'},
769
- {name: 'kubernetes_get_api_v1'},
770
- {name: 'kubernetes_get_pod'},
771
- {name: 'kubernetes_get_namespace_default'},
772
- {name: 'metadata_from_tag_and_journald_fields'}
773
- ]) do
782
+ { name: 'valid_kubernetes_api_server' },
783
+ { name: 'kubernetes_get_api_v1' },
784
+ { name: 'kubernetes_get_pod' },
785
+ { name: 'kubernetes_get_namespace_default' },
786
+ { name: 'metadata_from_tag_and_journald_fields' }
787
+ ]) do
774
788
  filtered = emit_with_tag(tag, msg, '
775
789
  kubernetes_url https://localhost:8443
776
790
  watch false
@@ -779,18 +793,19 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
779
793
  ')
780
794
  expected_kube_metadata = {
781
795
  'docker' => {
782
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
796
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
783
797
  },
784
798
  'kubernetes' => {
785
- 'host' => 'jimmi-redhat.localnet',
786
- 'pod_name' => 'fabric8-console-controller-98rqc',
787
- 'container_name' => 'fabric8-console-container',
788
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
799
+ 'host' => 'jimmi-redhat.localnet',
800
+ 'pod_name' => 'fabric8-console-controller-98rqc',
801
+ 'container_name' => 'fabric8-console-container',
802
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
789
803
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
790
- 'namespace_name' => 'default',
791
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
792
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
793
- 'master_url' => 'https://localhost:8443',
804
+ 'namespace_name' => 'default',
805
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
806
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
807
+ 'pod_ip' => '172.17.0.8',
808
+ 'master_url' => 'https://localhost:8443',
794
809
  'labels' => {
795
810
  'component' => 'fabric8Console'
796
811
  }
@@ -801,73 +816,75 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
801
816
  end
802
817
 
803
818
  test 'with kubernetes namespace annotations' do
804
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
805
- {name: 'kubernetes_docker_metadata_annotations'},
806
- {name: 'kubernetes_get_namespace_default'}]) do
807
- filtered = emit({},'
819
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
820
+ { name: 'kubernetes_docker_metadata_annotations' },
821
+ { name: 'kubernetes_get_namespace_default' }]) do
822
+ filtered = emit({}, '
808
823
  kubernetes_url https://localhost:8443
809
824
  watch false
810
825
  cache_size 1
811
826
  annotation_match [ "^custom.+", "two", "workspace*"]
812
827
  ')
813
828
  expected_kube_metadata = {
814
- 'docker' => {
815
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
829
+ 'docker' => {
830
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
831
+ },
832
+ 'kubernetes' => {
833
+ 'host' => 'jimmi-redhat.localnet',
834
+ 'pod_name' => 'fabric8-console-controller-98rqc',
835
+ 'container_name' => 'fabric8-console-container',
836
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
837
+ 'namespace_name' => 'default',
838
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
839
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
840
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
841
+ 'pod_ip' => '172.17.0.8',
842
+ 'master_url' => 'https://localhost:8443',
843
+ 'labels' => {
844
+ 'component' => 'fabric8Console'
845
+ },
846
+ 'annotations' => {
847
+ 'custom_field1' => 'hello_kitty',
848
+ 'field_two' => 'value'
816
849
  },
817
- 'kubernetes' => {
818
- 'host' => 'jimmi-redhat.localnet',
819
- 'pod_name' => 'fabric8-console-controller-98rqc',
820
- 'container_name' => 'fabric8-console-container',
821
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
822
- 'namespace_name' => 'default',
823
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
824
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
825
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
826
- 'master_url' => 'https://localhost:8443',
827
- 'labels' => {
828
- 'component' => 'fabric8Console'
829
- },
830
- 'annotations' => {
831
- 'custom_field1' => 'hello_kitty',
832
- 'field_two' => 'value'
833
- },
834
- 'namespace_annotations' => {
835
- 'workspaceId' => 'myWorkspaceName'
836
- }
850
+ 'namespace_annotations' => {
851
+ 'workspaceId' => 'myWorkspaceName'
837
852
  }
853
+ }
838
854
  }
839
855
  assert_equal(expected_kube_metadata, filtered[0])
840
856
  end
841
857
  end
842
858
 
843
859
  test 'with kubernetes namespace annotations no match' do
844
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
845
- {name: 'kubernetes_docker_metadata_annotations'},
846
- {name: 'kubernetes_get_namespace_default'}]) do
847
- filtered = emit({},'
860
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
861
+ { name: 'kubernetes_docker_metadata_annotations' },
862
+ { name: 'kubernetes_get_namespace_default' }]) do
863
+ filtered = emit({}, '
848
864
  kubernetes_url https://localhost:8443
849
865
  watch false
850
866
  cache_size 1
851
867
  annotation_match [ "noMatch*"]
852
868
  ')
853
869
  expected_kube_metadata = {
854
- 'docker' => {
855
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
856
- },
857
- 'kubernetes' => {
858
- 'host' => 'jimmi-redhat.localnet',
859
- 'pod_name' => 'fabric8-console-controller-98rqc',
860
- 'container_name' => 'fabric8-console-container',
861
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
862
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
863
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
864
- 'namespace_name' => 'default',
865
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
866
- 'master_url' => 'https://localhost:8443',
867
- 'labels' => {
868
- 'component' => 'fabric8Console'
869
- }
870
+ 'docker' => {
871
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
872
+ },
873
+ 'kubernetes' => {
874
+ 'host' => 'jimmi-redhat.localnet',
875
+ 'pod_name' => 'fabric8-console-controller-98rqc',
876
+ 'container_name' => 'fabric8-console-container',
877
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
878
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
879
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
880
+ 'namespace_name' => 'default',
881
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
882
+ 'pod_ip' => '172.17.0.8',
883
+ 'master_url' => 'https://localhost:8443',
884
+ 'labels' => {
885
+ 'component' => 'fabric8Console'
870
886
  }
887
+ }
871
888
  }
872
889
  assert_equal(expected_kube_metadata, filtered[0])
873
890
  end
@@ -880,9 +897,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
880
897
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
881
898
  'randomfield' => 'randomvalue'
882
899
  }
883
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
884
- {name: 'kubernetes_docker_metadata_annotations'},
885
- {name: 'kubernetes_get_namespace_default'}]) do
900
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
901
+ { name: 'kubernetes_docker_metadata_annotations' },
902
+ { name: 'kubernetes_get_namespace_default' }]) do
886
903
  filtered = emit_with_tag(tag, msg, '
887
904
  kubernetes_url https://localhost:8443
888
905
  watch false
@@ -905,9 +922,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
905
922
  'CONTAINER_ID_FULL' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459',
906
923
  'randomfield' => 'randomvalue'
907
924
  }
908
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
909
- {name: 'kubernetes_docker_metadata_annotations'},
910
- {name: 'kubernetes_get_namespace_default'}]) do
925
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
926
+ { name: 'kubernetes_docker_metadata_annotations' },
927
+ { name: 'kubernetes_get_namespace_default' }]) do
911
928
  filtered = emit_with_tag(tag, msg, '
912
929
  kubernetes_url https://localhost:8443
913
930
  watch false
@@ -924,10 +941,10 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
924
941
  end
925
942
 
926
943
  test 'processes all events when reading from MessagePackEventStream' do
927
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'},
928
- {name: 'kubernetes_get_pod'},
929
- {name: 'kubernetes_get_namespace_default'}]) do
930
- entries = [[@time, {'time'=>'2015-05-08T09:22:01Z'}], [@time, {'time'=>'2015-05-08T09:22:01Z'}]]
944
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' },
945
+ { name: 'kubernetes_get_pod' },
946
+ { name: 'kubernetes_get_namespace_default' }]) do
947
+ entries = [[@time, { 'time' => '2015-05-08T09:22:01Z' }], [@time, { 'time' => '2015-05-08T09:22:01Z' }]]
931
948
  array_stream = Fluent::ArrayEventStream.new(entries)
932
949
  msgpack_stream = Fluent::MessagePackEventStream.new(array_stream.to_msgpack_stream)
933
950
 
@@ -936,30 +953,31 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
936
953
  watch false
937
954
  cache_size 1
938
955
  ')
939
- d.run {
956
+ d.run do
940
957
  d.feed(DEFAULT_TAG, msgpack_stream)
941
- }
942
- filtered = d.filtered.map{|e| e.last}
958
+ end
959
+ filtered = d.filtered.map(&:last)
943
960
 
944
961
  expected_kube_metadata = {
945
- 'time'=>'2015-05-08T09:22:01Z',
946
- 'docker' => {
947
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
948
- },
949
- 'kubernetes' => {
950
- 'host' => 'jimmi-redhat.localnet',
951
- 'pod_name' => 'fabric8-console-controller-98rqc',
952
- 'container_name' => 'fabric8-console-container',
953
- 'container_image' => 'fabric8/hawtio-kubernetes:latest',
954
- 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
955
- 'namespace_name' => 'default',
956
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
957
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
958
- 'master_url' => 'https://localhost:8443',
959
- 'labels' => {
960
- 'component' => 'fabric8Console'
961
- }
962
+ 'time' => '2015-05-08T09:22:01Z',
963
+ 'docker' => {
964
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
965
+ },
966
+ 'kubernetes' => {
967
+ 'host' => 'jimmi-redhat.localnet',
968
+ 'pod_name' => 'fabric8-console-controller-98rqc',
969
+ 'container_name' => 'fabric8-console-container',
970
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
971
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
972
+ 'namespace_name' => 'default',
973
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
974
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
975
+ 'pod_ip' => '172.17.0.8',
976
+ 'master_url' => 'https://localhost:8443',
977
+ 'labels' => {
978
+ 'component' => 'fabric8Console'
962
979
  }
980
+ }
963
981
  }
964
982
 
965
983
  assert_equal(expected_kube_metadata, filtered[0])
@@ -968,9 +986,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
968
986
  end
969
987
 
970
988
  test 'with docker & kubernetes metadata using skip config params' do
971
- VCR.use_cassettes([{name: 'valid_kubernetes_api_server'}, {name: 'kubernetes_get_api_v1'}, {name: 'kubernetes_get_pod'},
972
- {name: 'kubernetes_get_namespace_default'}]) do
973
- filtered = emit({},'
989
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
990
+ { name: 'kubernetes_get_namespace_default' }]) do
991
+ filtered = emit({}, '
974
992
  kubernetes_url https://localhost:8443
975
993
  watch false
976
994
  cache_size 1
@@ -980,16 +998,17 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
980
998
  skip_namespace_metadata true
981
999
  ')
982
1000
  expected_kube_metadata = {
983
- 'docker' => {
984
- 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
985
- },
986
- 'kubernetes' => {
987
- 'host' => 'jimmi-redhat.localnet',
988
- 'pod_name' => 'fabric8-console-controller-98rqc',
989
- 'container_name' => 'fabric8-console-container',
990
- 'namespace_name' => 'default',
991
- 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d'
992
- }
1001
+ 'docker' => {
1002
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
1003
+ },
1004
+ 'kubernetes' => {
1005
+ 'host' => 'jimmi-redhat.localnet',
1006
+ 'pod_name' => 'fabric8-console-controller-98rqc',
1007
+ 'container_name' => 'fabric8-console-container',
1008
+ 'namespace_name' => 'default',
1009
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
1010
+ 'pod_ip' => '172.17.0.8'
1011
+ }
993
1012
  }
994
1013
 
995
1014
  assert_equal(expected_kube_metadata, filtered[0])