fluent-plugin-kubernetes_metadata_filter 3.7.0 → 3.7.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/Rakefile +3 -4
  4. data/lib/fluent/plugin/filter_kubernetes_metadata.rb +307 -279
  5. data/lib/fluent/plugin/kubernetes_metadata_cache_strategy.rb +15 -11
  6. data/lib/fluent/plugin/kubernetes_metadata_common.rb +38 -40
  7. data/lib/fluent/plugin/kubernetes_metadata_stats.rb +4 -6
  8. data/lib/fluent/plugin/kubernetes_metadata_test_api_adapter.rb +39 -36
  9. data/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb +15 -12
  10. data/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb +18 -17
  11. metadata +2 -172
  12. data/.circleci/config.yml +0 -48
  13. data/.gitignore +0 -18
  14. data/.rubocop.yml +0 -57
  15. data/Gemfile +0 -9
  16. data/Gemfile.lock +0 -172
  17. data/fluent-plugin-kubernetes_metadata_filter.gemspec +0 -34
  18. data/lib/fluent/plugin/kubernetes_metadata_util.rb +0 -33
  19. data/test/cassettes/invalid_api_server_config.yml +0 -53
  20. data/test/cassettes/kubernetes_docker_metadata_annotations.yml +0 -205
  21. data/test/cassettes/kubernetes_docker_metadata_dotted_slashed_labels.yml +0 -197
  22. data/test/cassettes/kubernetes_get_api_v1.yml +0 -193
  23. data/test/cassettes/kubernetes_get_api_v1_using_token.yml +0 -195
  24. data/test/cassettes/kubernetes_get_namespace_default.yml +0 -72
  25. data/test/cassettes/kubernetes_get_namespace_default_using_token.yml +0 -71
  26. data/test/cassettes/kubernetes_get_pod.yml +0 -146
  27. data/test/cassettes/kubernetes_get_pod_container_init.yml +0 -145
  28. data/test/cassettes/kubernetes_get_pod_using_token.yml +0 -148
  29. data/test/cassettes/kubernetes_get_pod_with_ownerrefs.yml +0 -156
  30. data/test/cassettes/metadata_from_tag_and_journald_fields.yml +0 -153
  31. data/test/cassettes/metadata_from_tag_journald_and_kubernetes_fields.yml +0 -285
  32. data/test/cassettes/valid_kubernetes_api_server.yml +0 -55
  33. data/test/cassettes/valid_kubernetes_api_server_using_token.yml +0 -57
  34. data/test/helper.rb +0 -82
  35. data/test/plugin/test.token +0 -1
  36. data/test/plugin/test_cache_stats.rb +0 -33
  37. data/test/plugin/test_cache_strategy.rb +0 -194
  38. data/test/plugin/test_filter_kubernetes_metadata.rb +0 -851
  39. data/test/plugin/test_watch_namespaces.rb +0 -245
  40. data/test/plugin/test_watch_pods.rb +0 -344
  41. data/test/plugin/watch_test.rb +0 -76
@@ -1,194 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- #
4
- # Fluentd Kubernetes Metadata Filter Plugin - Enrich Fluentd events with
5
- # Kubernetes metadata
6
- #
7
- # Copyright 2015 Red Hat, Inc.
8
- #
9
- # Licensed under the Apache License, Version 2.0 (the "License");
10
- # you may not use this file except in compliance with the License.
11
- # You may obtain a copy of the License at
12
- #
13
- # http://www.apache.org/licenses/LICENSE-2.0
14
- #
15
- # Unless required by applicable law or agreed to in writing, software
16
- # distributed under the License is distributed on an "AS IS" BASIS,
17
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- require_relative '../helper'
22
-
23
- class TestCacheStrategy
24
- include KubernetesMetadata::CacheStrategy
25
-
26
- def initialize
27
- @stats = KubernetesMetadata::Stats.new
28
- @cache = LruRedux::TTL::ThreadSafeCache.new(100, 3600, true)
29
- @id_cache = LruRedux::TTL::ThreadSafeCache.new(100, 3600, true)
30
- @namespace_cache = LruRedux::TTL::ThreadSafeCache.new(100, 3600, true)
31
- @orphaned_namespace_name = '.orphaned'
32
- @orphaned_namespace_id = 'orphaned'
33
- end
34
-
35
- attr_accessor :stats, :cache, :id_cache, :namespace_cache, :allow_orphans
36
-
37
- def fetch_pod_metadata(_namespace_name, _pod_name)
38
- {}
39
- end
40
-
41
- def fetch_namespace_metadata(_namespace_name)
42
- {}
43
- end
44
-
45
- def log
46
- logger = {}
47
- def logger.on_trace
48
- true
49
- end
50
-
51
- def logger.trace(message)
52
- end
53
- logger
54
- end
55
- end
56
-
57
- class KubernetesMetadataCacheStrategyTest < Test::Unit::TestCase
58
- def setup
59
- @strategy = TestCacheStrategy.new
60
- @cache_key = 'some_long_container_id'
61
- @namespace_name = 'some_namespace_name'
62
- @namespace_uuid = 'some_namespace_uuid'
63
- @pod_name = 'some_pod_name'
64
- @pod_uuid = 'some_pod_uuid'
65
- @time = Time.now
66
- @pod_meta = { 'pod_id' => @pod_uuid, 'labels' => { 'meta' => 'pod' } }
67
- @namespace_meta = { 'namespace_id' => @namespace_uuid, 'creation_timestamp' => @time.to_s }
68
- end
69
-
70
- test 'when cached metadata is found' do
71
- exp = @pod_meta.merge(@namespace_meta)
72
- exp.delete('creation_timestamp')
73
- @strategy.id_cache[@cache_key] = {
74
- pod_id: @pod_uuid,
75
- namespace_id: @namespace_uuid
76
- }
77
- @strategy.cache[@pod_uuid] = @pod_meta
78
- @strategy.namespace_cache[@namespace_uuid] = @namespace_meta
79
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, {}))
80
- end
81
-
82
- test 'when previously processed record for pod but metadata is not cached and can not be fetched' do
83
- exp = {
84
- 'pod_id' => @pod_uuid,
85
- 'namespace_id' => @namespace_uuid
86
- }
87
- @strategy.id_cache[@cache_key] = {
88
- pod_id: @pod_uuid,
89
- namespace_id: @namespace_uuid
90
- }
91
- @strategy.stub :fetch_pod_metadata, {} do
92
- @strategy.stub :fetch_namespace_metadata, nil do
93
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, {}))
94
- end
95
- end
96
- end
97
-
98
- test 'when metadata is not cached and is fetched' do
99
- exp = @pod_meta.merge(@namespace_meta)
100
- exp.delete('creation_timestamp')
101
- @strategy.stub :fetch_pod_metadata, @pod_meta do
102
- @strategy.stub :fetch_namespace_metadata, @namespace_meta do
103
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, {}))
104
- assert_true(@strategy.id_cache.key?(@cache_key))
105
- end
106
- end
107
- end
108
-
109
- test 'when metadata is not cached and pod is deleted and namespace metadata is fetched' do
110
- # this is the case for a record from a deleted pod where no other
111
- # records were read. using the container hash since that is all
112
- # we ever will have and should allow us to process all the deleted
113
- # pod records
114
- exp = {
115
- 'pod_id' => @cache_key,
116
- 'namespace_id' => @namespace_uuid
117
- }
118
- @strategy.stub :fetch_pod_metadata, {} do
119
- @strategy.stub :fetch_namespace_metadata, @namespace_meta do
120
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, {}))
121
- assert_true(@strategy.id_cache.key?(@cache_key))
122
- end
123
- end
124
- end
125
-
126
- test 'when metadata is not cached and pod is deleted and namespace is for a different namespace with the same name' do
127
- # this is the case for a record from a deleted pod from a deleted namespace
128
- # where new namespace was created with the same name
129
- exp = {
130
- 'namespace_id' => @namespace_uuid
131
- }
132
- @strategy.stub :fetch_pod_metadata, {} do
133
- @strategy.stub :fetch_namespace_metadata, @namespace_meta do
134
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time - 1 * 86_400, {}))
135
- assert_true(@strategy.id_cache.key?(@cache_key))
136
- end
137
- end
138
- end
139
-
140
- test 'when metadata is not cached and no metadata can be fetched and not allowing orphans' do
141
- # we should never see this since pod meta should not be retrievable
142
- # unless the namespace exists
143
- @strategy.stub :fetch_pod_metadata, @pod_meta do
144
- @strategy.stub :fetch_namespace_metadata, {} do
145
- assert_equal({}, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time - 1 * 86_400, {}))
146
- end
147
- end
148
- end
149
-
150
- test 'when metadata is not cached and no metadata can be fetched and allowing orphans' do
151
- # we should never see this since pod meta should not be retrievable
152
- # unless the namespace exists
153
- @strategy.allow_orphans = true
154
- exp = {
155
- 'orphaned_namespace' => 'namespace',
156
- 'namespace_name' => '.orphaned',
157
- 'namespace_id' => 'orphaned'
158
- }
159
- @strategy.stub :fetch_pod_metadata, @pod_meta do
160
- @strategy.stub :fetch_namespace_metadata, {} do
161
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time - 1 * 86_400, {}))
162
- end
163
- end
164
- end
165
-
166
- test 'when metadata is not cached and no metadata can be fetched and not allowing orphans for multiple records' do
167
- # processing a batch of records with no meta. ideally we only hit the api server once
168
- batch_miss_cache = {}
169
- @strategy.stub :fetch_pod_metadata, {} do
170
- @strategy.stub :fetch_namespace_metadata, {} do
171
- assert_equal({}, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, batch_miss_cache))
172
- end
173
- end
174
- assert_equal({}, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, batch_miss_cache))
175
- end
176
-
177
- test 'when metadata is not cached and no metadata can be fetched and allowing orphans for multiple records' do
178
- # we should never see this since pod meta should not be retrievable
179
- # unless the namespace exists
180
- @strategy.allow_orphans = true
181
- exp = {
182
- 'orphaned_namespace' => 'namespace',
183
- 'namespace_name' => '.orphaned',
184
- 'namespace_id' => 'orphaned'
185
- }
186
- batch_miss_cache = {}
187
- @strategy.stub :fetch_pod_metadata, {} do
188
- @strategy.stub :fetch_namespace_metadata, {} do
189
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, batch_miss_cache))
190
- end
191
- end
192
- assert_equal(exp, @strategy.get_pod_metadata(@cache_key, 'namespace', 'pod', @time, batch_miss_cache))
193
- end
194
- end