sensu-plugins-minio 0.0.7 → 1.1.0

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: 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: []