sensu-plugins-chef-automate 0.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 +7 -0
- data/README.md +1 -0
- data/bin/check-automate-runners.rb +52 -0
- data/lib/sensu-plugins-chef-automate/helpers.rb +60 -0
- data/lib/sensu-plugins-chef-automate/version.rb +3 -0
- metadata +119 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 789b04f3c27965f2998ed6a0f50ff186752b452e
|
4
|
+
data.tar.gz: 6314bb1a7ca6a3d140e2587e09b5ecec4d1b66a6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: '08fbbf51f02d7b8c160323b9d066ff9e76c7490c5af02f98dcfb8f554da0fd507ac9ab0e27003fec4c754e4acd9be1fbd44b5581030d7a387a1ebae35a3adc4d'
|
7
|
+
data.tar.gz: e989ace353e1ef8db15934f4b3c876f9bfa2c4771392373b9feb61f6b29a897bde8339d3f77d9d2f53ddf72bfe1014086eb8360a30c1390cab6218c6f2c4027a
|
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Development repo for various sensu checks for chef automate
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'sensu-plugin/check/cli'
|
3
|
+
require 'sensu-plugins-chef-automate/helpers'
|
4
|
+
|
5
|
+
class CheckAutomateRunners < Sensu::Plugin::Check::CLI
|
6
|
+
|
7
|
+
option :count,
|
8
|
+
:long => '--count COUNT',
|
9
|
+
:short => '-c COUNT',
|
10
|
+
:description => 'Number of runners that should be available',
|
11
|
+
:proc => Proc.new { |l| l.to_i },
|
12
|
+
:required => true
|
13
|
+
|
14
|
+
option :fqdn,
|
15
|
+
:long => '--fqdn FQDN',
|
16
|
+
:short => '-f FQDN',
|
17
|
+
:description => 'FQDN of your automate server',
|
18
|
+
:required => true
|
19
|
+
|
20
|
+
option :enterprise,
|
21
|
+
:long => '--enterprise ENTERPRISE',
|
22
|
+
:short => '-e ENTERPRISE',
|
23
|
+
:description => 'The name of your automate enterprise',
|
24
|
+
:required => true
|
25
|
+
|
26
|
+
option :verbose,
|
27
|
+
:long => '--verbose',
|
28
|
+
:short => '-v',
|
29
|
+
:description => 'Enable additional output',
|
30
|
+
:boolean => true
|
31
|
+
|
32
|
+
option :help,
|
33
|
+
:short => "-h",
|
34
|
+
:long => "--help",
|
35
|
+
:description => "Show this message",
|
36
|
+
:on => :tail,
|
37
|
+
:boolean => true,
|
38
|
+
:show_options => true,
|
39
|
+
:exit => 0
|
40
|
+
|
41
|
+
def run
|
42
|
+
api = AutomateApi.new(config[:fqdn], config[:enterprise], config[:verbose])
|
43
|
+
response = api.request('get', 'runners', {})
|
44
|
+
# We could probably just use response.length here as the response is a
|
45
|
+
# list of hashes containing runner information, but I do a quick check to
|
46
|
+
# make sure there's a hostname attribute on each result to make sure we
|
47
|
+
# actually got runners back.
|
48
|
+
count = response.select{|r| r["hostname"]}.length
|
49
|
+
message "#{count} runners"
|
50
|
+
count >= config[:count] ? ok : critical
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Library for performing automate API calls
|
2
|
+
# Usage:
|
3
|
+
# Create a json file ~/.automate_sensu_credentials
|
4
|
+
require 'rest-client'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class AutomateApi
|
8
|
+
def initialize(fqdn, enterprise, verbose)
|
9
|
+
@automate_fqdn = fqdn
|
10
|
+
@automate_enterprise = enterprise
|
11
|
+
@base_url = "https://#{@automate_fqdn}/api/v0/e/#{@automate_enterprise}"
|
12
|
+
@creds = load_creds
|
13
|
+
@verbose = verbose
|
14
|
+
RestClient.log = 'stdout' if verbose
|
15
|
+
@token = get_token
|
16
|
+
end
|
17
|
+
|
18
|
+
def load_creds
|
19
|
+
creds_file = "#{ENV['HOME']}/.automate_sensu_credentials"
|
20
|
+
JSON.parse(File.read(creds_file))
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_new_token
|
24
|
+
response = RestClient.post \
|
25
|
+
"#{@base_url}/get-token", \
|
26
|
+
{username: @creds['username'], password: @creds['password']}.to_json,
|
27
|
+
{content_type: :json, accept: :json}
|
28
|
+
data = JSON.parse(response)
|
29
|
+
data['expiry'] = (Time.now + data['ttl']).iso8601
|
30
|
+
data
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_token
|
34
|
+
token_file = "#{ENV['HOME']}/.automate_sensu_token"
|
35
|
+
grace_period = 3600
|
36
|
+
data = JSON.parse(File.read(token_file)) rescue Hash.new
|
37
|
+
expiry = Time.iso8601(data['expiry']) rescue Time.now
|
38
|
+
if expiry < Time.now + grace_period
|
39
|
+
puts "Token expired, getting a new one" if @verbose
|
40
|
+
data = get_new_token
|
41
|
+
File.write(token_file, data.to_json)
|
42
|
+
end
|
43
|
+
data['token']
|
44
|
+
end
|
45
|
+
|
46
|
+
def request(method, endpoint, data)
|
47
|
+
JSON.parse(RestClient::Request.execute(
|
48
|
+
method: method,
|
49
|
+
url: "#{@base_url}/#{endpoint}",
|
50
|
+
payload: data.to_json,
|
51
|
+
headers: {
|
52
|
+
content_type: :json,
|
53
|
+
accept: :json,
|
54
|
+
"chef-delivery-token": @token,
|
55
|
+
"chef-delivery-user": @creds['username'],
|
56
|
+
"chef-delivery-enterprise": @automate_enterprise
|
57
|
+
},
|
58
|
+
))
|
59
|
+
end
|
60
|
+
end
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-chef-automate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chef Operations
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sensu-plugin
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-coolline
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Checks that are specific to the Chef Automate product
|
84
|
+
email:
|
85
|
+
- ops@chef.io
|
86
|
+
executables:
|
87
|
+
- check-automate-runners.rb
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- README.md
|
92
|
+
- bin/check-automate-runners.rb
|
93
|
+
- lib/sensu-plugins-chef-automate/helpers.rb
|
94
|
+
- lib/sensu-plugins-chef-automate/version.rb
|
95
|
+
homepage: https://github.com/chef/sensu-plugins-chef-automate
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 2.1.0
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 2.6.11
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: Sensu Plugins for Chef Automate
|
119
|
+
test_files: []
|