fluent-plugin-kubernetes-objects 1.1.8 → 1.1.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a984ac533b28728173a84cc9305340939752ce3e1ead699b762a13be67bd73f
4
- data.tar.gz: a1d9f0e6e239321e18f6730af71d8e316a80d863ac9df1e8e83c33ec70a775d4
3
+ metadata.gz: 168ae6862575cb688a5ace5531696af279ddd206aebcbf766ce180db6701455d
4
+ data.tar.gz: 101051ee22a5f01605ce41d7ad6a061df76bcccc35c972c478a7423620f205d2
5
5
  SHA512:
6
- metadata.gz: 6c1aeb68f7f4c4310f588548ce6f76a815eacd2f8f5e18863e5ff0297a2c0a5ec4530dcc21227128d4d235bdf8f41a1139d04915b6bcd347b9ea2c0fd9166812
7
- data.tar.gz: 002f53051516c3951845bdd290f959b82b5ee0a99d2a3fa1f6b766a540f57421995e6187e051b18d7dbacfc0fd1c443bb4456f7db5c2dd80c4555cb3b6f90faa
6
+ metadata.gz: cd2f8d7394710699313059decd82ad47070dca1af377a6b27b4f08f697eb236c1282e2a84e74c9ffb0671d6b5e7185d241c35327ec93ebf0419a77a9fd30b5f8
7
+ data.tar.gz: '09e3862f49c87309ab218364d7762ce6b88c2c6731ceb40225637021946fdb2388040bd85c7a4dad4fb0efeea975eff81588d30e2bf94ee4505a60d39fc212f9'
data/Gemfile.lock CHANGED
@@ -1,33 +1,33 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-kubernetes-objects (1.1.8)
4
+ fluent-plugin-kubernetes-objects (1.1.11)
5
5
  fluentd (>= 1.9.1)
6
6
  http_parser.rb (= 0.5.3)
7
- kubeclient (~> 4.6.0)
7
+ kubeclient (~> 4.9.3)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
12
  addressable (2.8.0)
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
- concurrent-ruby (1.1.9)
14
+ concurrent-ruby (1.1.10)
15
15
  cool.io (1.7.1)
16
16
  crack (0.4.5)
17
17
  rexml
18
18
  docile (1.4.0)
19
19
  domain_name (0.5.20190701)
20
20
  unf (>= 0.0.5, < 1.0.0)
21
- ffi (1.15.4)
21
+ ffi (1.15.5)
22
22
  ffi-compiler (1.0.1)
23
23
  ffi (>= 1.0.0)
24
24
  rake
25
- fluentd (1.14.2)
25
+ fluentd (1.14.5)
26
26
  bundler
27
27
  cool.io (>= 1.4.5, < 2.0.0)
28
- http_parser.rb (>= 0.5.1, < 0.8.0)
28
+ http_parser.rb (>= 0.5.1, < 0.9.0)
29
29
  msgpack (>= 1.3.1, < 2.0.0)
30
- serverengine (>= 2.2.2, < 3.0.0)
30
+ serverengine (>= 2.2.5, < 3.0.0)
31
31
  sigdump (~> 0.2.2)
32
32
  strptime (>= 0.2.4, < 1.0.0)
33
33
  tzinfo (>= 1.0, < 3.0)
@@ -47,15 +47,19 @@ GEM
47
47
  http-parser (1.2.3)
48
48
  ffi-compiler (>= 1.0, < 2.0)
49
49
  http_parser.rb (0.5.3)
50
- kubeclient (4.6.0)
50
+ jsonpath (1.1.0)
51
+ multi_json
52
+ kubeclient (4.9.3)
51
53
  http (>= 3.0, < 5.0)
52
- recursive-open-struct (~> 1.0, >= 1.0.4)
54
+ jsonpath (~> 1.0)
55
+ recursive-open-struct (~> 1.1, >= 1.1.1)
53
56
  rest-client (~> 2.0)
54
- mime-types (3.3.1)
57
+ mime-types (3.4.1)
55
58
  mime-types-data (~> 3.2015)
56
- mime-types-data (3.2021.0901)
59
+ mime-types-data (3.2022.0105)
57
60
  minitest (5.14.4)
58
- msgpack (1.4.2)
61
+ msgpack (1.4.5)
62
+ multi_json (1.15.0)
59
63
  netrc (0.11.0)
60
64
  power_assert (2.0.1)
61
65
  public_suffix (4.0.6)
@@ -67,7 +71,7 @@ GEM
67
71
  mime-types (>= 1.16, < 4.0)
68
72
  netrc (~> 0.8)
69
73
  rexml (3.2.5)
70
- serverengine (2.2.4)
74
+ serverengine (2.2.5)
71
75
  sigdump (~> 0.2.2)
72
76
  sigdump (0.2.4)
73
77
  simplecov (0.21.2)
@@ -81,11 +85,11 @@ GEM
81
85
  power_assert
82
86
  tzinfo (2.0.4)
83
87
  concurrent-ruby (~> 1.0)
84
- tzinfo-data (1.2021.5)
88
+ tzinfo-data (1.2022.1)
85
89
  tzinfo (>= 1.0.0)
86
90
  unf (0.1.4)
87
91
  unf_ext
88
- unf_ext (0.0.8)
92
+ unf_ext (0.0.8.1)
89
93
  webmock (3.14.0)
90
94
  addressable (>= 2.8.0)
91
95
  crack (>= 0.3.2)
@@ -106,4 +110,4 @@ DEPENDENCIES
106
110
  webmock (~> 3.5)
107
111
 
108
112
  BUNDLED WITH
109
- 2.2.30
113
+ 2.3.10
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.8
1
+ 1.1.11
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.required_ruby_version = '>= 2.3.0'
24
24
  spec.add_runtime_dependency 'fluentd', '>= 1.9.1'
25
- spec.add_runtime_dependency 'kubeclient', '~> 4.6.0'
25
+ spec.add_runtime_dependency 'kubeclient', '~> 4.9.3'
26
26
  spec.add_runtime_dependency 'http_parser.rb', '= 0.5.3'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 2.0'
@@ -20,6 +20,9 @@ module Fluent::Plugin
20
20
  desc 'Kubernetes API version.'
21
21
  config_param :api_version, :string, default: 'v1'
22
22
 
23
+ desc 'Kubernetes API endpoint.'
24
+ config_param :api_endpoint, :string, default: 'api'
25
+
23
26
  desc 'Path to the certificate file for this client.'
24
27
  config_param :client_cert, :string, default: nil
25
28
 
@@ -139,7 +142,7 @@ module Fluent::Plugin
139
142
  env_host = ENV['KUBERNETES_SERVICE_HOST']
140
143
  env_port = ENV['KUBERNETES_SERVICE_PORT']
141
144
  if env_host && env_port
142
- @kubernetes_url = "https://#{env_host}:#{env_port}/#{@api_version == 'v1' ? 'api' : 'apis'}"
145
+ @kubernetes_url = "https://#{env_host}:#{env_port}/#{@api_endpoint.delete_prefix('/')}"
143
146
  end
144
147
  end
145
148
 
@@ -200,7 +203,12 @@ module Fluent::Plugin
200
203
  tag = generate_tag resource_name
201
204
  while thread_current_running?
202
205
  log.debug "Going to pull #{resource_name}"
203
- response = @client.public_send "get_#{resource_name}", options
206
+ begin
207
+ response = @client.public_send "get_#{resource_name}", options
208
+ rescue Kubeclient::ResourceNotFoundError, NoMethodError
209
+ log.error "resource '#{resource_name}' not found. Stopped pulling it"
210
+ break
211
+ end
204
212
  now = Fluent::Engine.now
205
213
  es = Fluent::MultiEventStream.new
206
214
 
@@ -243,22 +251,27 @@ module Fluent::Plugin
243
251
 
244
252
  thread_create :"watch_#{resource_name}" do
245
253
  while thread_current_running?
246
- @client.public_send("watch_#{resource_name}", options).tap do |watcher|
247
- tag = generate_tag "#{resource_name}"
248
- begin
249
- watcher.each do |entity|
250
- begin
251
- entity = JSON.parse(entity)
252
- router.emit tag, Fluent::Engine.now, entity
253
- options[:resource_version] = entity['object']['metadata']['resourceVersion']
254
- @storage.put resource_name, entity['object']['metadata']['resourceVersion']
255
- rescue => e
256
- log.info "Got exception #{e} parsing entity #{entity}. Resetting watcher."
254
+ begin
255
+ @client.public_send("watch_#{resource_name}", options).tap do |watcher|
256
+ tag = generate_tag "#{resource_name}"
257
+ begin
258
+ watcher.each do |entity|
259
+ begin
260
+ entity = JSON.parse(entity)
261
+ router.emit tag, Fluent::Engine.now, entity
262
+ options[:resource_version] = entity['object']['metadata']['resourceVersion']
263
+ @storage.put resource_name, entity['object']['metadata']['resourceVersion']
264
+ rescue => e
265
+ log.info "Got exception #{e} parsing entity #{entity}. Resetting watcher."
266
+ end
257
267
  end
268
+ rescue => e
269
+ log.info "Got exception #{e}. Resetting watcher."
258
270
  end
259
- rescue => e
260
- log.info "Got exception #{e}. Resetting watcher."
261
271
  end
272
+ rescue Kubeclient::ResourceNotFoundError, NoMethodError
273
+ log.error "resource '#{resource_name}' not found. Stopped watching it"
274
+ break
262
275
  end
263
276
  end
264
277
  end
@@ -57,8 +57,9 @@ describe Fluent::Plugin::KubernetesObjectsInput do
57
57
  puts 'Test: should use pick the right path'
58
58
  ENV['KUBERNETES_SERVICE_HOST'] = k8s_host
59
59
  ENV['KUBERNETES_SERVICE_PORT'] = k8s_port
60
- expect(create_input_driver(<<~CONF).instance.kubernetes_url).must_equal k8s_url('apis')
61
- api_version apps/v1
60
+ expect(create_input_driver(<<~CONF).instance.kubernetes_url).must_equal k8s_url('apis/apps')
61
+ api_endpoint apis/apps
62
+ api_version v1
62
63
  <pull>
63
64
  resource_name deployments
64
65
  </pull>
@@ -144,5 +145,28 @@ describe Fluent::Plugin::KubernetesObjectsInput do
144
145
  f.unlink
145
146
  end
146
147
  end
148
+ it "checks for invalid pull request" do
149
+ d = create_input_driver(<<~CONF)
150
+ kubernetes_url #{k8s_url}
151
+ <pull>
152
+ resource_name fakeResource
153
+ </pull>
154
+ CONF
155
+
156
+ d.run expect_emits: 0, timeout: 3
157
+
158
+ expect(d.logs.any? { |log| log.include? "resource 'fakeResource' not found." }).must_equal(true)
159
+ end
160
+ it "checks for invalid watch request" do
161
+ d = create_input_driver(<<~CONF)
162
+ kubernetes_url #{k8s_url}
163
+ <watch>
164
+ resource_name fakeResource
165
+ </watch>
166
+ CONF
167
+
168
+ d.run expect_emits: 0, timeout: 3
169
+ expect(d.logs.any? { |log| log.include? "resource 'fakeResource' not found." }).must_equal(true)
170
+ end
147
171
  end
148
172
  end
data/test/test_helper.rb CHANGED
@@ -54,6 +54,9 @@ module PluginTestHelper
54
54
  stub_k8s_nodes
55
55
  stub_k8s_pods
56
56
  stub_k8s_events
57
+ stub_k8s_apps
58
+ stub_k8s_apps_v1
59
+ stub_k8s_apps_v1_namespace
57
60
  end
58
61
 
59
62
  def stub_k8s_api
@@ -68,6 +71,24 @@ module PluginTestHelper
68
71
  end.close
69
72
  end
70
73
 
74
+ def stub_k8s_apps
75
+ File.open(File.expand_path('apps.json', __dir__)).tap do |f|
76
+ stub_request(:get, k8s_url('apis/apps')).to_return(body: f.read)
77
+ end.close
78
+ end
79
+
80
+ def stub_k8s_apps_v1
81
+ File.open(File.expand_path('apps-v1.json', __dir__)).tap do |f|
82
+ stub_request(:get, k8s_url('apis/apps/v1')).to_return(body: f.read)
83
+ end.close
84
+ end
85
+
86
+ def stub_k8s_apps_v1_namespace
87
+ File.open(File.expand_path('apps-v1-namespace.json', __dir__)).tap do |f|
88
+ stub_request(:get, k8s_url('apis/apps')).to_return(body: f.read)
89
+ end.close
90
+ end
91
+
71
92
  def stub_k8s_v1
72
93
  File.open(File.expand_path('v1.json', __dir__)).tap do |f|
73
94
  stub_request(:get, "#{k8s_url}/v1").to_return(body: f.read)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kubernetes-objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 1.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Splunk Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-04 00:00:00.000000000 Z
11
+ date: 2022-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 4.6.0
33
+ version: 4.9.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 4.6.0
40
+ version: 4.9.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: http_parser.rb
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -172,12 +172,12 @@ signing_key:
172
172
  specification_version: 4
173
173
  summary: Fluentd Plugin for Kubernetes Objects.
174
174
  test_files:
175
- - test/test_helper.rb
176
175
  - test/fluent/plugin/in_kubernetes_objects_test.rb
177
- - test/lib/no_webmock/http_lib_adapters/curb_adapter.rb
176
+ - test/test_helper.rb
178
177
  - test/lib/no_webmock/http_lib_adapters/httpclient_adapter.rb
178
+ - test/lib/no_webmock/http_lib_adapters/excon_adapter.rb
179
179
  - test/lib/no_webmock/http_lib_adapters/em_http_request_adapter.rb
180
180
  - test/lib/no_webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
181
181
  - test/lib/no_webmock/http_lib_adapters/manticore_adapter.rb
182
- - test/lib/no_webmock/http_lib_adapters/excon_adapter.rb
182
+ - test/lib/no_webmock/http_lib_adapters/curb_adapter.rb
183
183
  - test/lib/no_webmock/http_lib_adapters/patron_adapter.rb