fluent-plugin-kubernetes_metadata_filter 2.1.3 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -158,42 +158,13 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
158
158
  d.filtered.map{|e| e.last}
159
159
  end
160
160
 
161
- test 'nil event stream from journal' do
161
+ test 'nil event stream' do
162
162
  #not certain how this is possible but adding test to properly
163
163
  #guard against this condition we have seen - test for nil,
164
164
  #empty, no empty method, not an event stream
165
165
  plugin = create_driver.instance
166
- [nil, Fluent::MultiEventStream.new, 1, [1]].each do |es|
167
- assert_equal es, plugin.filter_stream_from_journal('tag', es)
168
- end
169
- # and make sure OneEventStream works
170
- ts = Time.now()
171
- rec = {"message"=>"hello"}
172
- es = Fluent::OneEventStream.new(ts, rec)
173
- newes = plugin.filter_stream_from_journal('tag', es)
174
- newes.each do |newts, newrec|
175
- assert_equal ts, newts
176
- assert_equal rec, newrec
177
- end
178
- end
179
-
180
- test 'nil event stream from files' do
181
- #not certain how this is possible but adding test to properly
182
- #guard against this condition we have seen
183
-
184
- plugin = create_driver.instance
185
- [nil, Fluent::MultiEventStream.new, 1, [1]].each do |es|
186
- assert_equal es, plugin.filter_stream_from_files('tag', es)
187
- end
188
- # and make sure OneEventStream works
189
- ts = Time.now()
190
- rec = {"message"=>"hello"}
191
- es = Fluent::OneEventStream.new(ts, rec)
192
- newes = plugin.filter_stream_from_journal('tag', es)
193
- newes.each do |newts, newrec|
194
- assert_equal ts, newts
195
- assert_equal rec, newrec
196
- end
166
+ plugin.filter_stream('tag', nil)
167
+ plugin.filter_stream('tag', Fluent::MultiEventStream.new)
197
168
  end
198
169
 
199
170
  test 'inability to connect to the api server handles exception and doensnt block pipeline' do
@@ -608,6 +579,138 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
608
579
  end
609
580
  end
610
581
 
582
+ test 'with records from journald and docker & kubernetes metadata with use_journal unset' do
583
+ # with use_journal unset, should still use the journal fields instead of tag fields
584
+ tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
585
+ msg = {
586
+ 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
587
+ 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
588
+ 'kubernetes' => {
589
+ 'namespace_name' => 'k8s-namespace-name',
590
+ 'pod_name' => 'k8s-pod-name',
591
+ 'container_name' => 'k8s-container-name'
592
+ },
593
+ 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
594
+ 'randomfield' => 'randomvalue'
595
+ }
596
+ VCR.use_cassette('metadata_from_tag_journald_and_kubernetes_fields') do
597
+ es = emit_with_tag(tag, msg, '
598
+ kubernetes_url https://localhost:8443
599
+ watch false
600
+ cache_size 1
601
+ ')
602
+ expected_kube_metadata = {
603
+ 'docker' => {
604
+ 'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'
605
+ },
606
+ 'kubernetes' => {
607
+ 'host' => 'jimmi-redhat.localnet',
608
+ 'pod_name' => 'k8s-pod-name',
609
+ 'container_name' => 'k8s-container-name',
610
+ 'container_image' => 'k8s-container-image:latest',
611
+ 'container_image_id' => 'docker://d78c5217c41e9af08d37d9ae2cb070afa1fe3da6bc77bfb18879a8b4bfdf8a34',
612
+ 'namespace_name' => 'k8s-namespace-name',
613
+ 'namespace_id' => '8e0dc8fc-59f2-49f7-a3e2-ed0913e19d9f',
614
+ 'pod_id' => 'ebabf749-5fcd-4750-a3f0-aedd89476da8',
615
+ 'master_url' => 'https://localhost:8443',
616
+ 'labels' => {
617
+ 'component' => 'k8s-test'
618
+ }
619
+ }
620
+ }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
621
+ assert_equal(expected_kube_metadata, es[0])
622
+ end
623
+ end
624
+
625
+ test 'with records from journald and docker & kubernetes metadata with lookup_from_k8s_field false' do
626
+ # with use_journal unset, should still use the journal fields instead of tag fields
627
+ tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
628
+ msg = {
629
+ 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
630
+ 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
631
+ 'kubernetes' => {
632
+ 'namespace_name' => 'k8s-namespace-name',
633
+ 'pod_name' => 'k8s-pod-name',
634
+ 'container_name' => 'k8s-container-name'
635
+ },
636
+ 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
637
+ 'randomfield' => 'randomvalue'
638
+ }
639
+ VCR.use_cassette('metadata_from_tag_and_journald_fields') do
640
+ es = emit_with_tag(tag, msg, '
641
+ kubernetes_url https://localhost:8443
642
+ watch false
643
+ cache_size 1
644
+ lookup_from_k8s_field false
645
+ ')
646
+ expected_kube_metadata = {
647
+ 'docker' => {
648
+ 'container_id' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b'
649
+ },
650
+ 'kubernetes' => {
651
+ 'host' => 'jimmi-redhat.localnet',
652
+ 'pod_name' => 'journald-pod-name',
653
+ 'container_name' => 'journald-container-name',
654
+ 'container_image' => 'journald-container-image:latest',
655
+ 'container_image_id' => 'docker://dda4c95705fb7050b701b10a7fe928ca5bc971a1dcb521ae3c339194cbf36b47',
656
+ 'namespace_name' => 'journald-namespace-name',
657
+ 'namespace_id' => '8282888f-733f-4f23-a3d3-1fdfa3bdacf2',
658
+ 'pod_id' => '5e1c1e27-b637-4e81-80b6-6d8a8c404d3b',
659
+ 'master_url' => 'https://localhost:8443',
660
+ 'labels' => {
661
+ 'component' => 'journald-test'
662
+ }
663
+ }
664
+ }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
665
+ assert_equal(expected_kube_metadata, es[0])
666
+ end
667
+ end
668
+
669
+ test 'uses metadata from tag if use_journal false and lookup_from_k8s_field false' do
670
+ # with use_journal unset, should still use the journal fields instead of tag fields
671
+ tag = 'var.log.containers.fabric8-console-controller-98rqc_default_fabric8-console-container-49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459.log'
672
+ msg = {
673
+ 'CONTAINER_NAME' => 'k8s_journald-container-name.db89db89_journald-pod-name_journald-namespace-name_c76927af-f563-11e4-b32d-54ee7527188d_89db89db',
674
+ 'CONTAINER_ID_FULL' => '838350c64bacba968d39a30a50789b2795291fceca6ccbff55298671d46b0e3b',
675
+ 'kubernetes' => {
676
+ 'namespace_name' => 'k8s-namespace-name',
677
+ 'pod_name' => 'k8s-pod-name',
678
+ 'container_name' => 'k8s-container-name'
679
+ },
680
+ 'docker' => {'container_id' => 'e463bc0d3ae38f5c89d92dca49b30e049e899799920b79d4d5f705acbe82ba95'},
681
+ 'randomfield' => 'randomvalue'
682
+ }
683
+ VCR.use_cassette('metadata_from_tag_and_journald_fields') do
684
+ es = emit_with_tag(tag, msg, '
685
+ kubernetes_url https://localhost:8443
686
+ watch false
687
+ cache_size 1
688
+ lookup_from_k8s_field false
689
+ use_journal false
690
+ ')
691
+ expected_kube_metadata = {
692
+ 'docker' => {
693
+ 'container_id' => '49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
694
+ },
695
+ 'kubernetes' => {
696
+ 'host' => 'jimmi-redhat.localnet',
697
+ 'pod_name' => 'fabric8-console-controller-98rqc',
698
+ 'container_name' => 'fabric8-console-container',
699
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
700
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
701
+ 'namespace_name' => 'default',
702
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
703
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
704
+ 'master_url' => 'https://localhost:8443',
705
+ 'labels' => {
706
+ 'component' => 'fabric8Console'
707
+ }
708
+ }
709
+ }.merge(msg) {|key,oldval,newval| ((key == 'kubernetes') || (key == 'docker')) ? oldval : newval}
710
+ assert_equal(expected_kube_metadata, es[0])
711
+ end
712
+ end
713
+
611
714
  test 'with kubernetes annotations' do
612
715
  VCR.use_cassette('kubernetes_docker_metadata_annotations') do
613
716
  filtered = emit({},'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kubernetes_metadata_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jimmi Dyson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-07 00:00:00.000000000 Z
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -223,6 +223,8 @@ files:
223
223
  - test/cassettes/kubernetes_docker_metadata_annotations.yml
224
224
  - test/cassettes/kubernetes_docker_metadata_dotted_labels.yml
225
225
  - test/cassettes/kubernetes_docker_metadata_using_bearer_token.yml
226
+ - test/cassettes/metadata_from_tag_and_journald_fields.yml
227
+ - test/cassettes/metadata_from_tag_journald_and_kubernetes_fields.yml
226
228
  - test/cassettes/metadata_with_namespace_id.yml
227
229
  - test/cassettes/non_kubernetes_docker_metadata.yml
228
230
  - test/cassettes/valid_kubernetes_api_server.yml
@@ -254,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
256
  version: '0'
255
257
  requirements: []
256
258
  rubyforge_project:
257
- rubygems_version: 2.6.12
259
+ rubygems_version: 2.7.6
258
260
  signing_key:
259
261
  specification_version: 4
260
262
  summary: Fluentd filter plugin to add Kubernetes metadata
@@ -264,6 +266,8 @@ test_files:
264
266
  - test/cassettes/kubernetes_docker_metadata_annotations.yml
265
267
  - test/cassettes/kubernetes_docker_metadata_dotted_labels.yml
266
268
  - test/cassettes/kubernetes_docker_metadata_using_bearer_token.yml
269
+ - test/cassettes/metadata_from_tag_and_journald_fields.yml
270
+ - test/cassettes/metadata_from_tag_journald_and_kubernetes_fields.yml
267
271
  - test/cassettes/metadata_with_namespace_id.yml
268
272
  - test/cassettes/non_kubernetes_docker_metadata.yml
269
273
  - test/cassettes/valid_kubernetes_api_server.yml