ardtweeno 0.3.1 → 0.4.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 +4 -4
- data/CHANGELOG +60 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +35 -33
- data/INSTALL +12 -8
- data/README.md +17 -17
- data/Rakefile +20 -8
- data/lib/ardtweeno/api.rb +409 -9
- data/lib/ardtweeno/dispatcher.rb +177 -128
- data/lib/ardtweeno/nodemanager.rb +33 -14
- data/lib/ardtweeno/restapi.rb +77 -26
- data/lib/ardtweeno/ringbuffer.rb +115 -0
- data/lib/ardtweeno.rb +2 -2
- data/public/favicon.ico +0 -0
- data/public/main.css +80 -14
- data/public/main.js +8 -1
- data/test/api_test.rb +60 -7
- data/test/debug/run_mock +1 -1
- data/test/debug/run_packet_push +4 -4
- data/test/debug/run_post_watch +4 -4
- data/test/debug/tty0tty-1.1/pts/tty0tty +0 -0
- data/test/dispatcher_test.rb +11 -8
- data/test/node_test.rb +7 -3
- data/test/nodemanager_test.rb +9 -5
- data/test/packet_test.rb +7 -3
- data/test/parser_test.rb +1 -3
- data/test/rest_api_test.rb +8 -0
- data/test/ringbuffer_test.rb +64 -0
- data/views/home.erb +2 -1
- data/views/index.erb +14 -10
- data/views/punchcard.erb +55 -0
- data/views/status.erb +48 -135
- data/views/topology.erb +12 -0
- metadata +7 -34
- data/public/bootstrap.min.js +0 -6
- data/public/highcharts.js +0 -270
- data/public/jquery-1.8.2.min.js +0 -2
- data/public/jquery-2.0.1.min.js +0 -6
data/test/node_test.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
|
1
|
+
####################################################################################################
|
2
|
+
# @author David Kirwan https://github.com/davidkirwan/ardtweeno
|
3
|
+
# @description Ardtweeno::Node test fixtures
|
4
|
+
#
|
5
|
+
# @date 2013-08-18
|
6
|
+
####################################################################################################
|
7
|
+
|
2
8
|
require 'test/unit'
|
3
9
|
require 'rack/test'
|
4
10
|
require 'ardtweeno'
|
@@ -12,8 +18,6 @@ class NodeTest < Test::Unit::TestCase
|
|
12
18
|
|
13
19
|
include Rack::Test::Methods
|
14
20
|
|
15
|
-
attr_accessor :node
|
16
|
-
|
17
21
|
|
18
22
|
# Test suite fixtures
|
19
23
|
def setup
|
data/test/nodemanager_test.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
|
1
|
+
####################################################################################################
|
2
|
+
# @author David Kirwan https://github.com/davidkirwan/ardtweeno
|
3
|
+
# @description Ardtweeno::NodeManager test fixtures
|
4
|
+
#
|
5
|
+
# @date 2013-08-18
|
6
|
+
####################################################################################################
|
7
|
+
|
2
8
|
require 'test/unit'
|
3
9
|
require 'rack/test'
|
4
10
|
require 'ardtweeno'
|
@@ -12,8 +18,6 @@ class NodeManagerTest < Test::Unit::TestCase
|
|
12
18
|
|
13
19
|
include Rack::Test::Methods
|
14
20
|
|
15
|
-
attr_accessor :dispatch
|
16
|
-
|
17
21
|
|
18
22
|
# Test suite fixtures
|
19
23
|
def setup
|
@@ -159,7 +163,7 @@ class NodeManagerTest < Test::Unit::TestCase
|
|
159
163
|
end
|
160
164
|
|
161
165
|
assert_nothing_raised do
|
162
|
-
assert_equal(true, @nodemanager.watched?(
|
166
|
+
assert_equal(true, @nodemanager.watched?("node6"))
|
163
167
|
end
|
164
168
|
|
165
169
|
assert_nothing_raised do
|
@@ -167,7 +171,7 @@ class NodeManagerTest < Test::Unit::TestCase
|
|
167
171
|
end
|
168
172
|
|
169
173
|
assert_nothing_raised do
|
170
|
-
assert_equal(false, @nodemanager.watched?(
|
174
|
+
assert_equal(false, @nodemanager.watched?("node6"))
|
171
175
|
end
|
172
176
|
|
173
177
|
end
|
data/test/packet_test.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
|
1
|
+
###################################################################################################
|
2
|
+
# @author David Kirwan https://github.com/davidkirwan/ardtweeno
|
3
|
+
# @description Ardtweeno::Packet test fixtures
|
4
|
+
#
|
5
|
+
# @date 2013-08-18
|
6
|
+
####################################################################################################
|
7
|
+
|
2
8
|
require 'test/unit'
|
3
9
|
require 'rack/test'
|
4
10
|
require 'ardtweeno'
|
@@ -12,8 +18,6 @@ class PacketTest < Test::Unit::TestCase
|
|
12
18
|
|
13
19
|
include Rack::Test::Methods
|
14
20
|
|
15
|
-
attr_accessor :packetArray
|
16
|
-
|
17
21
|
|
18
22
|
# Test suite fixtures, setup before each test is executed
|
19
23
|
def setup
|
data/test/parser_test.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# @author David Kirwan https://github.com/davidkirwan/ardtweeno
|
3
3
|
# @description Ardtweeno serialparser subsystem test fixtures
|
4
4
|
#
|
5
|
-
# @date
|
5
|
+
# @date 2013-08-18
|
6
6
|
####################################################################################################
|
7
7
|
|
8
8
|
require 'rubygems'
|
@@ -20,8 +20,6 @@ class ParserTest < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
include Rack::Test::Methods
|
22
22
|
|
23
|
-
attr_accessor :parser, :mock, :modem, :validdata, :invaliddata, :validdata_invalidnode
|
24
|
-
|
25
23
|
|
26
24
|
# Test suite fixtures
|
27
25
|
def setup
|
data/test/rest_api_test.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
####################################################################################################
|
2
|
+
# @author David Kirwan https://github.com/davidkirwan/ardtweeno
|
3
|
+
# @description Ardtweeno::RingBuffer test fixtures
|
4
|
+
#
|
5
|
+
# @date 2013-08-17
|
6
|
+
####################################################################################################
|
7
|
+
|
8
|
+
require 'test/unit'
|
9
|
+
require 'ardtweeno'
|
10
|
+
require 'rack/test'
|
11
|
+
require 'logger'
|
12
|
+
require 'json'
|
13
|
+
|
14
|
+
|
15
|
+
ENV['RACK_ENV'] = 'test'
|
16
|
+
|
17
|
+
|
18
|
+
class RingBufferTest < Test::Unit::TestCase
|
19
|
+
|
20
|
+
include Rack::Test::Methods
|
21
|
+
|
22
|
+
|
23
|
+
# Test suite fixtures
|
24
|
+
def setup
|
25
|
+
@buffer = Array.new
|
26
|
+
@size = 50
|
27
|
+
@ringbuffer = Ardtweeno::RingBuffer.new(@size)
|
28
|
+
|
29
|
+
50.times do |i|
|
30
|
+
@buffer.push(i)
|
31
|
+
@ringbuffer.push(i)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
# tear down the test fixtures between each test
|
39
|
+
def teardown
|
40
|
+
@buffer = nil
|
41
|
+
@size = nil
|
42
|
+
@ringbuffer = nil
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
# Test to ensure the Ardtweeno::RingBuffer#to_s method functions correctly
|
48
|
+
def test_tostring
|
49
|
+
assert_equal(@buffer.to_s, @ringbuffer.to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Test to ensure the Ardtweeo::RingBuffer#to_a method functions correctly
|
53
|
+
def test_toarray
|
54
|
+
assert_equal(@buffer, @ringbuffer.to_a)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Test to ensure the Ardtweeno::RingBuffer#clear method functions correctly
|
58
|
+
def test_clear
|
59
|
+
@ringbuffer.clear
|
60
|
+
assert_equal([], @ringbuffer.to_a)
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
end
|
data/views/home.erb
CHANGED
data/views/index.erb
CHANGED
@@ -4,9 +4,7 @@
|
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
5
|
<title>Ardtweeno Application Gateway</title>
|
6
6
|
<link href="/main.css" media="screen" rel="stylesheet" type="text/css" />
|
7
|
-
<link rel="icon" href="/favicon.ico" type="image/x-icon"
|
8
|
-
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
9
|
-
|
7
|
+
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
10
8
|
<link rel="stylesheet" href="/highlightjs/styles/monokai.css" />
|
11
9
|
|
12
10
|
</head>
|
@@ -30,6 +28,7 @@
|
|
30
28
|
<ul class="mytabs" id="tabs">
|
31
29
|
<li class="current"><a href="/home">Home</a></li>
|
32
30
|
<li><a href="/status">Status</a></li>
|
31
|
+
<li><a href="/topology">Topology</a></li>
|
33
32
|
</ul>
|
34
33
|
<div class="mytabs-container" id="tabs-container">
|
35
34
|
<img src="/img/ajax_preloader.gif" width="64" height="64" class="preloader" />
|
@@ -40,15 +39,20 @@
|
|
40
39
|
<div id="footer">
|
41
40
|
<hr/>
|
42
41
|
<p id="licence">
|
43
|
-
|
42
|
+
Unless otherwise stated, all content is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/deed.en_US">Attribution-NonCommercial 3.0 Unported</a>.<br /><br /><a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/deed.en_US"><img alt="Creative Commons License" style="border-width:0" src="/img/BY-NC.png" /></a>
|
44
43
|
</p>
|
45
44
|
</div>
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
|
46
|
+
<!--<script type="text/javascript" src="/jquery/jquery-1.8.2.min.js"></script>-->
|
47
|
+
<!--<script type="text/javascript" src="/jquery/jquery-1.9.1.min.js"></script>-->
|
48
|
+
<!--<script type="text/javascript" src="/jquery/jquery-2.0.1.min.js"></script>-->
|
49
|
+
<script type="text/javascript" src="/jquery/jquery-2.0.2.min.js"></script>
|
50
|
+
<script type="text/javascript" src="/raphael/raphael-min.js"></script>
|
51
|
+
<link href="/flot/examples.css" rel="stylesheet" type="text/css">
|
52
|
+
<script language="javascript" type="text/javascript" src="/flot/jquery.flot.js"></script>
|
53
|
+
<script language="javascript" type="text/javascript" src="/flot/jquery.flot.time.js"></script>
|
50
54
|
<script type="text/javascript" src="/main.js"></script>
|
51
|
-
<script src="/highlightjs/highlight.pack.js"></script>
|
52
|
-
<script>hljs.initHighlightingOnLoad();</script>
|
55
|
+
<script type="text/javascript" src="/highlightjs/highlight.pack.js"></script>
|
56
|
+
<script type="text/javascript">hljs.initHighlightingOnLoad();</script>
|
53
57
|
</body>
|
54
58
|
</html>
|
data/views/punchcard.erb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<% unless node.nil? %>
|
6
|
+
<title>Ardtweeno <%= node %> Punchcard Graph</title>
|
7
|
+
<% else %>
|
8
|
+
<title>Ardtweeno Punchcard Graph</title>
|
9
|
+
<% end %>
|
10
|
+
<link href="/main.css" media="screen" rel="stylesheet" type="text/css" />
|
11
|
+
|
12
|
+
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
13
|
+
|
14
|
+
<link href="/bootstrap/bootstrap.min.css" media="screen" rel="stylesheet" type="text/css" />
|
15
|
+
<script type="text/javascript" src="/jquery/jquery-2.0.2.min.js"></script>
|
16
|
+
<script type="text/javascript" src="/bootstrap/bootstrap.min.js"></script>
|
17
|
+
|
18
|
+
|
19
|
+
<script type="text/javascript" src="/raphael/raphael-min.js"></script>
|
20
|
+
<script type="text/javascript" src="/raphael/g.raphael.js"></script>
|
21
|
+
<script type="text/javascript" src="/raphael/g.dot.js"></script>
|
22
|
+
<script type="text/javascript">
|
23
|
+
window.onload = function () {
|
24
|
+
var r = Raphael("punchcard-holder"),
|
25
|
+
xs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
|
26
|
+
ys = [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
27
|
+
|
28
|
+
<% unless ourGraphData.nil? %>
|
29
|
+
data = <%= ourGraphData.to_s %>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% unless ourGraphDays.nil? %>
|
33
|
+
axisy = <%= ourGraphDays %>,
|
34
|
+
<% end %>
|
35
|
+
axisx = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"];
|
36
|
+
|
37
|
+
r.dotchart(10, 10, 620, 260, xs, ys, data, {symbol: "o", max: 10, heat: true, axis: "0 0 1 1", axisxstep: 23, axisystep: 6, axisxlabels: axisx, axisxtype: " ", axisytype: " ", axisylabels: axisy}).hover(function () {
|
38
|
+
this.marker = this.marker || r.tag(this.x, this.y, this.value, 0, this.r + 2).insertBefore(this);
|
39
|
+
this.marker.show();
|
40
|
+
}, function () {
|
41
|
+
this.marker && this.marker.hide();
|
42
|
+
});
|
43
|
+
};
|
44
|
+
</script>
|
45
|
+
<script type="text/javascript">keepUpdating = false;</script>
|
46
|
+
</head>
|
47
|
+
|
48
|
+
<body>
|
49
|
+
<div id="content"><a href="/"><button id="punchcard-home" class="btn btn-large btn-inverse" type="button">Home</button></a></div>
|
50
|
+
<h3 id="punchcard-title">Punchcard Graph for <%= node %></h3>
|
51
|
+
<p id="punchcard-range"><%= ourGraphRange %></p>
|
52
|
+
<div id="punchcard-holder"></div>
|
53
|
+
</body>
|
54
|
+
|
55
|
+
</html>
|
data/views/status.erb
CHANGED
@@ -1,158 +1,71 @@
|
|
1
1
|
<p id="blurb">
|
2
|
-
|
2
|
+
System Status
|
3
3
|
</p>
|
4
4
|
|
5
5
|
<script type="text/javascript">
|
6
|
-
$(function
|
7
|
-
$(document).ready(function() {
|
8
|
-
Highcharts.setOptions({
|
9
|
-
global: {
|
10
|
-
useUTC: false
|
11
|
-
}
|
12
|
-
});
|
13
|
-
|
14
|
-
var chart;
|
15
|
-
$('#loadgraph').highcharts({
|
16
|
-
chart: {
|
17
|
-
type: 'spline',
|
18
|
-
animation: Highcharts.svg, // don't animate in old IE
|
19
|
-
height: 400,
|
20
|
-
marginRight: 10,
|
21
|
-
events: {
|
22
|
-
load: function() {
|
23
|
-
|
24
|
-
// set up the updating of the chart each second
|
25
|
-
var series0 = this.series[0];
|
26
|
-
var series1 = this.series[1];
|
27
|
-
setInterval(function() {
|
6
|
+
$(function() {
|
28
7
|
|
29
|
-
|
8
|
+
var options = {
|
9
|
+
xaxis: { mode: 'time' },
|
10
|
+
legend: { show: true,
|
11
|
+
container: null,
|
12
|
+
position: 'ne',
|
13
|
+
backgroundColor: '#DBBFFF',
|
14
|
+
backgroundOpacity: 0.5 }
|
15
|
+
};
|
30
16
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
success: function(data){
|
35
|
-
var theData = JSON.parse(JSON.stringify(data));
|
36
|
-
console.log(theData.running);
|
37
|
-
console.log(theData.cpuload);
|
38
|
-
console.log(theData.memload);
|
39
|
-
|
40
|
-
var x = (new Date()).getTime();
|
41
|
-
var y = parseFloat(theData.cpuload);
|
42
|
-
var z = parseFloat(theData.memload);
|
43
|
-
|
44
|
-
series0.addPoint([x, y], true, true);
|
45
|
-
series1.addPoint([x, z], true, true);
|
46
|
-
},
|
47
|
-
error: function(xhr, status, error){
|
48
|
-
console.log("fail");
|
49
|
-
}
|
50
|
-
});
|
17
|
+
var data = [];
|
18
|
+
alreadyFetched = {};
|
19
|
+
$.plot("#placeholder", data, options);
|
51
20
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
color: '#808080'
|
71
|
-
}]
|
72
|
-
},
|
73
|
-
tooltip: {
|
74
|
-
formatter: function() {
|
75
|
-
return '<b>'+ this.series.name +'</b><br/>'+
|
76
|
-
Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+
|
77
|
-
Highcharts.numberFormat(this.y, 2);
|
78
|
-
}
|
79
|
-
},
|
80
|
-
legend: {
|
81
|
-
enabled: true
|
82
|
-
},
|
83
|
-
exporting: {
|
84
|
-
enabled: false
|
85
|
-
},
|
86
|
-
series: [{
|
87
|
-
name: 'CPU Load',
|
88
|
-
marker: {
|
89
|
-
symbol: 'square'
|
90
|
-
},
|
91
|
-
color: 'red',
|
92
|
-
data: (function() {
|
93
|
-
// generate an array of random data
|
94
|
-
var data = [],
|
95
|
-
time = (new Date()).getTime(),
|
96
|
-
i;
|
97
|
-
|
98
|
-
for (i = -89; i <= 0; i++) {
|
99
|
-
data.push({
|
100
|
-
x: time + i * 10000,
|
101
|
-
y: 0.0
|
102
|
-
});
|
103
|
-
}
|
104
|
-
return data;
|
105
|
-
})()
|
106
|
-
},
|
107
|
-
{
|
108
|
-
name: 'Mem Load',
|
109
|
-
marker: {
|
110
|
-
symbol: 'triangle'
|
111
|
-
},
|
112
|
-
data: (function() {
|
113
|
-
// generate an array of random data
|
114
|
-
var data = [],
|
115
|
-
time = (new Date()).getTime(),
|
116
|
-
i;
|
117
|
-
|
118
|
-
for (i = -89; i <= 0; i++) {
|
119
|
-
data.push({
|
120
|
-
x: time + i * 10000,
|
121
|
-
y: 0.0
|
122
|
-
});
|
123
|
-
}
|
124
|
-
return data;
|
125
|
-
})()
|
126
|
-
}]
|
127
|
-
});
|
128
|
-
});
|
129
|
-
|
130
|
-
});
|
21
|
+
function fetchData() {
|
22
|
+
function onDataReceived(series) {
|
23
|
+
var thePlot = [series.buffer[0], series.buffer[1]];
|
24
|
+
$.plot("#placeholder", thePlot, options);
|
25
|
+
}
|
26
|
+
|
27
|
+
$.ajax({
|
28
|
+
url: "/api/v1/system/status/list",
|
29
|
+
type: "GET",
|
30
|
+
dataType: "json",
|
31
|
+
success: onDataReceived
|
32
|
+
});
|
33
|
+
|
34
|
+
setTimeout(fetchData, 10000);
|
35
|
+
}
|
36
|
+
|
37
|
+
setTimeout(fetchData, 1000);
|
38
|
+
});
|
131
39
|
</script>
|
132
40
|
|
133
41
|
<table class="table table-bordered">
|
134
42
|
<thead>
|
135
43
|
<tr>
|
136
|
-
<td>
|
137
|
-
<td>
|
138
|
-
<td>
|
44
|
+
<td><b>Device</b></td>
|
45
|
+
<td><b>Size</b></td>
|
46
|
+
<td><b>Used</b></td>
|
47
|
+
<td><b>Avail</b></td>
|
48
|
+
<td><b>Percent Used</b></td>
|
49
|
+
<td><b>Mount</b></td>
|
139
50
|
</tr>
|
140
51
|
</thead>
|
141
52
|
|
142
53
|
<tbody>
|
54
|
+
<% diskusage.each do |i| %>
|
143
55
|
<tr>
|
144
|
-
<td
|
145
|
-
<td
|
146
|
-
<td
|
147
|
-
|
148
|
-
|
149
|
-
<td
|
150
|
-
<td>test2</td>
|
151
|
-
<td>test3</td>
|
56
|
+
<td><%= i[:device] %></td>
|
57
|
+
<td><%= i[:size] %></td>
|
58
|
+
<td><%= i[:used] %></td>
|
59
|
+
<td><%= i[:avail] %></td>
|
60
|
+
<td><%= i[:use] %></td>
|
61
|
+
<td><%= i[:mount] %></td>
|
152
62
|
</tr>
|
63
|
+
<% end %>
|
153
64
|
</tbody>
|
154
65
|
</table>
|
155
66
|
|
156
67
|
|
157
|
-
<div
|
68
|
+
<div class="graph-container">
|
69
|
+
<div id="placeholder" class="graph-placeholder"></div>
|
70
|
+
|
158
71
|
</div>
|
data/views/topology.erb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ardtweeno
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Kirwan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.5.0
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rufus-scheduler
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.0.0
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.0.0
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: typhoeus
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +94,6 @@ dependencies:
|
|
108
94
|
- - '>='
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: 0.6.3
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: foreman
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.63.0
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.63.0
|
125
97
|
description: "Ardtweeno - Application Gateway bridges device connected through a serial
|
126
98
|
link to devices connected \nover Internet Protocol. It is designed as a PaaS capable
|
127
99
|
of being run on the ARM powered Raspberry Pi\nModel B. It exposes a RESTAPI powered
|
@@ -142,6 +114,7 @@ files:
|
|
142
114
|
- lib/ardtweeno/nodemanager.rb
|
143
115
|
- lib/ardtweeno/packet.rb
|
144
116
|
- lib/ardtweeno/restapi.rb
|
117
|
+
- lib/ardtweeno/ringbuffer.rb
|
145
118
|
- lib/ardtweeno/serialparser.rb
|
146
119
|
- CHANGELOG
|
147
120
|
- COPYING
|
@@ -151,16 +124,15 @@ files:
|
|
151
124
|
- Procfile
|
152
125
|
- README.md
|
153
126
|
- Rakefile
|
154
|
-
- public/
|
155
|
-
- public/highcharts.js
|
156
|
-
- public/jquery-1.8.2.min.js
|
157
|
-
- public/jquery-2.0.1.min.js
|
127
|
+
- public/favicon.ico
|
158
128
|
- public/main.css
|
159
129
|
- public/main.js
|
160
130
|
- views/createpost.erb
|
161
131
|
- views/home.erb
|
162
132
|
- views/index.erb
|
133
|
+
- views/punchcard.erb
|
163
134
|
- views/status.erb
|
135
|
+
- views/topology.erb
|
164
136
|
- resources/conf.yaml
|
165
137
|
- resources/nodelist.yaml
|
166
138
|
- resources/posts.yaml
|
@@ -192,6 +164,7 @@ files:
|
|
192
164
|
- test/packet_test.rb
|
193
165
|
- test/parser_test.rb
|
194
166
|
- test/rest_api_test.rb
|
167
|
+
- test/ringbuffer_test.rb
|
195
168
|
- test/serialport_mock.rb
|
196
169
|
- test/test_helper.rb
|
197
170
|
homepage: http://rubygems.org/gems/ardtweeno
|