From 6d42085909110f3e1fdf0d5c0e103d40b1690f9e Mon Sep 17 00:00:00 2001 From: Tomasz Tarczynski Date: Tue, 25 Feb 2020 09:17:42 +0100 Subject: [PATCH 01/12] Fix a bug in check-kube-pods-running.rb : "no implicit conversion of nil into String" when there are PODs in Pending state modified: check-kube-pods-running.rb --- bin/check-kube-pods-running.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/check-kube-pods-running.rb b/bin/check-kube-pods-running.rb index 2014669..5ca383f 100755 --- a/bin/check-kube-pods-running.rb +++ b/bin/check-kube-pods-running.rb @@ -117,7 +117,11 @@ def run next if should_exclude_node(pod.spec.nodeName) next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') next unless pod.status.phase != 'Succeeded' && !pod.status.conditions.nil? - pod_stamp = Time.parse(pod.status.startTime) + if pod.status.phase == 'Pending' + pod_stamp = Time.parse(pod.metadata.creationTimestamp) + else + pod_stamp = Time.parse(pod.status.startTime) + end runtime = (Time.now.utc - pod_stamp.utc).to_i next if runtime < config[:not_ready_time] failed_pods << pod.metadata.name unless ready? pod From b2bedec4bb311fe27a30cfe818bbd12f2d469cba Mon Sep 17 00:00:00 2001 From: Tomasz Tarczynski Date: Tue, 25 Feb 2020 11:27:10 +0100 Subject: [PATCH 02/12] Add CHANGELOG.md message --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3cac29..20e89b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] +– `check-kube-pods-running.rb`: fix "no implicit conversion of nil into String" exception when POD's status.phase == Pending (@ttarczynski) + ## [4.0.0] - 2018-12-15 ### Security - updated rubocop dependency to `~> 0.51.0` per: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8418. (@majormoses) From 2f1e8fd000a5a1c73a242a06e8c0e49283652d27 Mon Sep 17 00:00:00 2001 From: Ben Abrams Date: Wed, 18 Mar 2020 19:41:47 -0700 Subject: [PATCH 03/12] cleanup from previous PR Signed-off-by: Ben Abrams --- CHANGELOG.md | 3 ++- sensu-plugins-kubernetes.gemspec | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20e89b6..b7c2f4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,8 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] -– `check-kube-pods-running.rb`: fix "no implicit conversion of nil into String" exception when POD's status.phase == Pending (@ttarczynski) +### Fixed +– `check-kube-pods-running.rb`: when POD's status.phase == Pending use the creation time rather than the start time to determine the pod timestamp as it will be nil and cause a downstream type error (@ttarczynski) ## [4.0.0] - 2018-12-15 ### Security diff --git a/sensu-plugins-kubernetes.gemspec b/sensu-plugins-kubernetes.gemspec index b572055..1ecb9c7 100644 --- a/sensu-plugins-kubernetes.gemspec +++ b/sensu-plugins-kubernetes.gemspec @@ -32,7 +32,7 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength s.add_runtime_dependency 'activesupport', '< 5.0.0' s.add_runtime_dependency 'kubeclient', '~> 2.3' - s.add_development_dependency 'bundler', '~> 1.7' + s.add_development_dependency 'bundler', '~> 2.1' s.add_development_dependency 'codeclimate-test-reporter', '~> 0.4' s.add_development_dependency 'github-markup', '~> 3.0' s.add_development_dependency 'pry', '~> 0.10' From 054fbb18ac1ef2565f5eff2a3e990df206ad7fba Mon Sep 17 00:00:00 2001 From: Ben Abrams Date: Wed, 18 Mar 2020 19:45:04 -0700 Subject: [PATCH 04/12] satisfy the :cops: Signed-off-by: Ben Abrams --- bin/check-kube-pods-running.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/check-kube-pods-running.rb b/bin/check-kube-pods-running.rb index 5ca383f..7720b3f 100755 --- a/bin/check-kube-pods-running.rb +++ b/bin/check-kube-pods-running.rb @@ -117,11 +117,11 @@ def run next if should_exclude_node(pod.spec.nodeName) next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') next unless pod.status.phase != 'Succeeded' && !pod.status.conditions.nil? - if pod.status.phase == 'Pending' - pod_stamp = Time.parse(pod.metadata.creationTimestamp) - else - pod_stamp = Time.parse(pod.status.startTime) - end + pod_stamp = if pod.status.phase == 'Pending' + Time.parse(pod.metadata.creationTimestamp) + else + Time.parse(pod.status.startTime) + end runtime = (Time.now.utc - pod_stamp.utc).to_i next if runtime < config[:not_ready_time] failed_pods << pod.metadata.name unless ready? pod From 0be74357848571352c3fc47dbda0edb45df2e386 Mon Sep 17 00:00:00 2001 From: Ben Abrams Date: Wed, 18 Mar 2020 19:56:31 -0700 Subject: [PATCH 05/12] prep for 4.0.1 release Signed-off-by: Ben Abrams --- CHANGELOG.md | 5 ++++- lib/sensu-plugins-kubernetes/version.rb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7c2f4c..699b8b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] + +## [4.0.1] - 2020-03-18 ### Fixed – `check-kube-pods-running.rb`: when POD's status.phase == Pending use the creation time rather than the start time to determine the pod timestamp as it will be nil and cause a downstream type error (@ttarczynski) @@ -99,7 +101,8 @@ pending pods, the restart count portion has been split into it's own check, `che ### Added - initial release -[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...HEAD +[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...HEAD +[4.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...4.0.1 [4.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.3.0...4.0.0 [3.3.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.2.0...3.3.0 [3.2.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.1.1...3.2.0 diff --git a/lib/sensu-plugins-kubernetes/version.rb b/lib/sensu-plugins-kubernetes/version.rb index ac0af75..bac148e 100644 --- a/lib/sensu-plugins-kubernetes/version.rb +++ b/lib/sensu-plugins-kubernetes/version.rb @@ -2,7 +2,7 @@ module SensuPluginsKubernetes module Version MAJOR = 4 MINOR = 0 - PATCH = 0 + PATCH = 1 VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.') end From b16e270e7690f9bfab61fb129b86fa9cbd9eb2ea Mon Sep 17 00:00:00 2001 From: Todd Campbell Date: Wed, 22 Apr 2020 15:57:57 -0700 Subject: [PATCH 06/12] Update dependencies, remediate rubocop, add bonsai support Signed-off-by: Todd Campbell --- .bonsai.yml | 53 +++++++++++++++++++++++++ .rubocop.yml | 34 +++++++++++----- .travis.yml | 13 +++++- CHANGELOG.md | 13 ++++++ Gemfile | 2 + README.md | 2 - Rakefile | 4 +- bin/check-kube-apiserver-available.rb | 3 +- bin/check-kube-nodes-ready.rb | 4 +- bin/check-kube-pods-pending.rb | 8 +++- bin/check-kube-pods-restarting.rb | 8 +++- bin/check-kube-pods-running.rb | 9 ++++- bin/check-kube-pods-runtime.rb | 7 +++- bin/check-kube-service-available.rb | 11 ++++- bin/handler-kube-pod.rb | 3 +- bin/metrics-pods.rb | 4 +- lib/sensu-plugins-kubernetes.rb | 2 + lib/sensu-plugins-kubernetes/cli.rb | 2 + lib/sensu-plugins-kubernetes/client.rb | 6 ++- lib/sensu-plugins-kubernetes/exclude.rb | 2 + lib/sensu-plugins-kubernetes/version.rb | 2 + sensu-plugins-kubernetes.gemspec | 23 ++++++----- test/spec_helper.rb | 4 -- 23 files changed, 175 insertions(+), 44 deletions(-) create mode 100644 .bonsai.yml diff --git a/.bonsai.yml b/.bonsai.yml new file mode 100644 index 0000000..ee9f5c0 --- /dev/null +++ b/.bonsai.yml @@ -0,0 +1,53 @@ +--- +description: "#{repo}" +builds: +- platform: "alpine" + arch: "amd64" + asset_filename: "#{repo}_#{version}_alpine_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" + - "entity.system.platform == 'alpine'" + - "entity.system.platform_version.split('.')[0] == '3'" +- platform: "alpine3.8" + arch: "amd64" + asset_filename: "#{repo}_#{version}_alpine3.8_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" + - "entity.system.platform == 'alpine'" +- platform: "centos6" + arch: "amd64" + asset_filename: "#{repo}_#{version}_centos6_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" + - "entity.system.platform_family == 'rhel'" + - "entity.system.platform_version.split('.')[0] == '6'" +- platform: "centos7" + arch: "amd64" + asset_filename: "#{repo}_#{version}_centos7_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" + - "entity.system.platform_family == 'rhel'" + - "entity.system.platform_version.split('.')[0] == '7'" +- platform: "debian" + arch: "amd64" + asset_filename: "#{repo}_#{version}_debian_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" + - "entity.system.platform_family == 'debian'" +- platform: "debian9" + arch: "amd64" + asset_filename: "#{repo}_#{version}_debian9_linux_amd64.tar.gz" + sha_filename: "#{repo}_#{version}_sha512-checksums.txt" + filter: + - "entity.system.os == 'linux'" + - "entity.system.arch == 'amd64'" diff --git a/.rubocop.yml b/.rubocop.yml index 0ba1665..d27d5bc 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,30 +1,46 @@ -MethodLength: +Metrics/MethodLength: Max: 200 -LineLength: +Layout/LineLength: Max: 160 -AbcSize: +Metrics/AbcSize: Max: 100 -FileName: +Naming/FileName: Enabled: false -PerceivedComplexity: +Metrics/PerceivedComplexity: Enabled: false -CyclomaticComplexity: +Metrics/CyclomaticComplexity: Enabled: false -ClassLength: +Metrics/ClassLength: Enabled: false -IfUnlessModifier: +Style/IfUnlessModifier: Enabled: false -RegexpLiteral: +Style/RegexpLiteral: Enabled: false Style/Documentation: Enabled: false + +Lint/RaiseException: + Enabled: true + +Lint/StructNewOverride: + Enabled: true + +Style/HashEachMethods: + Enabled: true + +Style/HashTransformKeys: + Enabled: true + +Style/HashTransformValues: + Enabled: true + diff --git a/.travis.yml b/.travis.yml index 08b7f71..5bcc0e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: ruby +services: +- docker cache: - bundler install: @@ -16,8 +18,10 @@ script: - bundle exec rake default - gem build sensu-plugins-kubernetes.gemspec - gem install sensu-plugins-kubernetes-*.gem +before_deploy: +- bash -c "[ ! -d bonsai/ ] && git clone https://github.com/sensu/sensu-go-bonsai-asset.git bonsai || echo 'bonsai/ exists, skipping git clone'" deploy: - provider: rubygems +- provider: rubygems api_key: secure: EzXA4HctGH56NvP4RS+vEntVwB5q3K7xDnvCS7KQrZIly7B5rlXhJgHzrcdS61AAHybF/C4btOIazx3lkI+TihX3zyztziHa4+vwcavhF86TDk4MmDgYqScSL9agP+LOHlQ38jLY/l8buGLgF96V1/pgNZjnw5vTugE3GXtDfPF6f6CXg/3RqADF8yjglb9HAxWYEkwmPLZynbtHFJA9/h5mggVfjHJFAZLFHsewx4FB4FjxMrt3yusIlNbj9LKHHqsQqJl8DCoxGhiQmysSLS3NoN7vVhi3UA4TdHArtSZgRmsZKhsJDGcgM/DWGFvqmnHTItlAVTKPZhSAYBxIsbpY5adGMNE/QDDDbnjqhCE5PZQ1mQq12E1dmcFGZAV7vVPvzkBGCMNLnlH6KFuqw/mUg/BU7xPPMnvsc51XEbYJtFFZ1UGeJWTe0DTrLCmIZd4r9KaydNeal35iu/s+rC9aPh9u0AsSJiKVi3CewoVAgc+A+uF8WTTjol0APwO4sra4JlNBeKMVgq2/4uEzsSDCz+Y/U4Rw8RLLXi6xGB1PM1Ar9SvIabeoNj9gY+LApYI1YAPUUVUXf44TLSwvDSrUW12DnhPgMg0CjicGlZkXOAnDNob8b8bU8YUP7wN8eOwt0J63hhn40G7XCA5WCpNm0W7qbLlV8sUBb+3F07c= gem: sensu-plugins-kubernetes @@ -27,3 +31,10 @@ deploy: rvm: 2.3.0 rvm: 2.4.1 repo: sensu-plugins/sensu-plugins-kubernetes +- provider: script + script: bonsai/ruby-runtime/travis-build-ruby-plugin-assets.sh sensu-plugins-kubernetes + skip_cleanup: true + on: + tags: true + all_branches: true + rvm: 2.4.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 699b8b6..461debb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] +### Breaking Changes +- Bump `sensu-plugin` dependency from `~> 2.7` to `~> 4.0` +- Bump `activesupport` dependancy to '< 7.0.0' +- Bump `kubeclient` dependency to '>= 2.3', '< 5.0' + +### Added +- Bonsai asset support + +### Changed +- Updated rubocop dependency to '~> 0.81.0' +- Remediated rubocop issues +- Updated rake dependency to '~> 13.0' +- Removed codeclimate-test-reporter ## [4.0.1] - 2020-03-18 ### Fixed diff --git a/Gemfile b/Gemfile index fa75df1..7f4f5e9 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' gemspec diff --git a/README.md b/README.md index d6e71d3..1f57d2a 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-kubernetes.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-kubernetes) [![Gem Version](https://badge.fury.io/rb/sensu-plugins-kubernetes.svg)](http://badge.fury.io/rb/sensu-plugins-kubernetes) -[![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes) -[![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-kubernetes) [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-kubernetes.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-kubernetes) ## Functionality diff --git a/Rakefile b/Rakefile index 0e0967e..8f24352 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'bundler/gem_tasks' require 'github/markup' require 'redcarpet' @@ -27,7 +29,7 @@ desc 'Test for binstubs' task :check_binstubs do bin_list = Gem::Specification.load('sensu-plugins-kubernetes.gemspec').executables bin_list.each do |b| - `which #{ b }` + `which #{b}` unless $CHILD_STATUS.success? puts "#{b} was not a binstub" exit diff --git a/bin/check-kube-apiserver-available.rb b/bin/check-kube-apiserver-available.rb index ee3b80a..6dba8de 100755 --- a/bin/check-kube-apiserver-available.rb +++ b/bin/check-kube-apiserver-available.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-apiserver-available.rb # # DESCRIPTION: diff --git a/bin/check-kube-nodes-ready.rb b/bin/check-kube-nodes-ready.rb index 414fed1..80cabe3 100755 --- a/bin/check-kube-nodes-ready.rb +++ b/bin/check-kube-nodes-ready.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-nodes-ready.rb # # DESCRIPTION: @@ -64,6 +65,7 @@ def run warning "#{node.name} does not have a status" elsif item.status != 'True' next if should_exclude_node(node.metadata.name) + failed_nodes << node.metadata.name unless node.spec.unschedulable end end diff --git a/bin/check-kube-pods-pending.rb b/bin/check-kube-pods-pending.rb index 71eeef2..29fe04b 100755 --- a/bin/check-kube-pods-pending.rb +++ b/bin/check-kube-pods-pending.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-pods-pending # # DESCRIPTION: @@ -121,6 +122,7 @@ def run next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') # Check for pending state next unless pod.status.phase == 'Pending' + pod_stamp = Time.parse(pod.metadata.creationTimestamp) puts pod.metadata.name if (Time.now.utc - pod_stamp.utc).to_i > config[:pending_timeout] @@ -137,13 +139,15 @@ def run end def parse_list(list) - return list.split(',') if list && list.include?(',') + return list.split(',') if list&.include?(',') return [list] if list + [''] end def should_exclude_namespace(namespace) return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty? + config[:exclude_namespace].include?(namespace) end end diff --git a/bin/check-kube-pods-restarting.rb b/bin/check-kube-pods-restarting.rb index 328cae0..f5168b1 100755 --- a/bin/check-kube-pods-restarting.rb +++ b/bin/check-kube-pods-restarting.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-pods-restarting # # DESCRIPTION: @@ -120,6 +121,7 @@ def run next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') # Check restarts next if pod.status.containerStatuses.nil? + pod.status.containerStatuses.each do |container| if container.restartCount.to_i > config[:restart_count] restarted_pods << "#{pod.metadata.namespace}.#{container.name}" @@ -137,13 +139,15 @@ def run end def parse_list(list) - return list.split(',') if list && list.include?(',') + return list.split(',') if list&.include?(',') return [list] if list + [''] end def should_exclude_namespace(namespace) return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty? + config[:exclude_namespace].include?(namespace) end end diff --git a/bin/check-kube-pods-running.rb b/bin/check-kube-pods-running.rb index 7720b3f..270d517 100755 --- a/bin/check-kube-pods-running.rb +++ b/bin/check-kube-pods-running.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-pods-running # # DESCRIPTION: @@ -117,6 +118,7 @@ def run next if should_exclude_node(pod.spec.nodeName) next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') next unless pod.status.phase != 'Succeeded' && !pod.status.conditions.nil? + pod_stamp = if pod.status.phase == 'Pending' Time.parse(pod.metadata.creationTimestamp) else @@ -124,6 +126,7 @@ def run end runtime = (Time.now.utc - pod_stamp.utc).to_i next if runtime < config[:not_ready_time] + failed_pods << pod.metadata.name unless ready? pod end @@ -137,13 +140,15 @@ def run end def parse_list(list) - return list.split(',') if list && list.include?(',') + return list.split(',') if list&.include?(',') return [list] if list + [''] end def should_exclude_namespace(namespace) return !config[:include_namespace].include?(namespace) unless config[:include_namespace].empty? + config[:exclude_namespace].include?(namespace) end diff --git a/bin/check-kube-pods-runtime.rb b/bin/check-kube-pods-runtime.rb index 1aa07d1..a8a9841 100755 --- a/bin/check-kube-pods-runtime.rb +++ b/bin/check-kube-pods-runtime.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-pods-runtime # # DESCRIPTION: @@ -85,6 +86,7 @@ def run next unless pods_list.include?(pod.metadata.name) || pods_list.include?('all') # Check for Running state next unless pod.status.phase == 'Running' + pod_stamp = Time.parse(pod.status.startTime) runtime = (Time.now.utc - pod_stamp.utc).to_i @@ -109,8 +111,9 @@ def run end def parse_list(list) - return list.split(',') if list && list.include?(',') + return list.split(',') if list&.include?(',') return [list] if list + [''] end end diff --git a/bin/check-kube-service-available.rb b/bin/check-kube-service-available.rb index 8cc7155..a438c5f 100755 --- a/bin/check-kube-service-available.rb +++ b/bin/check-kube-service-available.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # check-kube-pods-service-available # # DESCRIPTION: @@ -63,6 +64,7 @@ def run # TODO: come back and clean me up s.each do |a| # rubocop:disable Metrics/BlockLength next unless services.include?(a.metadata.name) + # Build the selector key so we can fetch the corresponding pod selector_key = [] services.delete(a.metadata.name) @@ -70,6 +72,7 @@ def run selector_key << "#{k}=#{v}" end next if selector_key.empty? + # Get the pod pod = nil begin @@ -79,11 +82,13 @@ def run end # Make sure our pod is running next if pod.nil? + pod_available = false pod.each do |p| case p.status.phase when 'Pending' next if p.status.startTime.nil? + if (Time.now - Time.parse(p.status.startTime)).to_i < config[:pendingTime] pod_available = true break @@ -91,6 +96,7 @@ def run when 'Running' p.status.conditions.each do |c| next unless c.type == 'Ready' + if c.status == 'True' pod_available = true break @@ -116,8 +122,9 @@ def run end def parse_list(list) - return list.split(',') if list && list.include?(',') + return list.split(',') if list&.include?(',') return [list] if list + [''] end end diff --git a/bin/handler-kube-pod.rb b/bin/handler-kube-pod.rb index b9c54f9..7387ec1 100755 --- a/bin/handler-kube-pod.rb +++ b/bin/handler-kube-pod.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # handler-kube-pod # # DESCRIPTION: diff --git a/bin/metrics-pods.rb b/bin/metrics-pods.rb index 6c0dd26..67e5c26 100755 --- a/bin/metrics-pods.rb +++ b/bin/metrics-pods.rb @@ -1,5 +1,6 @@ #! /usr/bin/env ruby -# +# frozen_string_literal: true + # pod-metrics # # DESCRIPTION: @@ -49,6 +50,7 @@ def run critical 'API error: ' << e.message end next if pod.nil? + pod.each do count[s.metadata.name] += 1 end diff --git a/lib/sensu-plugins-kubernetes.rb b/lib/sensu-plugins-kubernetes.rb index b60345b..88a9773 100644 --- a/lib/sensu-plugins-kubernetes.rb +++ b/lib/sensu-plugins-kubernetes.rb @@ -1 +1,3 @@ +# frozen_string_literal: true + require 'sensu-plugins-kubernetes/version' diff --git a/lib/sensu-plugins-kubernetes/cli.rb b/lib/sensu-plugins-kubernetes/cli.rb index 92a1a5e..87b9a63 100644 --- a/lib/sensu-plugins-kubernetes/cli.rb +++ b/lib/sensu-plugins-kubernetes/cli.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'sensu-plugin/check/cli' require 'sensu-plugins-kubernetes/client.rb' diff --git a/lib/sensu-plugins-kubernetes/client.rb b/lib/sensu-plugins-kubernetes/client.rb index 281dc24..f4d0844 100644 --- a/lib/sensu-plugins-kubernetes/client.rb +++ b/lib/sensu-plugins-kubernetes/client.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'kubeclient' require 'uri' @@ -10,11 +12,11 @@ module Client # The location of the service account provided CA. # (if the cluster is configured to provide it) INCLUSTER_CA_FILE = - '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'.freeze + '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' # The location of the service account provided authentication token. INCLUSTER_TOKEN_FILE = - '/var/run/secrets/kubernetes.io/serviceaccount/token'.freeze + '/var/run/secrets/kubernetes.io/serviceaccount/token' # Creates a new Kubeclient::Client instance using the given SSL # and authentication options (if any) diff --git a/lib/sensu-plugins-kubernetes/exclude.rb b/lib/sensu-plugins-kubernetes/exclude.rb index beb7259..350b72d 100644 --- a/lib/sensu-plugins-kubernetes/exclude.rb +++ b/lib/sensu-plugins-kubernetes/exclude.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Sensu module Plugins # Namespace for the Kubernetes sensu-plugin. diff --git a/lib/sensu-plugins-kubernetes/version.rb b/lib/sensu-plugins-kubernetes/version.rb index bac148e..c7bfd28 100644 --- a/lib/sensu-plugins-kubernetes/version.rb +++ b/lib/sensu-plugins-kubernetes/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module SensuPluginsKubernetes module Version MAJOR = 4 diff --git a/sensu-plugins-kubernetes.gemspec b/sensu-plugins-kubernetes.gemspec index 1ecb9c7..124148e 100644 --- a/sensu-plugins-kubernetes.gemspec +++ b/sensu-plugins-kubernetes.gemspec @@ -1,10 +1,12 @@ -lib = File.expand_path('../lib', __FILE__) +# frozen_string_literal: true + +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'date' require_relative 'lib/sensu-plugins-kubernetes' -Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength +Gem::Specification.new do |s| s.authors = ['Sensu-Plugins and contributors'] s.date = Date.today.to_s s.description = 'Provides monitoring for Kubernetes via Sensu' @@ -13,10 +15,10 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength s.files = Dir.glob('{bin,lib}/**/*') + %w[LICENSE README.md CHANGELOG.md] s.homepage = 'https://github.com/sensu-plugins/sensu-plugins-kubernetes' s.license = 'MIT' - s.metadata = { 'maintainer' => 'sensu-plugin', + s.metadata = { 'maintainer' => 'sensu-plugin', 'development_status' => 'active', - 'production_status' => 'unstable - testing recommended', - 'release_draft' => 'false', + 'production_status' => 'unstable - testing recommended', + 'release_draft' => 'false', 'release_prerelease' => 'false' } s.name = 'sensu-plugins-kubernetes' s.platform = Gem::Platform::RUBY @@ -27,18 +29,17 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength s.test_files = s.files.grep(%r{^(test|spec|features)/}) s.version = SensuPluginsKubernetes::Version::VER_STRING - s.add_runtime_dependency 'sensu-plugin', '~> 2.7' + s.add_runtime_dependency 'sensu-plugin', '~> 4.0' - s.add_runtime_dependency 'activesupport', '< 5.0.0' - s.add_runtime_dependency 'kubeclient', '~> 2.3' + s.add_runtime_dependency 'activesupport', '< 7.0.0' + s.add_runtime_dependency 'kubeclient', '>= 2.3', '< 5.0' s.add_development_dependency 'bundler', '~> 2.1' - s.add_development_dependency 'codeclimate-test-reporter', '~> 0.4' s.add_development_dependency 'github-markup', '~> 3.0' s.add_development_dependency 'pry', '~> 0.10' - s.add_development_dependency 'rake', '~> 10.5' + s.add_development_dependency 'rake', '~> 13.0' s.add_development_dependency 'redcarpet', '~> 3.2' s.add_development_dependency 'rspec', '~> 3.4' - s.add_development_dependency 'rubocop', '~> 0.51.0' + s.add_development_dependency 'rubocop', '~> 0.81.0' s.add_development_dependency 'yard', '~> 0.8' end diff --git a/test/spec_helper.rb b/test/spec_helper.rb index 9dc24ec..863189a 100644 --- a/test/spec_helper.rb +++ b/test/spec_helper.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'codeclimate-test-reporter' - RSpec.configure do |c| # Sensu plugins run in the context of an at_exit handler. This prevents # code-under-test from being run at the end of the rspec suite. @@ -24,8 +22,6 @@ def unknown(*); end end end -CodeClimate::TestReporter.start - def timestamp kind_of Numeric end From 41886874fffb2ec3fb50de33478af37bf1134b42 Mon Sep 17 00:00:00 2001 From: Todd Campbell Date: Fri, 24 Apr 2020 10:10:15 -0700 Subject: [PATCH 07/12] fix debian9 Signed-off-by: Todd Campbell --- .bonsai.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.bonsai.yml b/.bonsai.yml index ee9f5c0..f7a4649 100644 --- a/.bonsai.yml +++ b/.bonsai.yml @@ -51,3 +51,5 @@ builds: filter: - "entity.system.os == 'linux'" - "entity.system.arch == 'amd64'" + - "entity.system.platform_family == 'debian'" + - "entity.system.platform_version.split('.')[0] == '9'" From 7ecc7e016ebed28cc7b31a3fd5589a080ac5c443 Mon Sep 17 00:00:00 2001 From: Todd Campbell Date: Mon, 27 Apr 2020 12:55:22 -0700 Subject: [PATCH 08/12] Roll version 5.0.0 Signed-off-by: Todd Campbell --- CHANGELOG.md | 4 +++- lib/sensu-plugins-kubernetes/version.rb | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 461debb..09c0cb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] +## [5.0.0] - 2020-04-27 ### Breaking Changes - Bump `sensu-plugin` dependency from `~> 2.7` to `~> 4.0` - Bump `activesupport` dependancy to '< 7.0.0' @@ -114,7 +115,8 @@ pending pods, the restart count portion has been split into it's own check, `che ### Added - initial release -[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...HEAD +[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.0...HEAD +[5.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...5.0.0 [4.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...4.0.1 [4.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.3.0...4.0.0 [3.3.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.2.0...3.3.0 diff --git a/lib/sensu-plugins-kubernetes/version.rb b/lib/sensu-plugins-kubernetes/version.rb index c7bfd28..0bd8b26 100644 --- a/lib/sensu-plugins-kubernetes/version.rb +++ b/lib/sensu-plugins-kubernetes/version.rb @@ -2,9 +2,9 @@ module SensuPluginsKubernetes module Version - MAJOR = 4 + MAJOR = 5 MINOR = 0 - PATCH = 1 + PATCH = 0 VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.') end From be1e87b39780bcf3f0c3453b48a37e0190cff603 Mon Sep 17 00:00:00 2001 From: Todd Campbell Date: Tue, 5 May 2020 14:21:25 -0700 Subject: [PATCH 09/12] fix travis and update version Signed-off-by: Todd Campbell --- .travis.yml | 2 +- CHANGELOG.md | 7 ++++++- lib/sensu-plugins-kubernetes/version.rb | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5bcc0e4..6e76513 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ script: before_deploy: - bash -c "[ ! -d bonsai/ ] && git clone https://github.com/sensu/sensu-go-bonsai-asset.git bonsai || echo 'bonsai/ exists, skipping git clone'" deploy: -- provider: rubygems +- provider: rubygems api_key: secure: EzXA4HctGH56NvP4RS+vEntVwB5q3K7xDnvCS7KQrZIly7B5rlXhJgHzrcdS61AAHybF/C4btOIazx3lkI+TihX3zyztziHa4+vwcavhF86TDk4MmDgYqScSL9agP+LOHlQ38jLY/l8buGLgF96V1/pgNZjnw5vTugE3GXtDfPF6f6CXg/3RqADF8yjglb9HAxWYEkwmPLZynbtHFJA9/h5mggVfjHJFAZLFHsewx4FB4FjxMrt3yusIlNbj9LKHHqsQqJl8DCoxGhiQmysSLS3NoN7vVhi3UA4TdHArtSZgRmsZKhsJDGcgM/DWGFvqmnHTItlAVTKPZhSAYBxIsbpY5adGMNE/QDDDbnjqhCE5PZQ1mQq12E1dmcFGZAV7vVPvzkBGCMNLnlH6KFuqw/mUg/BU7xPPMnvsc51XEbYJtFFZ1UGeJWTe0DTrLCmIZd4r9KaydNeal35iu/s+rC9aPh9u0AsSJiKVi3CewoVAgc+A+uF8WTTjol0APwO4sra4JlNBeKMVgq2/4uEzsSDCz+Y/U4Rw8RLLXi6xGB1PM1Ar9SvIabeoNj9gY+LApYI1YAPUUVUXf44TLSwvDSrUW12DnhPgMg0CjicGlZkXOAnDNob8b8bU8YUP7wN8eOwt0J63hhn40G7XCA5WCpNm0W7qbLlV8sUBb+3F07c= gem: sensu-plugins-kubernetes diff --git a/CHANGELOG.md b/CHANGELOG.md index 09c0cb8..c3d21a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugin ## [Unreleased] +## [5.0.1] - 2020-04-27 +### Changed +- Fixed travis build + ## [5.0.0] - 2020-04-27 ### Breaking Changes - Bump `sensu-plugin` dependency from `~> 2.7` to `~> 4.0` @@ -115,7 +119,8 @@ pending pods, the restart count portion has been split into it's own check, `che ### Added - initial release -[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.0...HEAD +[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.1...HEAD +[5.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.0...5.0.1 [5.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...5.0.0 [4.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...4.0.1 [4.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/3.3.0...4.0.0 diff --git a/lib/sensu-plugins-kubernetes/version.rb b/lib/sensu-plugins-kubernetes/version.rb index 0bd8b26..9ca0a1f 100644 --- a/lib/sensu-plugins-kubernetes/version.rb +++ b/lib/sensu-plugins-kubernetes/version.rb @@ -4,7 +4,7 @@ module SensuPluginsKubernetes module Version MAJOR = 5 MINOR = 0 - PATCH = 0 + PATCH = 1 VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.') end From d96dc8266fc5726b12b181565f0c80bd696ad4ec Mon Sep 17 00:00:00 2001 From: Jef Spaleta Date: Tue, 15 Sep 2020 09:20:28 -0800 Subject: [PATCH 10/12] set frozen_string_literal false for executables --- CHANGELOG.md | 2 ++ bin/check-kube-apiserver-available.rb | 2 +- bin/check-kube-nodes-ready.rb | 2 +- bin/check-kube-pods-pending.rb | 2 +- bin/check-kube-pods-restarting.rb | 2 +- bin/check-kube-pods-running.rb | 2 +- bin/check-kube-pods-runtime.rb | 2 +- bin/check-kube-service-available.rb | 2 +- bin/handler-kube-pod.rb | 2 +- bin/metrics-pods.rb | 2 +- 10 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3d21a3..f84bfae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md) ## [Unreleased] +### Fixed +- Fixed frozen_string_literal setting in executables ## [5.0.1] - 2020-04-27 ### Changed diff --git a/bin/check-kube-apiserver-available.rb b/bin/check-kube-apiserver-available.rb index 6dba8de..420b683 100755 --- a/bin/check-kube-apiserver-available.rb +++ b/bin/check-kube-apiserver-available.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-apiserver-available.rb # diff --git a/bin/check-kube-nodes-ready.rb b/bin/check-kube-nodes-ready.rb index 80cabe3..3efac5f 100755 --- a/bin/check-kube-nodes-ready.rb +++ b/bin/check-kube-nodes-ready.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-nodes-ready.rb # diff --git a/bin/check-kube-pods-pending.rb b/bin/check-kube-pods-pending.rb index 29fe04b..2b4f9b3 100755 --- a/bin/check-kube-pods-pending.rb +++ b/bin/check-kube-pods-pending.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-pods-pending # diff --git a/bin/check-kube-pods-restarting.rb b/bin/check-kube-pods-restarting.rb index f5168b1..d07c7e6 100755 --- a/bin/check-kube-pods-restarting.rb +++ b/bin/check-kube-pods-restarting.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-pods-restarting # diff --git a/bin/check-kube-pods-running.rb b/bin/check-kube-pods-running.rb index 270d517..f80821e 100755 --- a/bin/check-kube-pods-running.rb +++ b/bin/check-kube-pods-running.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-pods-running # diff --git a/bin/check-kube-pods-runtime.rb b/bin/check-kube-pods-runtime.rb index a8a9841..ff9076d 100755 --- a/bin/check-kube-pods-runtime.rb +++ b/bin/check-kube-pods-runtime.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-pods-runtime # diff --git a/bin/check-kube-service-available.rb b/bin/check-kube-service-available.rb index a438c5f..8836dec 100755 --- a/bin/check-kube-service-available.rb +++ b/bin/check-kube-service-available.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # check-kube-pods-service-available # diff --git a/bin/handler-kube-pod.rb b/bin/handler-kube-pod.rb index 7387ec1..26be737 100755 --- a/bin/handler-kube-pod.rb +++ b/bin/handler-kube-pod.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # handler-kube-pod # diff --git a/bin/metrics-pods.rb b/bin/metrics-pods.rb index 67e5c26..c172bb9 100755 --- a/bin/metrics-pods.rb +++ b/bin/metrics-pods.rb @@ -1,5 +1,5 @@ #! /usr/bin/env ruby -# frozen_string_literal: true +# frozen_string_literal: false # pod-metrics # From a82804509e76a1e1dd20658e98def777707d8165 Mon Sep 17 00:00:00 2001 From: Jef Spaleta Date: Tue, 15 Sep 2020 13:45:37 -0800 Subject: [PATCH 11/12] preparing for 5.0.2 release --- CHANGELOG.md | 5 ++++- lib/sensu-plugins-kubernetes/version.rb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f84bfae..757c6ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). This CHANGELOG follows the format listed [here ](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md) ## [Unreleased] + +## [5.0.2] - 2020-09-15 ### Fixed - Fixed frozen_string_literal setting in executables @@ -121,7 +123,8 @@ pending pods, the restart count portion has been split into it's own check, `che ### Added - initial release -[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.1...HEAD +[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.2...HEAD +[5.0.2]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.1...5.0.2 [5.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/5.0.0...5.0.1 [5.0.0]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.1...5.0.0 [4.0.1]: https://github.com/sensu-plugins/sensu-plugins-kubernetes/compare/4.0.0...4.0.1 diff --git a/lib/sensu-plugins-kubernetes/version.rb b/lib/sensu-plugins-kubernetes/version.rb index 9ca0a1f..3f349d2 100644 --- a/lib/sensu-plugins-kubernetes/version.rb +++ b/lib/sensu-plugins-kubernetes/version.rb @@ -4,7 +4,7 @@ module SensuPluginsKubernetes module Version MAJOR = 5 MINOR = 0 - PATCH = 1 + PATCH = 2 VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.') end From 05869185ab1d15cd36d62bb4f7ed6d55eaf218b3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 2 Apr 2021 05:18:36 +0000 Subject: [PATCH 12/12] Update github-markup requirement from ~> 3.0 to ~> 4.0 Updates the requirements on [github-markup](https://github.com/github/markup) to permit the latest version. - [Release notes](https://github.com/github/markup/releases) - [Changelog](https://github.com/github/markup/blob/master/HISTORY.md) - [Commits](https://github.com/github/markup/compare/v3.0.0...v4.0.0) Signed-off-by: dependabot-preview[bot] --- sensu-plugins-kubernetes.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sensu-plugins-kubernetes.gemspec b/sensu-plugins-kubernetes.gemspec index 124148e..3919907 100644 --- a/sensu-plugins-kubernetes.gemspec +++ b/sensu-plugins-kubernetes.gemspec @@ -35,7 +35,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'kubeclient', '>= 2.3', '< 5.0' s.add_development_dependency 'bundler', '~> 2.1' - s.add_development_dependency 'github-markup', '~> 3.0' + s.add_development_dependency 'github-markup', '~> 4.0' s.add_development_dependency 'pry', '~> 0.10' s.add_development_dependency 'rake', '~> 13.0' s.add_development_dependency 'redcarpet', '~> 3.2'