sensu-cli 0.7.1 → 0.8.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 +4 -4
- data/README.md +90 -38
- data/lib/sensu-cli/api.rb +2 -0
- data/lib/sensu-cli/base.rb +5 -1
- data/lib/sensu-cli/cli.rb +62 -14
- data/lib/sensu-cli/path.rb +21 -1
- data/lib/sensu-cli/templates/event.erb +6 -0
- data/lib/sensu-cli/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 546537d8a2709dc4b64d0bd982ffe216a09d91cf
|
4
|
+
data.tar.gz: 178295249672c82615cf7ad97d410d93bb5fd128
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8b38cb52fef977e61637ebdc7061bcd46d071c434090d74caeb2b0b64bed0471ea31cd657363973316bbe80bb74ad1dab6da903009428ca817936a16794a7db
|
7
|
+
data.tar.gz: bcdd5b0965bae88c8220f83315da775c36085966774f576d87a83bf33a31fd3637e6762f3d02fed13e40d7f27f1b483e7e5a8afe17702dd20bb466794a135940
|
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
sensu-cli
|
2
|
-
=========
|
1
|
+
# sensu-cli
|
3
2
|
```
|
4
3
|
#
|
5
4
|
# Welcome to the sensu-cli.
|
@@ -17,8 +16,8 @@ A sensu-cli for interacting with the sensu api.
|
|
17
16
|
|
18
17
|
What is Sensu? http://sensuapp.org/
|
19
18
|
|
20
|
-
Features
|
21
|
-
|
19
|
+
## Features
|
20
|
+
|
22
21
|
* API interaction with info, health, stashes, events, clients, aggregates and checks
|
23
22
|
* Resolve Events
|
24
23
|
* Silence clients and checks
|
@@ -26,12 +25,14 @@ Features
|
|
26
25
|
* Delete Requests (delete clients, stashes, aggregates and events)
|
27
26
|
|
28
27
|
|
29
|
-
Usage and Configuration
|
30
|
-
-----------------------
|
31
|
-
* gem install sensu-cli
|
32
|
-
|
33
|
-
* There is one settings file for host, port, ssl, and HTTP timeout that lives in your user directory ~/.sensu/settings.rb. You can alternatively place this in /etc/sensu/sensu-cli/settings.rb.
|
28
|
+
## Usage and Configuration
|
34
29
|
|
30
|
+
* Installation: `gem install sensu-cli`
|
31
|
+
* Installation using the embedded Sensu ruby: `/opt/sensu/embedded/bin/gem install sensu-cli && ln -s /opt/sensu/embedded/bin/sensu-cli /usr/local/bin/`
|
32
|
+
* There is one settings file for host, port, ssl, and HTTP timeout that lives
|
33
|
+
in your user directory `~/.sensu/settings.rb`. You can alternatively place
|
34
|
+
this in `/etc/sensu/sensu-cli/settings.rb`.
|
35
|
+
* An example config file:
|
35
36
|
````
|
36
37
|
host "127.0.0.1"
|
37
38
|
port "4567"
|
@@ -40,23 +41,26 @@ api_endpoint "/api"
|
|
40
41
|
read_timeout 20
|
41
42
|
open_timeout 20
|
42
43
|
````
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
`
|
50
|
-
`
|
51
|
-
`
|
52
|
-
`
|
53
|
-
`
|
54
|
-
`
|
55
|
-
`
|
56
|
-
`
|
57
|
-
|
58
|
-
|
59
|
-
|
44
|
+
|
45
|
+
This format was chosen so you can do some ENV magic via your profile and
|
46
|
+
setting up an alias. For details see the
|
47
|
+
[wiki](https://github.com/agent462/sensu-cli/wiki)
|
48
|
+
|
49
|
+
All Configuration Settings:
|
50
|
+
* `host` String - Required - Host of the Sensu API
|
51
|
+
* `port` String/Integer - Required - Port of the Sensu API
|
52
|
+
* `ssl` Boolean - Optional - Defaults False
|
53
|
+
* `api_endpoint` String - Optional - Default ''
|
54
|
+
* `read_timeout` Integer - Optional - Default 15 (seconds)
|
55
|
+
* `open_timeout` Integer - Optional - Default 5 (seconds)
|
56
|
+
* `pretty_colors` Boolean - Optional - Default True
|
57
|
+
* `proxy_address` String - Optional
|
58
|
+
* `proxy_port` Integer - Optional
|
59
|
+
* `user` String - Optional - User for the Sensu API
|
60
|
+
* `password` String - Optional - Password for the Sensu API
|
61
|
+
|
62
|
+
## Examples
|
63
|
+
|
60
64
|
````
|
61
65
|
Available subcommands: (for details, sensu SUB-COMMAND --help)
|
62
66
|
|
@@ -107,8 +111,7 @@ sensu-cli socket raw INPUT
|
|
107
111
|
--help, -h: Show this message
|
108
112
|
````
|
109
113
|
|
110
|
-
Filters
|
111
|
-
-------
|
114
|
+
### Filters
|
112
115
|
|
113
116
|
Filters are strings in 'key,value' format.
|
114
117
|
|
@@ -122,24 +125,73 @@ sensu-cli event list -i name,foo
|
|
122
125
|
sensu-cli event list -i output,foo
|
123
126
|
````
|
124
127
|
|
125
|
-
Socket
|
126
|
-
|
127
|
-
This command can only be used on a host that is running sensu-client.
|
128
|
+
### Socket
|
129
|
+
|
130
|
+
This command can only be used on a host that is running sensu-client.
|
131
|
+
The sensu-client exposes a socket for arbritary check results. For more
|
132
|
+
information you can see the [sensu client documentation](https://sensuapp.org/docs/0.25/reference/clients.html#client-socket-input).
|
133
|
+
|
134
|
+
Examples:
|
128
135
|
````
|
129
136
|
# send a check result to the sensu server
|
130
|
-
sensu-cli socket create
|
137
|
+
sensu-cli socket create --name "check33" --output "Warn: Something broke really bad" --status 1
|
131
138
|
|
132
139
|
# send raw json check result to the sensu server
|
133
|
-
sensu-cli socket raw '{"name": "
|
140
|
+
sensu-cli socket raw '{"name": "check34", "output": "Crit: Something broke even worse than on check33", "status": 2}'
|
141
|
+
|
142
|
+
# send raw json check result to the sensu server, faking the source
|
143
|
+
sensu-cli socket raw '{"name": "snmp", "output": "Crit: SNMP is bad on this switch", "status": 2, "source": "switch01"}'
|
134
144
|
````
|
135
145
|
|
136
|
-
|
137
|
-
|
138
|
-
|
146
|
+
### Advanced Examples
|
147
|
+
|
148
|
+
These advanced examples show off the power of being able to use the
|
149
|
+
sensu-cli tool in combination with other command line tools. Some use
|
150
|
+
the [jq](https://stedolan.github.io/jq/) command to do JSON parsing.
|
151
|
+
|
152
|
+
#### Have a host silence itself
|
153
|
+
|
154
|
+
```bash
|
155
|
+
sensu-cli silence `hostname -f` --owner root --reason "This server was just created" --expire 3600
|
156
|
+
```
|
157
|
+
|
158
|
+
#### Silence any client that has the word "test" in the name
|
159
|
+
|
160
|
+
```bash
|
161
|
+
sensu-cli client list -f json |
|
162
|
+
jq -r .[].name |
|
163
|
+
grep "test" |
|
164
|
+
xargs --verbose --no-run-if-empty -n1 sensu-cli silence
|
165
|
+
```
|
166
|
+
|
167
|
+
#### Delete sliences older than 3 days
|
168
|
+
|
169
|
+
```bash
|
170
|
+
THRESHOLD=$(date +%s --date="3 days ago")
|
171
|
+
sensu-cli stash list --format json |
|
172
|
+
jq -r "map(select( .[\"content\"][\"timestamp\"] < $THRESHOLD )) | .[].path " |
|
173
|
+
xargs --verbose --no-run-if-empty -n1 sensu-cli stash delete
|
174
|
+
```
|
175
|
+
|
176
|
+
#### Resolve any checks that haven't checked in in a month
|
177
|
+
|
178
|
+
```bash
|
179
|
+
THRESHOLD=$(date +%s --date="1 month ago")
|
180
|
+
sensu-cli event list --format json |
|
181
|
+
jq --raw-output "map(select( .[\"check\"][\"issued\"] < $THRESHOLD )) | .[] | .client.name + \" \" + .check.name " |
|
182
|
+
xargs --verbose --no-run-if-empty -n2 sensu-cli resolve
|
183
|
+
```
|
184
|
+
|
185
|
+
|
186
|
+
### Contributions
|
187
|
+
|
188
|
+
Please provide a pull request. I'm an ops guy, not a developer, so if you're
|
189
|
+
submitting code cleanup, all I ask is that you explain the improvement so I can
|
190
|
+
learn.
|
191
|
+
|
139
192
|
|
193
|
+
## License and Author
|
140
194
|
|
141
|
-
License and Author
|
142
|
-
==================
|
143
195
|
I'm releasing this under the MIT or Apache 2.0 license. You pick.
|
144
196
|
|
145
197
|
Author:: Bryan Brandau <agent462@gmail.com>
|
data/lib/sensu-cli/api.rb
CHANGED
@@ -39,11 +39,13 @@ module SensuCli
|
|
39
39
|
JSON.parse(body)
|
40
40
|
when '201'
|
41
41
|
puts 'The stash has been created.' if command == 'stashes' || command == 'silence'
|
42
|
+
puts 'The silence has been created.' if command == 'silenced'
|
42
43
|
when '202'
|
43
44
|
puts 'The item was submitted for processing.'
|
44
45
|
when '204'
|
45
46
|
puts 'Sensu is healthy' if command == 'health'
|
46
47
|
puts 'The item was successfully deleted.' if command == 'aggregates' || command == 'stashes'
|
48
|
+
puts 'The silence has been cleared.' if command == 'silenced'
|
47
49
|
when '400'
|
48
50
|
puts 'The payload is malformed.'.color(:red)
|
49
51
|
when '401'
|
data/lib/sensu-cli/base.rb
CHANGED
@@ -31,7 +31,11 @@ module SensuCli
|
|
31
31
|
else
|
32
32
|
settings.create(directory, file)
|
33
33
|
end
|
34
|
-
|
34
|
+
if $stdout.isatty and not Config.pretty_colors == false
|
35
|
+
Rainbow.enabled = true
|
36
|
+
else
|
37
|
+
Rainbow.enabled = false
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
41
|
def api_path(cli)
|
data/lib/sensu-cli/cli.rb
CHANGED
@@ -4,17 +4,18 @@ require 'rainbow/ext/string'
|
|
4
4
|
|
5
5
|
module SensuCli
|
6
6
|
class Cli # rubocop:disable ClassLength
|
7
|
-
SUB_COMMANDS = %w
|
8
|
-
CLIENT_COMMANDS = %w
|
9
|
-
CHECK_COMMANDS = %w
|
10
|
-
EVENT_COMMANDS = %w
|
11
|
-
STASH_COMMANDS = %w
|
12
|
-
AGG_COMMANDS = %w
|
13
|
-
SIL_COMMANDS = ''
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
SUB_COMMANDS = %w[info client check event stash aggregate silence silenced resolve health socket].freeze
|
8
|
+
CLIENT_COMMANDS = %w[list show delete history].freeze
|
9
|
+
CHECK_COMMANDS = %w[list show request].freeze
|
10
|
+
EVENT_COMMANDS = %w[list show delete].freeze
|
11
|
+
STASH_COMMANDS = %w[list show delete create].freeze
|
12
|
+
AGG_COMMANDS = %w[list show delete].freeze
|
13
|
+
SIL_COMMANDS = ''.freeze
|
14
|
+
SILD_COMMANDS = %w[list create clear].freeze
|
15
|
+
RES_COMMANDS = ''.freeze
|
16
|
+
INFO_COMMANDS = ''.freeze
|
17
|
+
HEALTH_COMMANDS = ''.freeze
|
18
|
+
SOCKET_COMMANDS = %w[create raw].freeze
|
18
19
|
|
19
20
|
CLIENT_BANNER = <<-EOS.gsub(/^ {10}/, '')
|
20
21
|
** Client Commands **
|
@@ -60,6 +61,14 @@ module SensuCli
|
|
60
61
|
** Silence Commands **
|
61
62
|
sensu-cli silence NODE (OPTIONS)\n\r
|
62
63
|
EOS
|
64
|
+
SILD_BANNER = <<-EOS.gsub(/^ {10}/, '')
|
65
|
+
** Silenced Commands **
|
66
|
+
sensu-cli silenced list (OPTIONS)
|
67
|
+
sensu-cli silenced create (OPTIONS)
|
68
|
+
sensu-cli silenced clear (OPTIONS)
|
69
|
+
|
70
|
+
Supported only in Sensu 0.26+\n\r
|
71
|
+
EOS
|
63
72
|
RES_BANNER = <<-EOS.gsub(/^ {10}/, '')
|
64
73
|
** Resolve Commands **
|
65
74
|
sensu-cli resolve NODE CHECK\n\r
|
@@ -93,17 +102,16 @@ module SensuCli
|
|
93
102
|
banner HEALTH_BANNER
|
94
103
|
banner INFO_BANNER
|
95
104
|
banner SIL_BANNER
|
105
|
+
banner SILD_BANNER
|
96
106
|
banner STASH_BANNER
|
97
107
|
banner RES_BANNER
|
98
108
|
banner SOCKET_BANNER
|
99
109
|
stop_on SUB_COMMANDS
|
100
110
|
end
|
101
|
-
|
102
111
|
Trollop::with_standard_exception_handling global_opts do
|
103
112
|
global_opts.parse ARGV
|
104
113
|
raise Trollop::HelpNeeded if ARGV.empty? # show help screen
|
105
114
|
end
|
106
|
-
|
107
115
|
cmd = next_argv
|
108
116
|
self.respond_to?(cmd) ? send(cmd) : explode(global_opts)
|
109
117
|
end
|
@@ -302,12 +310,52 @@ module SensuCli
|
|
302
310
|
opt :owner, 'The owner of the stash', :short => 'o', :type => :string
|
303
311
|
opt :reason, 'The reason this check/node is being silenced', :short => 'r', :type => :string
|
304
312
|
opt :expire, 'The number of seconds the silenced event is valid', :short => 'e', :type => :integer
|
313
|
+
opt :source, 'The name of the source of the silence', :short => 's', :type => :string, :default => 'sensu-cli'
|
305
314
|
end
|
306
315
|
command = next_argv
|
307
316
|
explode(opts) if command.nil?
|
308
317
|
deep_merge({ :command => 'silence', :method => 'Post', :fields => { :client => command } }, { :fields => p })
|
309
318
|
end
|
310
319
|
|
320
|
+
def silenced
|
321
|
+
opts = parser('SILD')
|
322
|
+
command = next_argv
|
323
|
+
explode_if_empty(opts, command)
|
324
|
+
case command
|
325
|
+
when 'list'
|
326
|
+
p = Trollop::options do
|
327
|
+
opt :check, 'The check entries to return', :short => 'c', :type => :string
|
328
|
+
opt :subscription, 'The subscription entries to return', :short => 's', :type => :string
|
329
|
+
opt :limit, 'The number of aggregates to return', :short => 'l', :type => :string
|
330
|
+
opt :offset, 'The number of aggregates to offset before returning', :short => 'o', :type => :string
|
331
|
+
end
|
332
|
+
Trollop::die :offset, 'Offset depends on the limit option --limit ( -l )'.color(:red) if p[:offset] && !p[:limit]
|
333
|
+
{ :command => 'silenced', :method => 'Get', :fields => p }
|
334
|
+
when 'create'
|
335
|
+
p = Trollop::options do
|
336
|
+
opt :check, 'The check to silence', :short => 'c', :type => :string
|
337
|
+
opt :creator, 'The owner of the stash', :short => 'o', :type => :string
|
338
|
+
opt :reason, 'The reason this check/node is being silenced', :short => 'r', :type => :string, :default => 'Silenced via API - no reason given'
|
339
|
+
opt :expire, 'The number of seconds the silenced event is valid', :short => 'e', :type => :integer
|
340
|
+
opt :expire_on_resolve, 'Entry will be automatically cleared once resolved', :short => 'f', :type => :boolean
|
341
|
+
opt :source, 'The name of the source of the silence', :short => 's', :type => :string, :default => 'sensu-cli'
|
342
|
+
opt :subscription, 'The name of the subscription to silence', :short => 'n', :type => :string
|
343
|
+
end
|
344
|
+
Trollop::die :check, 'Check or Subscription is required'.color(:red) if !p[:check] && !p[:subscription]
|
345
|
+
deep_merge({ :command => 'silenced', :method => 'Post', :fields => { :create => true } }, { :fields => p })
|
346
|
+
when 'clear'
|
347
|
+
p = Trollop::options do
|
348
|
+
opt :id, 'The id of the silenced item', :short => 'i', :type => :string
|
349
|
+
opt :check, 'The check of the silenced item', :short => 'c', :type => :string
|
350
|
+
opt :subscription, 'The subscription of the silenced item', :short => 's', :type => :string
|
351
|
+
end
|
352
|
+
Trollop::die :id, 'ID, Check or Subscription is required'.color(:red) if !p[:check] && !p[:subscription] && !p[:id]
|
353
|
+
{ :command => 'silenced', :method => 'Post', :clear => true, :fields => p }
|
354
|
+
else
|
355
|
+
explode(opts)
|
356
|
+
end
|
357
|
+
end
|
358
|
+
|
311
359
|
def resolve
|
312
360
|
opts = parser('RES')
|
313
361
|
command = next_argv
|
@@ -330,7 +378,7 @@ module SensuCli
|
|
330
378
|
end
|
331
379
|
{ :command => 'socket', :method => 'create', :fields => p }
|
332
380
|
when 'raw'
|
333
|
-
|
381
|
+
Trollop::options
|
334
382
|
{ :command => 'socket', :method => 'raw', :raw => next_argv }
|
335
383
|
else
|
336
384
|
explode(opts)
|
data/lib/sensu-cli/path.rb
CHANGED
@@ -58,6 +58,7 @@ module SensuCli
|
|
58
58
|
content = { :timestamp => Time.now.to_i }
|
59
59
|
content.merge!(:owner => cli[:fields][:owner]) if cli[:fields][:owner]
|
60
60
|
content.merge!(:reason => cli[:fields][:reason]) if cli[:fields][:reason]
|
61
|
+
content.merge!(:source => cli[:fields][:source]) if cli[:fields][:source]
|
61
62
|
payload = { :content => content }
|
62
63
|
payload.merge!(:expire => cli[:fields][:expire].to_i) if cli[:fields][:expire]
|
63
64
|
silence_path = 'silence'
|
@@ -67,6 +68,25 @@ module SensuCli
|
|
67
68
|
respond('/stashes', payload)
|
68
69
|
end
|
69
70
|
|
71
|
+
def silenced(cli)
|
72
|
+
payload = {}
|
73
|
+
if !cli[:fields][:creator] && cli[:method] == 'Post'
|
74
|
+
cli[:fields][:creator] = `whoami`.strip if %w[darwin linux].any? { |word| RUBY_PLATFORM.include?(word) }
|
75
|
+
end
|
76
|
+
payload.merge!(:creator => cli[:fields][:creator]) if cli[:fields][:creator]
|
77
|
+
payload.merge!(:reason => cli[:fields][:reason]) if cli[:fields][:reason]
|
78
|
+
payload.merge!(:expire => cli[:fields][:expire].to_i) if cli[:fields][:expire]
|
79
|
+
payload.merge!(:expire_on_resolve => cli[:fields][:expire_on_resolve]) if cli[:fields][:expire_on_resolve]
|
80
|
+
payload.merge!(:check => cli[:fields][:check]) if cli[:fields][:check]
|
81
|
+
payload.merge!(:subscription => cli[:fields][:subscription]) if cli[:fields][:subscription]
|
82
|
+
silenced_path = '/silenced'
|
83
|
+
silenced_path << "/subscriptions/#{cli[:fields][:subscription]}" if cli[:fields][:subscription] && cli[:method] == 'Get'
|
84
|
+
silenced_path << "/checks/#{cli[:fields][:check]}" if cli[:fields][:check] && cli[:method] == 'Get'
|
85
|
+
silenced_path << "/clear" if cli[:clear]
|
86
|
+
silenced_path << pagination(cli)
|
87
|
+
respond(silenced_path, payload.to_json)
|
88
|
+
end
|
89
|
+
|
70
90
|
def aggregates(cli)
|
71
91
|
path = '/aggregates'
|
72
92
|
path << "/#{cli[:fields][:check]}" if cli[:fields][:check]
|
@@ -90,7 +110,7 @@ module SensuCli
|
|
90
110
|
end
|
91
111
|
|
92
112
|
def respond(path, payload = false)
|
93
|
-
{ :path =>
|
113
|
+
{ :path => ::File.join(Config.api_endpoint.to_s, path), :payload => payload }
|
94
114
|
end
|
95
115
|
end
|
96
116
|
end
|
@@ -11,7 +11,13 @@
|
|
11
11
|
<%= "interval:".color(:cyan) %> <%= check['interval'].to_s.color(:green) %>
|
12
12
|
<%= "subscribers:".color(:cyan) %> <%= check['subscribers'].to_s.color(:green) %>
|
13
13
|
<%= "issued:".color(:cyan) %> <%= check['issued'].to_s.color(:green) %>
|
14
|
+
<% if check['issued'] -%>
|
15
|
+
<%= "issued_s:".color(:cyan) %> <%= Time.at(check['issued']).to_s.color(:green) %>
|
16
|
+
<% end -%>
|
14
17
|
<%= "executed:".color(:cyan) %> <%= check['executed'].to_s.color(:green) %>
|
18
|
+
<% if check['executed'] -%>
|
19
|
+
<%= "executed_s:".color(:cyan) %> <%= Time.at(check['executed']).to_s.color(:green) %>
|
20
|
+
<% end -%>
|
15
21
|
<%= "duration:".color(:cyan) %> <%= check['duration'].to_s.color(:green) %>
|
16
22
|
<%= "output:".color(:cyan) %> <%= check['output'].rstrip.to_s.color(:green) %>
|
17
23
|
<%= "status:".color(:cyan) %> <%= check['status'].to_s.color(:green) %>
|
data/lib/sensu-cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Brandau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rainbow
|
@@ -42,14 +42,14 @@ dependencies:
|
|
42
42
|
name: mixlib-config
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.1.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -84,28 +84,28 @@ dependencies:
|
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rubocop
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: A command line utility for interacting with the Sensu api.
|
@@ -144,17 +144,17 @@ require_paths:
|
|
144
144
|
- lib
|
145
145
|
required_ruby_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- -
|
147
|
+
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- -
|
152
|
+
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
155
|
requirements: []
|
156
156
|
rubyforge_project:
|
157
|
-
rubygems_version: 2.
|
157
|
+
rubygems_version: 2.6.10
|
158
158
|
signing_key:
|
159
159
|
specification_version: 4
|
160
160
|
summary: A command line utility for Sensu.
|