slurry 0.0.7 → 0.0.8

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.
data/bin/slurry CHANGED
@@ -17,7 +17,7 @@ OptionParser.new do |opts|
17
17
  options[:configfile] = conf
18
18
  end
19
19
 
20
- opts.on("-t", "--type [clean|report]", "The type of run to perform") do |t|
20
+ opts.on("-t", "--type [clean|report|runonce|post]", "The type of run to perform") do |t|
21
21
  options[:type] = t
22
22
  end
23
23
 
@@ -52,6 +52,13 @@ def run(options)
52
52
  config = loadconf(configfile)
53
53
  report = JSON.parse(Slurry.runonce(config[:server],config[:port]))
54
54
  puts report.to_json
55
+ when "post"
56
+ config = loadconf(configfile)
57
+ if config[:post]
58
+ Slurry.post(config[:post])
59
+ else
60
+ raise("you need a :post secton in your config file before you use this runtype")
61
+ end
55
62
  else # Load json data from stdin
56
63
  Slurry.funnel
57
64
  end
@@ -1,3 +1,5 @@
1
1
  ---
2
2
  :server: 'graphite.example.net'
3
3
  :port: '2003'
4
+ :post:
5
+ :url: 'http://rockfunnel.example.net:58765/post-json'
@@ -0,0 +1,31 @@
1
+ module Slurry
2
+ # Handles connection details to the graphite server.
3
+ class Graphite
4
+
5
+ # Opens a socket with the specified graphite server.
6
+ #
7
+ # @param [String] server
8
+ # @param [String] port
9
+ def initialize(server,port)
10
+ @server, @port = server, port
11
+ @s = TCPSocket.open(server,port)
12
+ end
13
+
14
+ # Puts the graphite formatted string into the open socket.
15
+ #
16
+ # @param [String] target the graphite formatted target in dotted notion
17
+ # @param [String] value the value of the target
18
+ # @param [String] time the time that the sample was taken
19
+ def send (target,value,time)
20
+ line = [target,value,time].join(" ")
21
+ @s.puts(line)
22
+ end
23
+
24
+ # Close the open socket to the graphite server.
25
+ def close
26
+ @s.close
27
+ end
28
+
29
+ end
30
+ end
31
+
data/lib/slurry.rb CHANGED
@@ -1,41 +1,16 @@
1
+ require 'slurry/graphite'
2
+
1
3
  require 'json'
2
4
  require "redis"
3
5
  require 'json2graphite'
6
+ require 'net/http'
7
+ require 'rest_client'
4
8
 
5
9
  # @author Zach Leslie <zach@puppetlabs.com>
6
10
  #
7
11
  module Slurry
8
12
  module_function
9
13
 
10
- # Handles connection details to the graphite server.
11
- class Graphite
12
-
13
- # Opens a socket with the specified graphite server.
14
- #
15
- # @param [String] server
16
- # @param [String] port
17
- def initialize(server,port)
18
- @server, @port = server, port
19
- @s = TCPSocket.open(server,port)
20
- end
21
-
22
- # Puts the graphite formatted string into the open socket.
23
- #
24
- # @param [String] target the graphite formatted target in dotted notion
25
- # @param [String] value the value of the target
26
- # @param [String] time the time that the sample was taken
27
- def send (target,value,time)
28
- line = [target,value,time].join(" ")
29
- @s.puts(line)
30
- end
31
-
32
- # Close the open socket to the graphite server.
33
- def close
34
- @s.close
35
- end
36
-
37
- end
38
-
39
14
 
40
15
  # Wraps received hash in new hash with timestamp applied.
41
16
  #
@@ -65,6 +40,21 @@ module Slurry
65
40
  pipe(timestamp(jsondata))
66
41
  end
67
42
 
43
+ # Post the json received on STDIN to a webserver
44
+ def post(postconfig)
45
+ body = ''
46
+ body += STDIN.read
47
+ jsondata = JSON.parse(body)
48
+ begin
49
+ raise "jsondata is not of class Hash. Is #{jsondata.class}" unless jsondata.is_a? Hash
50
+ RestClient.post(postconfig[:url], jsondata.to_json, :content_type => :json, :accept => :json )
51
+ rescue => e
52
+ puts "something broke:"
53
+ puts e.message
54
+ puts e.backtrace.inspect
55
+ end
56
+ end
57
+
68
58
  # Receives a hash formatted like so
69
59
  # {:time=>1345411779,
70
60
  # :collectd=>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slurry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-11 00:00:00.000000000 Z
12
+ date: 2012-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -69,6 +69,7 @@ files:
69
69
  - Rakefile
70
70
  - bin/liaise
71
71
  - bin/slurry
72
+ - lib/slurry/graphite.rb
72
73
  - lib/slurry.rb
73
74
  - etc/slurry.yaml.sample
74
75
  - README.md