fluent-plugin-kubernetes_metadata_filter 2.5.2 → 2.11.1

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