fluent-plugin-kubernetes-objects 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4aae816406243c2739dc9b849522ca0fd8fed9e58e17df93de18e748b11b6758
4
- data.tar.gz: da9469b542011a7b1f26572862d72ba94683f511458dcca47c083d95e9b2960f
3
+ metadata.gz: 483397cd1c9ccdc7009f104b3c6e8ef94ecf5f56822406e862980301bb846d64
4
+ data.tar.gz: 523e83eda243fc7d3faf5d2ef9fac4cf9540e84f814b33d03d2f2c93006df4cb
5
5
  SHA512:
6
- metadata.gz: 6c390d0544d347cfce5c8a06e374ccd27d55d61dba8785069505615ecccf6b22bc2c1063aa2aaba4f3c2ca4d98c160a837e6939fd62333503f9ff3591b5c72cd
7
- data.tar.gz: 464880a76e0e38103e71587ad40e1dde8629183e458a16096508b07c8b7ec8a49f6b000ee617c2f6759983ba9d46fc2dab8383e77a88e2e57ae87c1e9a498162
6
+ metadata.gz: 9c6502046925124ec272b53251d3e08fcb6c0ee69a45f35f7ba87618dac86e4fa7f5665f6340f529d2bd207418314151715df0cc29b24bf0e894ce43c3c0a0b5
7
+ data.tar.gz: d58d7d3e507c8f77597751868918f04a3fc624785d78956b7deeeaaa7491dabfd4175bf8f331ea2e82a72c93e2e36fbda25185338c09632f37b659debb80f809
@@ -1,64 +1,72 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-kubernetes-objects (1.1.1)
5
- fluentd (~> 1.4)
6
- kubeclient (~> 4.2)
4
+ fluent-plugin-kubernetes-objects (1.1.3)
5
+ fluentd (~> 1.9.1)
6
+ http_parser.rb (= 0.5.3)
7
+ kubeclient (~> 4.6.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
12
  addressable (2.6.0)
12
13
  public_suffix (>= 2.0.2, < 4.0)
13
- cool.io (1.5.3)
14
+ concurrent-ruby (1.1.6)
15
+ cool.io (1.6.0)
14
16
  crack (0.4.3)
15
17
  safe_yaml (~> 1.0.0)
16
- dig_rb (1.0.1)
17
18
  docile (1.3.1)
18
- domain_name (0.5.20180417)
19
+ domain_name (0.5.20190701)
19
20
  unf (>= 0.0.5, < 1.0.0)
20
- fluentd (1.4.1)
21
+ ffi (1.12.2)
22
+ ffi-compiler (1.0.1)
23
+ ffi (>= 1.0.0)
24
+ rake
25
+ fluentd (1.9.2)
21
26
  cool.io (>= 1.4.5, < 2.0.0)
22
- dig_rb (~> 1.0.0)
23
27
  http_parser.rb (>= 0.5.1, < 0.7.0)
24
- msgpack (>= 0.7.0, < 2.0.0)
28
+ msgpack (>= 1.3.1, < 2.0.0)
25
29
  serverengine (>= 2.0.4, < 3.0.0)
26
30
  sigdump (~> 0.2.2)
27
31
  strptime (>= 0.2.2, < 1.0.0)
28
- tzinfo (~> 1.0)
32
+ tzinfo (>= 1.0, < 3.0)
29
33
  tzinfo-data (~> 1.0)
30
34
  yajl-ruby (~> 1.0)
31
35
  hashdiff (0.3.8)
32
- http (3.3.0)
36
+ http (4.3.0)
33
37
  addressable (~> 2.3)
34
38
  http-cookie (~> 1.0)
35
- http-form_data (~> 2.0)
36
- http_parser.rb (~> 0.6.0)
39
+ http-form_data (~> 2.2)
40
+ http-parser (~> 1.2.0)
41
+ http-accept (1.7.0)
37
42
  http-cookie (1.0.3)
38
43
  domain_name (~> 0.5)
39
- http-form_data (2.1.1)
40
- http_parser.rb (0.6.0)
44
+ http-form_data (2.2.0)
45
+ http-parser (1.2.1)
46
+ ffi-compiler (>= 1.0, < 2.0)
47
+ http_parser.rb (0.5.3)
41
48
  json (2.1.0)
42
- kubeclient (4.3.0)
43
- http (~> 3.0)
49
+ kubeclient (4.6.0)
50
+ http (>= 3.0, < 5.0)
44
51
  recursive-open-struct (~> 1.0, >= 1.0.4)
45
52
  rest-client (~> 2.0)
46
- mime-types (3.2.2)
53
+ mime-types (3.3.1)
47
54
  mime-types-data (~> 3.2015)
48
- mime-types-data (3.2018.0812)
55
+ mime-types-data (3.2019.1009)
49
56
  minitest (5.11.3)
50
- msgpack (1.2.9)
57
+ msgpack (1.3.3)
51
58
  netrc (0.11.0)
52
59
  power_assert (1.1.3)
53
60
  public_suffix (3.0.3)
54
61
  rake (12.3.2)
55
62
  recursive-open-struct (1.1.0)
56
- rest-client (2.0.2)
63
+ rest-client (2.1.0)
64
+ http-accept (>= 1.7.0, < 2.0)
57
65
  http-cookie (>= 1.0.2, < 2.0)
58
66
  mime-types (>= 1.16, < 4.0)
59
67
  netrc (~> 0.8)
60
68
  safe_yaml (1.0.4)
61
- serverengine (2.1.0)
69
+ serverengine (2.2.1)
62
70
  sigdump (~> 0.2.2)
63
71
  sigdump (0.2.4)
64
72
  simplecov (0.16.1)
@@ -69,14 +77,13 @@ GEM
69
77
  strptime (0.2.3)
70
78
  test-unit (3.3.0)
71
79
  power_assert
72
- thread_safe (0.3.6)
73
- tzinfo (1.2.5)
74
- thread_safe (~> 0.1)
75
- tzinfo-data (1.2019.1)
80
+ tzinfo (2.0.1)
81
+ concurrent-ruby (~> 1.0)
82
+ tzinfo-data (1.2019.3)
76
83
  tzinfo (>= 1.0.0)
77
84
  unf (0.1.4)
78
85
  unf_ext
79
- unf_ext (0.0.7.5)
86
+ unf_ext (0.0.7.6)
80
87
  webmock (3.5.1)
81
88
  addressable (>= 2.3.6)
82
89
  crack (>= 0.3.2)
@@ -90,10 +97,10 @@ DEPENDENCIES
90
97
  bundler (~> 2.0)
91
98
  fluent-plugin-kubernetes-objects!
92
99
  minitest (~> 5.11)
93
- rake (~> 12.3)
100
+ rake (~> 12.0)
94
101
  simplecov
95
102
  test-unit (~> 3.3)
96
103
  webmock (~> 3.5)
97
104
 
98
105
  BUNDLED WITH
99
- 2.0.1
106
+ 2.1.4
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.1.3
@@ -24,20 +24,19 @@ Gem::Specification.new do |spec|
24
24
  CODE_OF_CONDUCT.md README.md LICENSE
25
25
  fluent-plugin-kubernetes-objects.gemspec
26
26
  Gemfile Gemfile.lock
27
- Rakefile
27
+ Rakefile VERSION
28
28
  ] + Dir.glob('lib/**/**').reject(&File.method(:directory?))
29
29
 
30
30
  spec.bindir = 'exe'
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
-
33
32
  spec.required_ruby_version = '>= 2.3.0'
34
-
35
- spec.add_runtime_dependency 'fluentd', '~> 1.4'
36
- spec.add_runtime_dependency 'kubeclient', '~> 4.2'
33
+ spec.add_runtime_dependency 'fluentd', '~> 1.9.1'
34
+ spec.add_runtime_dependency 'kubeclient', '~> 4.6.0'
35
+ spec.add_runtime_dependency 'http_parser.rb', '= 0.5.3'
37
36
 
38
37
  spec.add_development_dependency 'bundler', '~> 2.0'
39
38
  spec.add_development_dependency 'minitest', '~> 5.11'
40
- spec.add_development_dependency 'rake', '~> 12.3'
39
+ spec.add_development_dependency 'rake', '~> 12.0'
41
40
  spec.add_development_dependency 'test-unit', '~> 3.3' # required by fluent/test.rb
42
41
  spec.add_development_dependency 'webmock', '~> 3.5'
43
42
  end
@@ -102,7 +102,6 @@ module Fluent::Plugin
102
102
  end
103
103
 
104
104
  def close
105
- @watchers.each &:finish if @watchers
106
105
  super
107
106
  end
108
107
 
@@ -118,6 +117,21 @@ module Fluent::Plugin
118
117
  [@tag_prefix, item_name, @tag_suffix].join
119
118
  end
120
119
 
120
+ def init_with_kubeconfig()
121
+ options = {}
122
+ config = Kubeclient::Config.read @kubeconfig
123
+ current_context = config.context
124
+
125
+ @client = Kubeclient::Client.new(
126
+ current_context.api_endpoint,
127
+ current_context.api_version,
128
+ options.merge(
129
+ ssl_options: current_context.ssl_options,
130
+ auth_options: current_context.auth_options
131
+ )
132
+ )
133
+ end
134
+
121
135
  def initialize_client
122
136
  # mostly borrowed from Fluentd Kubernetes Metadata Filter Plugin
123
137
  if @kubernetes_url.nil?
@@ -173,16 +187,7 @@ module Fluent::Plugin
173
187
  end
174
188
 
175
189
  def start_watchers
176
- @watchers = @watch_objects.map do |o|
177
- o = o.to_h.dup
178
- o[:as] = :raw
179
- resource_name = o.delete(:resource_name)
180
- watch_interval = o.delete(:interval)
181
-
182
- version = @storage.get(resource_name)
183
- o[:resource_version] = version if version
184
- create_watcher_thread resource_name, o, watch_interval
185
- end
190
+ @watch_objects.each(&method(:create_watcher_thread))
186
191
  end
187
192
 
188
193
  def create_pull_thread(conf)
@@ -225,19 +230,35 @@ module Fluent::Plugin
225
230
  end
226
231
  end
227
232
 
228
- def create_watcher_thread(object_name, watcher, interval)
229
- thread_create(:"watch_#{object_name}") do
230
- @client.public_send("watch_#{object_name}", watcher).tap { |watcher|
231
- tag = generate_tag "#{object_name}.watch"
232
- watcher.each do |entity|
233
- log.trace { "Received new object from watching #{object_name}" }
234
- entity = JSON.parse(entity)
235
- router.emit tag, Fluent::Engine.now, entity
236
- @storage.put object_name, entity['object']['metadata']['resourceVersion']
237
- sleep(interval)
233
+ def create_watcher_thread(conf)
234
+ options = conf.to_h.dup
235
+ options[:as] = :raw
236
+ resource_name = options[:resource_name]
237
+ version = @storage.get(resource_name)
238
+ if version
239
+ options[:resource_version] = version
240
+ else
241
+ options[:resource_version] = 0
242
+ end
243
+
244
+ thread_create :"watch_#{resource_name}" do
245
+ while thread_current_running?
246
+ @client.public_send("watch_#{resource_name}", options).tap do |watcher|
247
+ tag = generate_tag "#{resource_name}"
248
+ watcher.each do |entity|
249
+ begin
250
+ entity = JSON.parse(entity)
251
+ router.emit tag, Fluent::Engine.now, entity
252
+ options[:resource_version] = entity['object']['metadata']['resourceVersion']
253
+ @storage.put resource_name, entity['object']['metadata']['resourceVersion']
254
+ rescue => e
255
+ log.info "Got exception #{e} parsing entity #{entity}. Resetting watcher."
256
+ end
257
+ end
238
258
  end
239
- }
259
+ end
240
260
  end
241
261
  end
242
262
  end
243
263
  end
264
+
@@ -1,4 +1,5 @@
1
1
  require "test_helper"
2
+ require 'fluent/plugin/in_kubernetes_objects.rb'
2
3
 
3
4
  describe Fluent::Plugin::KubernetesObjectsInput do
4
5
  include Fluent::Test::Helpers
@@ -109,9 +110,12 @@ describe Fluent::Plugin::KubernetesObjectsInput do
109
110
  </watch>
110
111
  CONF
111
112
 
113
+ stub_k8s_events params: {resourceVersion: "0"}
114
+ stub_k8s_events params: {resourceVersion: "6621683"}
115
+
112
116
  d.run expect_emits: 1, timeout: 3
113
117
  events = d.events
114
- expect(events.all? { |e| e[0] == 'kubernetes.events.watch'}).must_equal true
118
+ expect(events.all? { |e| e[0] == 'kubernetes.events'}).must_equal true
115
119
  end
116
120
 
117
121
  it "should use checkpoints for watching" do
@@ -133,6 +137,7 @@ describe Fluent::Plugin::KubernetesObjectsInput do
133
137
  CONF
134
138
 
135
139
  stub_k8s_events params: {resourceVersion: "123456"}
140
+ stub_k8s_events params: {resourceVersion: "6621683"}
136
141
 
137
142
  d.run expect_emits: 1, timeout: 3
138
143
  ensure
@@ -1,13 +1,12 @@
1
1
  require 'simplecov'
2
2
  SimpleCov.start
3
3
 
4
- $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
4
+ $LOAD_PATH.unshift(File.expand_path('..', __dir__))
5
5
 
6
6
  # suppress warning, when require the 'http' library shows circle require warning
7
7
  # which is pretty annoying (kubeclient depends on http for watch_stream)
8
8
  _verbose = $VERBOSE
9
9
  $VERBOSE = nil
10
- require 'fluent/plugin/in_kubernetes_objects'
11
10
  $VERBOSE = _verbose
12
11
 
13
12
  require 'fluent/test'
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.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Splunk Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-23 00:00:00.000000000 Z
11
+ date: 2020-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: 1.9.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: 1.9.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: kubeclient
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.2'
33
+ version: 4.6.0
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.2'
40
+ version: 4.6.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: http_parser.rb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +86,14 @@ dependencies:
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '12.3'
89
+ version: '12.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '12.3'
96
+ version: '12.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: test-unit
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - LICENSE
123
137
  - README.md
124
138
  - Rakefile
139
+ - VERSION
125
140
  - fluent-plugin-kubernetes-objects.gemspec
126
141
  - lib/fluent/plugin/in_kubernetes_objects.rb
127
142
  - test/fluent/plugin/in_kubernetes_objects_test.rb
@@ -152,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
167
  - !ruby/object:Gem::Version
153
168
  version: '0'
154
169
  requirements: []
155
- rubygems_version: 3.0.2
170
+ rubygems_version: 3.1.1
156
171
  signing_key:
157
172
  specification_version: 4
158
173
  summary: Fluentd Plugin for Kubernetes Objects.