chaoite 0.1.3 → 0.1.4

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0cd8ef676b4d9d28a60f1de4a1938264e6a7ff9e
4
- data.tar.gz: 298ee5e7a470a2713a2a44b5ea023e1e2af70bdb
3
+ metadata.gz: a15e8ef705f847eafbb8235563d300ac1aa30ed6
4
+ data.tar.gz: 132be2ef8d17512a3906292128c7bf624b250d55
5
5
  SHA512:
6
- metadata.gz: c089fd6766f0c9cbfeeccb5f4e3175d416141152babdf4901d8c8c985b78739e34ca8684969f4198c7472fd3119ef8fbe7f72bf604a40bfdea97e71b8a4a79ad
7
- data.tar.gz: a2dbfe6317075eca68f00216f5065d65a2fc66be68e0c226fabc82981d40b8c3f4163352d144cf0f5b7855460f7d690d1ec639b2590caa1c334001c089b1998c
6
+ metadata.gz: 0da156b1772df06f0fbc4a067f030d02b23897b452f5ba654a498661b58ef9b0d3ed35d53fada3611bdd71e14dcf985fbf21228d60c12e0cdefb4466657f09fd
7
+ data.tar.gz: 4d4cb4a918feeec21f44fd3611f7990bea28599375645e89f6de0232209b102c6b5b79815ac1a9a2ca9220532a9c16cb606679c27f20f2bb99fe7c5e8e15ecc1
data/chaoite.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_runtime_dependency "jsonpath", "~> 0.5"
31
31
  spec.add_runtime_dependency "graphite-api", "~> 0.1"
32
32
 
33
+ spec.add_development_dependency "byebug", "~> 3.5"
33
34
  spec.add_development_dependency "bundler", "~> 1.10"
34
35
  spec.add_development_dependency "rake", "~> 10.0"
35
36
  spec.add_development_dependency "rspec", "~> 3.3"
data/lib/chaoite.rb CHANGED
@@ -33,8 +33,12 @@ module Chaoite
33
33
  client.every 10.seconds do |c|
34
34
  configs.each do |config|
35
35
  metric = Handler.send("#{config["type"]}_#{config["value"]}", config)
36
- puts "Sending metric #{metric}"
37
- c.metrics(metric)
36
+ if(metric) then
37
+ puts "Sending metric #{metric}"
38
+ c.metrics(metric)
39
+ else
40
+ puts "Empty metric for '#{config["name"]}', not sending."
41
+ end
38
42
  end
39
43
  end
40
44
 
@@ -2,61 +2,67 @@ require 'net/http'
2
2
  require 'jsonpath'
3
3
 
4
4
  module Handler
5
- def self.http_state config
6
- key = config["key"]
7
- value = begin
8
- res = Net::HTTP.get_response(URI(config["check"]))
9
- res.code == '200' ? 1 : 0
10
- rescue
11
- 0
5
+ class << self
6
+ def http_state config
7
+ key = config["key"]
8
+ value = begin
9
+ res = Net::HTTP.get_response(URI(config["check"]))
10
+ res.code == '200' ? 1 : 0
11
+ rescue
12
+ 0
13
+ end
14
+ return key => value
12
15
  end
13
- return key => value
14
- end
15
16
 
16
- def self.http_metric config
17
- key = config["key"]
18
- value = begin
19
- res = Net::HTTP.get_response(URI(config["check"]))
20
- parse(res.body, config)
21
- rescue
22
- nil
17
+ def http_metric config
18
+ begin
19
+ res = Net::HTTP.get_response(URI(config["check"]))
20
+ parse(res.body, config)
21
+ rescue Exception => e
22
+ puts e
23
+ nil
24
+ end
23
25
  end
24
- return key => value
25
- end
26
26
 
27
- def self.shell_state config
28
- key = config["key"]
29
- command = config["check"]
30
- value = system(command) ? 1 : 0
31
- return key => value
32
- end
27
+ def shell_state config
28
+ key = config["key"]
29
+ command = config["check"]
30
+ value = system(command) ? 1 : 0
31
+ return key => value
32
+ end
33
+
34
+ def shell_metric config
35
+ key = config["key"]
36
+ command = config["check"]
33
37
 
34
- def self.shell_metric config
35
- key = config["key"]
36
- command = config["check"]
38
+ value = begin
39
+ parse(`#{command}`, config)
37
40
 
38
- value = begin
39
- parse(`#{command}`, config)
41
+ rescue
42
+ nil
43
+ end
40
44
 
41
- rescue
42
- nil
45
+ return key => value
43
46
  end
44
47
 
45
- return key => value
46
- end
48
+ private
49
+ def parse(data, config)
50
+ parser = config["parser"] || "text"
51
+ self.send("parse_#{parser}", data, config)
52
+ end
47
53
 
48
- private
49
- def self.parse(data, config)
50
- parser = config["parser"] || "text"
51
- self.send("parse_#{parser}", data, config)
52
- end
54
+ def parse_text(data, config)
55
+ key = config["key"]
56
+ return key => data
57
+ end
53
58
 
54
- def self.parse_text(data, config)
55
- return data
56
- end
59
+ def parse_json(data, config)
60
+ raise "json parser: Invalid json recieved from target service" if (!valid_json?(data))
61
+ key = resolve_json_path(data, config["key"])
62
+ value = resolve_json_path(data, config["jsonvalue"])
63
+ raise "json parser: key count should equal value count" if (key.length != value.length)
64
+ key.zip(value).to_h
65
+ end
57
66
 
58
- def self.parse_json(data, config)
59
- raise "jsonpath needs to be specified if using json parser" if(!config["jsonpath"])
60
- return JsonPath.on(data, config["jsonpath"])[0]
61
67
  end
62
68
  end
@@ -0,0 +1,31 @@
1
+ module JsonHelper
2
+ def resolve_json_path(json, template)
3
+ if template.start_with?("$") then
4
+ JsonPath.on(json, template)
5
+ else
6
+ paths = template.scan(/(\{(.*?)\})/).uniq
7
+ return template if paths.empty?
8
+ combinations = paths.map { |path| {path[0] => JsonPath.on(json, path[1])} }.reduce(&:merge)
9
+
10
+ combinations = combinations.values[0].product(*combinations.values[1..-1]).map{ |x| combinations.keys.zip(x).to_h }
11
+
12
+ combinations.map do |c|
13
+ t = template+''
14
+ c.keys.each do |key|
15
+ t.gsub!(key, c[key])
16
+ end
17
+ t
18
+ end
19
+ end
20
+ end
21
+
22
+ def valid_json?(json)
23
+ begin
24
+ JSON.parse(json)
25
+ return true
26
+ rescue Exception => e
27
+ return false
28
+ end
29
+ end
30
+
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Chaoite
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chaoite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aswin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2015-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.5'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - config.json.example
123
137
  - lib/chaoite.rb
124
138
  - lib/chaoite/handler.rb
139
+ - lib/chaoite/json_helper.rb
125
140
  - lib/chaoite/version.rb
126
141
  homepage: https://github.com/aswinkarthik93/chaoite
127
142
  licenses: