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 +7 -0
- data/config.ru +5 -0
- data/lib/rrd_query.rb +18 -0
- data/public/.gitemptydir +0 -0
- data/server.rb +33 -0
- data/tmp/.gitemptydir +0 -0
- metadata +78 -0
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
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
|
data/public/.gitemptydir
ADDED
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: []
|