sensu-plugins-minio 0.0.5 → 1.0.0

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: 19ac09e90e84fceb0d61c7603997fe6de94944dc1a0694880adbbdb5d386e0df
4
- data.tar.gz: 1fd3fdd53520190c69bf82202bd4601c3bfea3f87608b54210bb5318fbe147b7
3
+ metadata.gz: 144a116c5c586f1fa6d951dc893d8f184ee70cfc4c90ef2fbd0ada0e04d7e8dd
4
+ data.tar.gz: 98fa400a4401388b7db16f015ab3e81bed2babb41459b5c0f7a7a13731100e6e
5
5
  SHA512:
6
- metadata.gz: bae5ce47c300d7a8d646cee087d88f1f56b4de7e6462045629a315bfe29547f6756a598d114550fd55df9461dcb5529dd294f676cae91dad19a5eb5b10f16941
7
- data.tar.gz: 1dec5b0cd15064f3f347170ebcf1a02af353c4f96d0df9f35d50a287a028bd7fc275d5399307a568f8aa3452d4509d2576bcdaecc78f217592bf4e654d718be0
6
+ metadata.gz: 03e42dd27a201ba2c70b6086103c9515e08352625cc3785e83a51d0a01b1d1f374fde5eda47f81af3eaaacdd754425b1294e24fbf5a7b62fa72fcc3f1ee0e6f5
7
+ data.tar.gz: f274315e2f90356e0491dd8896c8c63e6d6b24e2fb8fa53f8f4c308087a5c5c18bdaf0f0f2cca833371f88202828c8a3f29c06736b3fbf2fa66a7ba3c66feb80
@@ -0,0 +1,30 @@
1
+ name: main
2
+
3
+ on:
4
+ push:
5
+ branches: [ "master" ]
6
+ pull_request:
7
+ branches: [ "master" ]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ ruby-version: ['2.3.3', '2.5.1', '2.7.0']
19
+
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
27
+ - name: Lint
28
+ run: bundle exec rubocop
29
+ - name: Run specs
30
+ run: bundle exec rspec
data/.rubocop.yml ADDED
@@ -0,0 +1,28 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+
4
+ Lint/RaiseException:
5
+ Enabled: true
6
+
7
+ Lint/StructNewOverride:
8
+ Enabled: true
9
+
10
+
11
+ Metrics:
12
+ Enabled: false
13
+
14
+
15
+ Style/FrozenStringLiteralComment:
16
+ Enabled: false
17
+
18
+ Style/Documentation:
19
+ Enabled: false
20
+
21
+ Style/HashEachMethods:
22
+ Enabled: true
23
+
24
+ Style/HashTransformKeys:
25
+ Enabled: true
26
+
27
+ Style/HashTransformValues:
28
+ Enabled: true
data/Gemfile CHANGED
@@ -4,3 +4,5 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in sensu-plugin-minio.gemspec
6
6
  gemspec
7
+
8
+ gem 'parallel', '< 1.20.0'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sensu-plugins-minio (0.0.5)
4
+ sensu-plugins-minio (1.0.0)
5
5
  sensu-plugin (~> 2.1)
6
6
 
7
7
  GEM
@@ -12,62 +12,60 @@ GEM
12
12
  ast (2.4.2)
13
13
  crack (0.4.5)
14
14
  rexml
15
- diff-lcs (1.4.4)
15
+ diff-lcs (1.5.0)
16
16
  hashdiff (1.0.1)
17
- json (2.5.1)
17
+ jaro_winkler (1.5.4)
18
+ json (2.6.2)
18
19
  mixlib-cli (1.7.0)
19
- parallel (1.20.1)
20
- parser (3.0.2.0)
20
+ parallel (1.19.2)
21
+ parser (3.1.2.0)
21
22
  ast (~> 2.4.1)
22
- public_suffix (4.0.6)
23
- rainbow (3.0.0)
23
+ public_suffix (4.0.7)
24
+ rainbow (3.1.1)
24
25
  rake (13.0.6)
25
- regexp_parser (2.1.1)
26
26
  rexml (3.2.5)
27
- rspec (3.10.0)
28
- rspec-core (~> 3.10.0)
29
- rspec-expectations (~> 3.10.0)
30
- rspec-mocks (~> 3.10.0)
31
- rspec-core (3.10.1)
32
- rspec-support (~> 3.10.0)
33
- rspec-expectations (3.10.1)
27
+ rspec (3.11.0)
28
+ rspec-core (~> 3.11.0)
29
+ rspec-expectations (~> 3.11.0)
30
+ rspec-mocks (~> 3.11.0)
31
+ rspec-core (3.11.0)
32
+ rspec-support (~> 3.11.0)
33
+ rspec-expectations (3.11.0)
34
34
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.10.0)
36
- rspec-mocks (3.10.2)
35
+ rspec-support (~> 3.11.0)
36
+ rspec-mocks (3.11.1)
37
37
  diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.10.0)
39
- rspec-support (3.10.2)
40
- rubocop (0.93.1)
38
+ rspec-support (~> 3.11.0)
39
+ rspec-support (3.11.0)
40
+ rubocop (0.81.0)
41
+ jaro_winkler (~> 1.5.1)
41
42
  parallel (~> 1.10)
42
- parser (>= 2.7.1.5)
43
+ parser (>= 2.7.0.1)
43
44
  rainbow (>= 2.2.2, < 4.0)
44
- regexp_parser (>= 1.8)
45
45
  rexml
46
- rubocop-ast (>= 0.6.0)
47
46
  ruby-progressbar (~> 1.7)
48
47
  unicode-display_width (>= 1.4.0, < 2.0)
49
- rubocop-ast (1.8.0)
50
- parser (>= 3.0.1.1)
51
48
  ruby-progressbar (1.11.0)
52
49
  sensu-plugin (2.7.1)
53
50
  json (< 3.0.0)
54
51
  mixlib-cli (~> 1.5)
55
- unicode-display_width (1.7.0)
56
- webmock (3.13.0)
57
- addressable (>= 2.3.6)
52
+ unicode-display_width (1.8.0)
53
+ webmock (3.14.0)
54
+ addressable (>= 2.8.0)
58
55
  crack (>= 0.3.2)
59
56
  hashdiff (>= 0.4.0, < 2.0.0)
60
57
 
61
58
  PLATFORMS
62
- x86_64-linux
59
+ ruby
63
60
 
64
61
  DEPENDENCIES
65
- bundler (~> 2.2)
62
+ bundler (~> 2.1)
63
+ parallel (< 1.20.0)
66
64
  rake (~> 13.0)
67
65
  rspec (~> 3.10)
68
- rubocop (~> 0.54)
66
+ rubocop (~> 0.54, <= 0.81)
69
67
  sensu-plugins-minio!
70
68
  webmock (~> 3.3)
71
69
 
72
70
  BUNDLED WITH
73
- 2.2.23
71
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Sensu check for minio updates
2
2
 
3
+ Translates the presence of an outdated minio server instance into sensu check
4
+ results to reduce the time-to-patch for minio systems.
5
+
3
6
  ## Installation
4
7
 
5
8
  Add this line to your application's Gemfile:
@@ -24,7 +27,7 @@ Check if a the local minio version is in the most recent version
24
27
  Checks will check the default URL https://dl.min.io/server/minio/release
25
28
  and the default Platform linux-amd64 for updates. Adjust these optional
26
29
  parameters if you want to check a different platform or for whatever
27
- reason need to check a differen URL.
30
+ reason need to check a different URL.
28
31
 
29
32
  | Parameter | Description |
30
33
  | ------------------ | ----------------------------------------------- |
@@ -57,3 +60,7 @@ Plugin follows the [rubocop ruby style guide](https://github.com/rubocop-hq/ruby
57
60
 
58
61
  Bug reports and pull requests are welcome on GitHub at
59
62
  https://github.com/aboutsource/sensu-plugins-minio.
63
+
64
+ ## Security
65
+
66
+ * [Snyk](https://app.snyk.io/org/about-source/project/0a24cb05-4369-457c-8cca-7e4c395eb25e)
@@ -21,6 +21,8 @@ require 'open3'
21
21
  class CheckMinioUpdate < Sensu::Plugin::Check::CLI
22
22
  include Sensu::Plugin::Utils
23
23
 
24
+ RELEASE_PATTERN = /(?<release>RELEASE.\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}Z)/.freeze # rubocop:disable Layout/LineLength
25
+
24
26
  option :checkurl,
25
27
  description: 'Base URL to check for updates',
26
28
  short: '-u URL',
@@ -39,44 +41,55 @@ class CheckMinioUpdate < Sensu::Plugin::Check::CLI
39
41
  default: 30
40
42
 
41
43
  def run
42
- checkurl = config[:checkurl]
43
- platform = config[:platform]
44
- timeout = config[:timeout].to_i
45
-
46
- begin
47
- Timeout.timeout(timeout) do
48
- latest_version = get_latest_version(checkurl, platform)
49
- local_version = get_local_version
50
-
51
- if local_version == latest_version
52
- ok 'No new minio version available'
53
- else
54
- critical "New minio version available #{latest_version}"
55
- end
44
+ Timeout.timeout(config[:timeout].to_i) do
45
+ if local_version == latest_version
46
+ ok 'No new minio version available'
47
+ else
48
+ critical "New minio version available #{latest_version}"
56
49
  end
57
- rescue IOError => e
58
- unknown "#{e.message}"
59
- rescue Timeout::Error
60
- unknown 'Connection timed out'
61
50
  end
51
+ rescue IOError => e
52
+ unknown e.message.to_s
53
+ rescue Timeout::Error
54
+ unknown 'Connection timed out'
62
55
  end
63
56
 
64
- def get_latest_version(checkurl, platform)
65
- uri = URI.parse("#{checkurl}/#{platform}/minio.shasum")
66
- response = Net::HTTP.get_response(uri)
57
+ private
58
+
59
+ def latest_version
60
+ @latest_version ||= begin
61
+ uri = URI.parse("#{config[:checkurl]}/#{config[:platform]}/minio.shasum")
62
+ response = Net::HTTP.get_response(uri)
67
63
 
68
- unless response.is_a?(Net::HTTPSuccess)
69
- raise IOError, "Unable to gather latest minio version: #{response.body}"
64
+ unless response.is_a?(Net::HTTPSuccess)
65
+ raise IOError, "Unable to gather latest minio version: #{response.body}"
66
+ end
67
+
68
+ extract_release(response.body)
70
69
  end
70
+ end
71
71
 
72
- return response.body.split.last.split('.', 2).last
72
+ def local_version
73
+ @local_version ||= begin
74
+ stdout, stderr, status = Open3.capture3(
75
+ { 'PATH' => ENV['PATH'] }, 'minio --version', unsetenv_others: true
76
+ )
77
+
78
+ unless status.success?
79
+ raise IOError, "Unable to gather local minio version: #{stderr}"
80
+ end
81
+
82
+ extract_release(stdout)
83
+ end
73
84
  end
74
85
 
75
- def get_local_version
76
- stdout, stderr, status = Open3.capture3({ 'PATH' => ENV['PATH'] }, 'minio --version', :unsetenv_others => true)
86
+ def extract_release(release_source_str)
87
+ match_data = RELEASE_PATTERN.match(release_source_str)
77
88
 
78
- raise IOError, "Unable to gather local minio version: #{stderr}" unless status.success?
89
+ if match_data.nil?
90
+ raise IOError, "Unable to extract release: #{release_source_str}"
91
+ end
79
92
 
80
- return stdout.split.last
93
+ match_data[:release]
81
94
  end
82
95
  end
@@ -3,7 +3,7 @@
3
3
  module Sensu
4
4
  module Plugins
5
5
  module Minio
6
- VERSION = '0.0.5'
6
+ VERSION = '1.0.0'
7
7
  end
8
8
  end
9
9
  end
@@ -11,20 +11,23 @@ Gem::Specification.new do |spec|
11
11
  spec.authors = ['Hauke Altmann', 'Jonathan Schlue']
12
12
  spec.email = ['info@aboutsource.net']
13
13
 
14
- spec.summary = 'Check if there are updates for the local minio server instance'
14
+ spec.summary = 'Check if there are updates for the local '\
15
+ 'minio server instance'
15
16
  spec.description = 'Used to check for manual installed minio servers'
16
17
  spec.homepage = 'https://github.com/aboutsource/sensu-plugins-minio'
17
18
  spec.require_paths = ['lib']
18
19
 
19
- spec.executables = Dir.glob('bin/**/*.rb').map { |file| File.basename(file) }
20
+ spec.required_ruby_version = '>= 2.3.3'
21
+
22
+ spec.executables = Dir.glob('bin/**/*.rb').map { |f| File.basename(f) }
20
23
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
24
  f.match(%r{^(test|spec|features)/})
22
25
  end
23
26
 
24
27
  spec.add_dependency 'sensu-plugin', '~> 2.1'
25
- spec.add_development_dependency 'bundler', '~> 2.2'
28
+ spec.add_development_dependency 'bundler', '~> 2.1'
26
29
  spec.add_development_dependency 'rake', '~> 13.0'
27
30
  spec.add_development_dependency 'rspec', '~> 3.10'
28
- spec.add_development_dependency 'rubocop', '~> 0.54'
31
+ spec.add_development_dependency 'rubocop', '~> 0.54', '<= 0.81'
29
32
  spec.add_development_dependency 'webmock', '~> 3.3'
30
33
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-minio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hauke Altmann
8
8
  - Jonathan Schlue
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-07-20 00:00:00.000000000 Z
12
+ date: 2022-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sensu-plugin
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.2'
34
+ version: '2.1'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.2'
41
+ version: '2.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -74,6 +74,9 @@ dependencies:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0.54'
77
+ - - "<="
78
+ - !ruby/object:Gem::Version
79
+ version: '0.81'
77
80
  type: :development
78
81
  prerelease: false
79
82
  version_requirements: !ruby/object:Gem::Requirement
@@ -81,6 +84,9 @@ dependencies:
81
84
  - - "~>"
82
85
  - !ruby/object:Gem::Version
83
86
  version: '0.54'
87
+ - - "<="
88
+ - !ruby/object:Gem::Version
89
+ version: '0.81'
84
90
  - !ruby/object:Gem::Dependency
85
91
  name: webmock
86
92
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +109,9 @@ executables:
103
109
  extensions: []
104
110
  extra_rdoc_files: []
105
111
  files:
112
+ - ".github/workflows/main.yml"
106
113
  - ".gitignore"
114
+ - ".rubocop.yml"
107
115
  - ".ruby-version"
108
116
  - Gemfile
109
117
  - Gemfile.lock
@@ -119,7 +127,7 @@ homepage: https://github.com/aboutsource/sensu-plugins-minio
119
127
  licenses:
120
128
  - MIT
121
129
  metadata: {}
122
- post_install_message:
130
+ post_install_message:
123
131
  rdoc_options: []
124
132
  require_paths:
125
133
  - lib
@@ -127,15 +135,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
135
  requirements:
128
136
  - - ">="
129
137
  - !ruby/object:Gem::Version
130
- version: '0'
138
+ version: 2.3.3
131
139
  required_rubygems_version: !ruby/object:Gem::Requirement
132
140
  requirements:
133
141
  - - ">="
134
142
  - !ruby/object:Gem::Version
135
143
  version: '0'
136
144
  requirements: []
137
- rubygems_version: 3.1.2
138
- signing_key:
145
+ rubygems_version: 3.3.15
146
+ signing_key:
139
147
  specification_version: 4
140
148
  summary: Check if there are updates for the local minio server instance
141
149
  test_files: []