fluent-plugin-kubernetes_metadata_filter 2.1.3 → 2.1.4

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.
@@ -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