sensu-cli 0.1.1 → 0.2.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWQ3MTA4MWI1YTNjM2U3OWNlMmY0MGI5ZmQ4ZmMyYzZiMGE4ZDQ2NQ==
4
+ MTNkNGJlNWUzNzViYjgwYTYyYmVkOGQ0MzdkMzM5YjAyY2Q1ODdjMw==
5
5
  data.tar.gz: !binary |-
6
- YzA2OWJkYmUxYzUxNzBmY2MzNTA3Y2EzZDIzZjJmNWEwMmM4NzRlNg==
6
+ NzJlM2Q0MmRmOTg2YjA1ZGY2YmYxNzY2MjAwYzIwNDEwMTBiM2U4NQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZmNjODVjNGUzZmYwNDUwMDc2ZmY0ODA3NTAyMmZmMmNhMDljZjMxNmViZDRk
10
- OTFlYjBjNDU5YmU5MzA0MmEyOTc1ZWVmYmRhNDVjZGE4MTVlNDg1NTU3NDY0
11
- NTlhNzA2ODM2NzFiMmUyNzAxYTJiMjZhNzQwYjg5MGE5YTYxZjg=
9
+ MDcyNDdhYTRhOWUwZmNlOWNiZTA2Y2I4ZTU4Y2NkZWNkNTliYmFkOTk4NTlh
10
+ M2M2YzMxNWJlZGRkN2Q1MGNlMGJhNzcyZGUwNzM5MzFlZWY2NDhhYzZkNDZh
11
+ OTE2Y2M4MDg4OWZmNjJiOGM0NTkxMDQyMmM5YTcwYzlhYTdiMGM=
12
12
  data.tar.gz: !binary |-
13
- MDRlNmU5ODk0ZGIxY2Y4ZDdiZTExZGFjNmExMGY4MTg3NTU3NDU5YTM4N2Zk
14
- YzNjMTIxNGVjMGYwNDljZDE2NjNkMzBkYzg4NmEyYmIwMmI0MGJhNmFkMDE5
15
- MDE5ZTZkZGY1NmI0ODc5MDc4NTNlMzMwN2ZiODFlNDFhNjg0ODc=
13
+ MmIxZWZhYzc3MmI5MjI0OTcxMjY0ZjkzMGRjYzAxYTkwNmZmZTIyZjU2ODg0
14
+ YzE5YjlhZjMxNWY0MjUyNDc2YmZiNTQ3MWYyOWRlZWI3MjFjYWUxMWYwZjIz
15
+ ZGY0NDQ1MWJhOWRkNTMyYmJjYTFkZDU5ODNkMWJiNzg3MTJhZDY=
data/bin/sensu CHANGED
@@ -3,6 +3,6 @@ unless $:.include?(File.dirname(__FILE__) + '/../lib/')
3
3
  $: << File.dirname(__FILE__) + '/../lib'
4
4
  end
5
5
 
6
- require 'sensu-cli/base'
6
+ require 'sensu-cli'
7
7
  sensu = SensuCli::Base.new
8
8
  sensu.setup
data/bin/sensu-cli CHANGED
@@ -3,6 +3,6 @@ unless $:.include?(File.dirname(__FILE__) + '/../lib/')
3
3
  $: << File.dirname(__FILE__) + '/../lib'
4
4
  end
5
5
 
6
- require 'sensu-cli/base'
6
+ require 'sensu-cli'
7
7
  sensu = SensuCli::Base.new
8
8
  sensu.setup
@@ -0,0 +1,60 @@
1
+ require 'net/https'
2
+ require 'json'
3
+ require 'rainbow'
4
+
5
+ module SensuCli
6
+ class Api
7
+
8
+ def request(opts)
9
+ http = Net::HTTP.new(opts[:host], opts[:port])
10
+ http.read_timeout = 15
11
+ http.open_timeout = 5
12
+ if opts[:ssl]
13
+ http.use_ssl = true
14
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
15
+ end
16
+ case opts[:method]
17
+ when 'Get'
18
+ req = Net::HTTP::Get.new(opts[:path])
19
+ when 'Delete'
20
+ req = Net::HTTP::Delete.new(opts[:path])
21
+ when 'Post'
22
+ req = Net::HTTP::Post.new(opts[:path],initheader = {'Content-Type' => 'application/json'})
23
+ req.body = opts[:payload]
24
+ end
25
+ req.basic_auth(opts[:user], opts[:password]) if opts[:user] && opts[:password]
26
+ begin
27
+ http.request(req)
28
+ rescue Timeout::Error
29
+ puts "HTTP request has timed out.".color(:red)
30
+ exit
31
+ rescue StandardError => e
32
+ puts "An HTTP error occurred. Check your settings. #{e}".color(:red)
33
+ exit
34
+ end
35
+ end
36
+
37
+ def response(code,body,command=nil)
38
+ case code
39
+ when '200'
40
+ JSON.parse(body)
41
+ when '201'
42
+ puts "The stash has been created." if command == "stashes" || command == "silence"
43
+ when '202'
44
+ puts "The item was submitted for processing."
45
+ when '204'
46
+ puts "Sensu is healthy" if command == 'health'
47
+ puts "The item was successfully deleted." if command == 'aggregates' || command == 'stashes'
48
+ when '400'
49
+ puts "The payload is malformed.".color(:red)
50
+ when '401'
51
+ puts "The request requires user authentication.".color(:red)
52
+ when '404'
53
+ puts "The item did not exist.".color(:cyan)
54
+ else
55
+ (command == 'health') ? (puts "Sensu is not healthy.".color(:red)) : (puts "There was an error while trying to complete your request. Response code: #{code}".color(:red))
56
+ end
57
+ end
58
+
59
+ end
60
+ end
@@ -1,13 +1,3 @@
1
- require 'rubygems' if RUBY_VERSION < '1.9.0'
2
- require 'net/https'
3
- require 'json'
4
- require 'sensu-cli/settings'
5
- require 'sensu-cli/cli'
6
- require 'sensu-cli/editor'
7
- require 'sensu-cli/pretty'
8
- require 'sensu-cli/path.rb'
9
- require 'rainbow'
10
-
11
1
  module SensuCli
12
2
  class Base
13
3
 
@@ -15,7 +5,6 @@ module SensuCli
15
5
  clis = Cli.new
16
6
  cli = clis.global
17
7
  settings
18
- @command = cli[:command]
19
8
  api_path(cli)
20
9
  make_call
21
10
  end
@@ -36,67 +25,27 @@ module SensuCli
36
25
 
37
26
  def api_path(cli)
38
27
  p = PathCreator.new
39
- p.respond_to?(@command) ? path = p.send(@command, cli) : (puts "Something Bad Happened";exit)
28
+ p.respond_to?(cli[:command]) ? path = p.send(cli[:command], cli) : (puts "Something Bad Happened";exit)
40
29
  @api = {:path => path[:path], :method => cli[:method], :command => cli[:command], :payload => (path[:payload] || false)}
41
30
  end
42
31
 
43
- def http_request
44
- http = Net::HTTP.new(Config.host, Config.port)
45
- http.read_timeout = 15
46
- http.open_timeout = 5
47
- if Config.ssl
48
- http.use_ssl = true
49
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
50
- end
51
- case @api[:method]
52
- when 'Get'
53
- req = Net::HTTP::Get.new(@api[:path])
54
- when 'Delete'
55
- req = Net::HTTP::Delete.new(@api[:path])
56
- when 'Post'
57
- req = Net::HTTP::Post.new(@api[:path],initheader = {'Content-Type' => 'application/json'})
58
- req.body = @api[:payload]
59
- end
60
- req.basic_auth(Config.user, Config.password) if Config.user && Config.password
61
- begin
62
- http.request(req)
63
- rescue Timeout::Error
64
- puts "HTTP request has timed out.".color(:red)
65
- exit
66
- rescue StandardError => e
67
- puts "An HTTP error occurred. Check your settings. #{e}".color(:red)
68
- exit
69
- end
70
- end
71
-
72
32
  def make_call
73
- res = http_request
74
- msg = response_codes(res.code,res.body)
33
+ opts = {
34
+ :path => @api[:path],
35
+ :method => @api[:method],
36
+ :payload => @api[:payload],
37
+ :host => Config.host,
38
+ :port => Config.port,
39
+ :ssl => Config.ssl || false,
40
+ :user => Config.user || nil,
41
+ :password => Config.password || nil
42
+ }
43
+ api = Api.new
44
+ res = api.request(opts)
45
+ msg = api.response(res.code, res.body, @api[:command])
75
46
  res.code != '200' ? exit : Pretty.print(msg)
76
47
  Pretty.count(msg)
77
48
  end
78
49
 
79
- def response_codes(code,body)
80
- case code
81
- when '200'
82
- JSON.parse(body)
83
- when '201'
84
- puts "The stash has been created." if @command == "stashes" || @command == "silence"
85
- when '202'
86
- puts "The item was submitted for processing."
87
- when '204'
88
- puts "Sensu is healthy" if @command == 'health'
89
- puts "The item was successfully deleted." if @command == 'aggregates' || @command == 'stashes'
90
- when '400'
91
- puts "The payload is malformed.".color(:red)
92
- when '401'
93
- puts "The request requires user authentication.".color(:red)
94
- when '404'
95
- puts "The item did not exist.".color(:cyan)
96
- else
97
- (@command == 'health') ? (puts "Sensu is not healthy.".color(:red)) : (puts "There was an error while trying to complete your request. Response code: #{code}".color(:red))
98
- end
99
- end
100
-
101
50
  end
102
51
  end
data/lib/sensu-cli/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'trollop'
2
2
  require 'sensu-cli/version'
3
+ require 'rainbow'
3
4
 
4
5
  module SensuCli
5
6
  class Cli
@@ -5,12 +5,11 @@ module SensuCli
5
5
  class Editor
6
6
 
7
7
  def create_stash(create_path)
8
- @create_path = create_path
9
- file = create_file
10
- open(file)
8
+ file = temp_file({:path => create_path, :content => {:timestamp => Time.now.to_i }})
9
+ edit(file)
11
10
  end
12
11
 
13
- def open(file)
12
+ def edit(file)
14
13
  ENV['EDITOR'] ? editor = ENV['EDITOR'] : editor = 'vi'
15
14
  system("#{editor} #{file}")
16
15
  begin
@@ -21,8 +20,7 @@ module SensuCli
21
20
  end
22
21
  end
23
22
 
24
- def create_file
25
- template = {:path => @create_path, :content => {:timestamp => Time.now.to_i }}
23
+ def temp_file(template)
26
24
  file = Tempfile.new('sensu')
27
25
  file.write(JSON.pretty_generate(template))
28
26
  file.close
@@ -87,6 +87,10 @@ module SensuCli
87
87
  end
88
88
  end
89
89
 
90
+ def method_missing(method_name, *args)
91
+ puts "Path method: #{method_name} does not exist. "
92
+ end
93
+
90
94
  def respond(path,payload=false)
91
95
  {:path => path, :payload => payload}
92
96
  end
@@ -1,3 +1,5 @@
1
+ require 'rainbow'
2
+
1
3
  module SensuCli
2
4
  class Pretty
3
5
 
@@ -1,5 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'mixlib/config'
3
+ require 'rainbow'
3
4
 
4
5
  module SensuCli
5
6
  class Settings
@@ -1,3 +1,3 @@
1
1
  module SensuCli
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/sensu-cli.rb CHANGED
@@ -1,2 +1,11 @@
1
+ require 'sensu-cli/settings'
2
+ require 'sensu-cli/cli'
3
+ require 'sensu-cli/editor'
4
+ require 'sensu-cli/pretty'
5
+ require 'sensu-cli/path.rb'
6
+ require 'sensu-cli/api.rb'
7
+ require 'sensu-cli/base.rb'
8
+ require 'sensu-cli/version.rb'
9
+
1
10
  module SensuCli
2
11
  end
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.1.1
4
+ version: 0.2.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: 2013-05-22 00:00:00.000000000 Z
11
+ date: 2013-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rainbow
@@ -62,6 +62,7 @@ extra_rdoc_files: []
62
62
  files:
63
63
  - bin/sensu
64
64
  - bin/sensu-cli
65
+ - lib/sensu-cli/api.rb
65
66
  - lib/sensu-cli/base.rb
66
67
  - lib/sensu-cli/cli.rb
67
68
  - lib/sensu-cli/editor.rb