sensu-plugins-minio 0.0.7 → 1.1.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: 5e9a263cc7dfaccc08b8b3e77912446cc57311b89847e321acba839bb6022438
4
- data.tar.gz: 6580bfe8d6f051eb608aada8707a6bcf3241751cb3c001bf3f868d6f6a353974
3
+ metadata.gz: e594af8003c16f54561385ea639b00cc9c8c4f8724a12bc923a0ea9b08616c9a
4
+ data.tar.gz: 8299f875412630ca49f3b6f48e7f9fb14956bd56a6f4ca882f28b15b5bdccf38
5
5
  SHA512:
6
- metadata.gz: 4f3d68b5e7e1038453e787ecbc3811c721cef660ed432f21853186aab00e2ea62bed66b423c2963cfb1d9318fbe08d611c2243131d0c9970d6838619c17f6b2b
7
- data.tar.gz: ca7f4fcb79c96f4a411d6137e321bb339cd758a634ca95f822022be0a6c652bb297638f3fa594704bbf10ae54fd9b183ce569a38babe554bc1bf10d97643d5c9
6
+ metadata.gz: ad37b9db0265f265fb2a5edf11a2d207c2a27841d0f9d105cfcd73e2f0296f3f5e71d5015765a5107518cdbbe17b4dc63b705ce7d83c7488a56e3a17275fb7fe
7
+ data.tar.gz: 9c7a29f102d54b12109b4a09696e79a3972eef8a39b90871247dc33c636066a1163b9ac1ef327eb55b8533ca0e0eabdda129b5b54a2ad65605021471f4571f4e
@@ -0,0 +1,27 @@
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
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: '2.7.0'
23
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
24
+ - name: Lint
25
+ run: bundle exec rubocop
26
+ - name: Run specs
27
+ run: bundle exec rspec
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.7)
4
+ sensu-plugins-minio (1.1.0)
5
5
  sensu-plugin (~> 2.1)
6
6
 
7
7
  GEM
@@ -15,9 +15,9 @@ GEM
15
15
  diff-lcs (1.5.0)
16
16
  hashdiff (1.0.1)
17
17
  jaro_winkler (1.5.4)
18
- json (2.6.2)
18
+ json (2.7.1)
19
19
  mixlib-cli (1.7.0)
20
- parallel (1.22.1)
20
+ parallel (1.19.2)
21
21
  parser (3.1.2.0)
22
22
  ast (~> 2.4.1)
23
23
  public_suffix (4.0.7)
@@ -60,6 +60,7 @@ PLATFORMS
60
60
 
61
61
  DEPENDENCIES
62
62
  bundler (~> 2.1)
63
+ parallel (< 1.20.0)
63
64
  rake (~> 13.0)
64
65
  rspec (~> 3.10)
65
66
  rubocop (~> 0.54, <= 0.81)
data/README.md CHANGED
@@ -24,9 +24,9 @@ Check if a the local minio version is in the most recent version
24
24
 
25
25
  ### Optional parameters
26
26
 
27
- Checks will check the default URL https://dl.min.io/server/minio/release
28
- and the default Platform linux-amd64 for updates. Adjust these optional
29
- parameters if you want to check a different platform or for whatever
27
+ Checks will check the default URL https://dl.min.io/server/minio/release
28
+ and the default Platform linux-amd64 for updates. Adjust these optional
29
+ parameters if you want to check a different platform or for whatever
30
30
  reason need to check a different URL.
31
31
 
32
32
  | Parameter | Description |
@@ -42,7 +42,20 @@ reason need to check a different URL.
42
42
 
43
43
  ## Development
44
44
 
45
- After checking out the repo, run `bin/setup` to install dependencies. You can
45
+ Install rbenv and ruby-build to get a ruby 2.7.x on your system (running on ubuntu 20.04).
46
+
47
+ yay -S rbenv ruby-build
48
+
49
+ Add the rbenv shell extension (`eval "$(rbenv init -)"`) to your shell config (e.g. `~/.zshrc`) and install ruby 2.7.0
50
+
51
+ rbenv install 2.7.0
52
+
53
+ After checking out the repo verify, that your system is using the 2.7.0 ruby:
54
+
55
+ # rbenv version
56
+ 2.7.0 (set by ..../sensu-plugins-minio/.ruby-version)
57
+
58
+ Run `bin/setup` to install dependencies. You can
46
59
  also run `bin/console` for an interactive prompt that will allow you to
47
60
  experiment.
48
61
 
@@ -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,49 +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
-
50
- if local_version == latest_version
51
- ok 'No new minio version available'
52
- else
53
- critical "New minio version available #{latest_version}"
54
- 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}"
55
49
  end
56
- rescue IOError => e
57
- unknown e.message.to_s
58
- rescue Timeout::Error
59
- unknown 'Connection timed out'
60
50
  end
51
+ rescue IOError => e
52
+ unknown e.message.to_s
53
+ rescue Timeout::Error
54
+ unknown 'Connection timed out'
61
55
  end
62
56
 
63
57
  private
64
58
 
65
- def get_latest_version(checkurl, platform)
66
- uri = URI.parse("#{checkurl}/#{platform}/minio.shasum")
67
- response = Net::HTTP.get_response(uri)
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)
68
63
 
69
- unless response.is_a?(Net::HTTPSuccess)
70
- raise IOError, "Unable to gather latest minio version: #{response.body}"
71
- end
64
+ unless response.is_a?(Net::HTTPSuccess)
65
+ raise IOError, "Unable to gather latest minio version: #{response.body}"
66
+ end
72
67
 
73
- response.body.split.last.split('.', 2).last
68
+ extract_release(response.body)
69
+ end
74
70
  end
75
71
 
76
72
  def local_version
77
- stdout, stderr, status = Open3.capture3(
78
- { 'PATH' => ENV['PATH'] }, 'minio --version', unsetenv_others: true
79
- )
73
+ @local_version ||= begin
74
+ stdout, stderr, status = Open3.capture3(
75
+ { 'PATH' => ENV['PATH'] }, 'journalctl --boot --unit minio | grep "Version: RELEASE" | tail -n 1', unsetenv_others: true # rubocop:disable Layout/LineLength
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
84
+ end
85
+
86
+ def extract_release(release_source_str)
87
+ match_data = RELEASE_PATTERN.match(release_source_str)
80
88
 
81
- unless status.success?
82
- raise IOError, "Unable to gather local minio version: #{stderr}"
89
+ if match_data.nil?
90
+ raise IOError, "Unable to extract release: #{release_source_str}"
83
91
  end
84
92
 
85
- stdout.lines.first.split.last
93
+ match_data[:release]
86
94
  end
87
95
  end
data/bin/setup CHANGED
@@ -3,6 +3,7 @@ set -euo pipefail
3
3
  IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
- bundle install --path vendor/bundle
6
+ bundle config set path vendor/bundle
7
+ bundle install
7
8
 
8
9
  # Do any other automated setup that you need to do here
@@ -3,7 +3,7 @@
3
3
  module Sensu
4
4
  module Plugins
5
5
  module Minio
6
- VERSION = '0.0.7'
6
+ VERSION = '1.1.0'
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sensu/plugins/minio/version'
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.name = 'sensu-plugins-minio'
9
9
  spec.version = Sensu::Plugins::Minio::VERSION
10
10
  spec.licenses = ['MIT']
11
- spec.authors = ['Hauke Altmann', 'Jonathan Schlue']
11
+ spec.authors = ['Hauke Altmann', 'Jonathan Schlue', 'Benjamin Meichsner']
12
12
  spec.email = ['info@aboutsource.net']
13
13
 
14
14
  spec.summary = 'Check if there are updates for the local '\
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-minio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hauke Altmann
8
8
  - Jonathan Schlue
9
- autorequire:
9
+ - Benjamin Meichsner
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2022-06-07 00:00:00.000000000 Z
13
+ date: 2024-03-26 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: sensu-plugin
@@ -109,6 +110,7 @@ executables:
109
110
  extensions: []
110
111
  extra_rdoc_files: []
111
112
  files:
113
+ - ".github/workflows/main.yml"
112
114
  - ".gitignore"
113
115
  - ".rubocop.yml"
114
116
  - ".ruby-version"
@@ -120,13 +122,14 @@ files:
120
122
  - bin/check-minio-update.rb
121
123
  - bin/console
122
124
  - bin/setup
125
+ - lib/sensu/plugins/minio.rb
123
126
  - lib/sensu/plugins/minio/version.rb
124
127
  - sensu-plugins-minio.gemspec
125
128
  homepage: https://github.com/aboutsource/sensu-plugins-minio
126
129
  licenses:
127
130
  - MIT
128
131
  metadata: {}
129
- post_install_message:
132
+ post_install_message:
130
133
  rdoc_options: []
131
134
  require_paths:
132
135
  - lib
@@ -142,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
145
  version: '0'
143
146
  requirements: []
144
147
  rubygems_version: 3.1.2
145
- signing_key:
148
+ signing_key:
146
149
  specification_version: 4
147
150
  summary: Check if there are updates for the local minio server instance
148
151
  test_files: []