rrd_rest_api 1.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 929c34e0161b4b7e2f80444e6eeb8ef0c5827f43
4
+ data.tar.gz: adef1a36e9481ee427fcad1371203dad67472cae
5
+ SHA512:
6
+ metadata.gz: 193a00a29b93069a30ca07f930d9273658fe75c650c591b50195a93e26b8e748740f2a72985526bdb290241c1c4de51d5709fad19a2ffd5e48c2fc057f2fea5d
7
+ data.tar.gz: aa2009b5611a2edefbe074db085878ef8fc07ed9e422cea1e6a536b185b9e48dcd936d6f544fba55a89f55d94aaf4f00dccc3a8bdbf03b4d2add3476aa0246cb
data/config.ru ADDED
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'sinatra'
3
+ require File.expand_path '../server.rb', __FILE__
4
+
5
+ run Sinatra::Application
data/lib/rrd_query.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'rrd'
2
+
3
+ class RRDQuery
4
+ attr_reader :filename
5
+
6
+ def initialize(filename)
7
+ @filename = filename
8
+ end
9
+
10
+ def latest_value(datasource)
11
+ _rrd.info["ds[#{datasource}].last_ds"].to_f
12
+ end
13
+
14
+ def _rrd
15
+ raise("Unable to open RRD, because it doesn't exist: #{@filename}") unless File.exist?(@filename)
16
+ @rrd ||= RRD::Base.new(@filename)
17
+ end
18
+ end
File without changes
data/server.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'sinatra'
2
+ require 'yaml'
3
+ require File.expand_path(File.dirname(__FILE__) + "/lib/rrd_query")
4
+
5
+ configure :production do
6
+ set :port, 5678
7
+ end
8
+
9
+ get '/ping' do
10
+ 'pong'
11
+ end
12
+
13
+ get '/data/:file/latest/sum' do |file|
14
+ unless _allowed_rrds.has_key?(file)
15
+ return 404
16
+ end
17
+
18
+ filename = _allowed_rrds[file]
19
+ rrd_query = RRDQuery.new(filename)
20
+ rrd_query.latest_value("sum").to_s
21
+ end
22
+
23
+ def _allowed_rrds
24
+ config_file = [
25
+ ENV["RACK_ENV"],
26
+ "/etc/rrd_rest_api/allowed_rrds.yml",
27
+ File.expand_path(File.dirname(__FILE__)) + "/allowed_rrds.yml",
28
+ File.expand_path(File.dirname(__FILE__)) + "/allowed_rrds.yml.example"
29
+ ].compact.select {|filename| File.exist?(filename)}.first
30
+
31
+
32
+ @allowed_rrds ||= YAML.load_file(config_file)
33
+ end
data/tmp/.gitemptydir ADDED
File without changes
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rrd_rest_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - TempoIQ Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sinatra
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.4.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: rrd-ffi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.14
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.14
41
+ description: This is a server which exposes data from local RRD files via a RESTful
42
+ API.
43
+ email:
44
+ - service@tempoiq.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - config.ru
50
+ - lib/rrd_query.rb
51
+ - public/.gitemptydir
52
+ - server.rb
53
+ - tmp/.gitemptydir
54
+ homepage: http://tempoiq.com
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 2.2.2
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: REST API around RRD files
78
+ test_files: []