omf_web 1.2.8 → 1.2.9
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/.gitignore +1 -0
- data/README.md +23 -7
- data/example/bridge/bridge.yaml +11 -0
- data/example/bridge/data_sources/sensor-sqlite.rb +1 -1
- data/example/topo_discovery/Gemfile +3 -0
- data/example/topo_discovery/data_sources/links_full.csv +43 -0
- data/example/topo_discovery/data_sources/links_groundtruth.csv +39 -0
- data/example/topo_discovery/data_sources/links_incomplete.csv +41 -0
- data/example/topo_discovery/data_sources/node_info_full.csv +55 -0
- data/example/topo_discovery/data_sources/node_info_groundtruth.csv +53 -0
- data/example/topo_discovery/data_sources/node_info_incomplete.csv +54 -0
- data/example/topo_discovery/data_sources/nodes_full.csv +16 -0
- data/example/topo_discovery/data_sources/nodes_groundtruth.csv +15 -0
- data/example/topo_discovery/data_sources/nodes_incomplete.csv +16 -0
- data/example/topo_discovery/data_sources/truth.sh +16 -0
- data/example/topo_discovery/docs/full_network.md +6 -0
- data/example/topo_discovery/docs/incomplete_network.md +6 -0
- data/example/topo_discovery/{introduction.md → docs/introduction.md} +0 -0
- data/example/topo_discovery/topo_discovery.yaml +25 -0
- data/example/topo_discovery/widgets_combined/network_full.yaml +57 -0
- data/example/topo_discovery/widgets_combined/network_groundtruth.yaml +57 -0
- data/example/topo_discovery/widgets_combined/network_groundtruth_small.yaml +59 -0
- data/example/topo_discovery/widgets_combined/network_incomplete.yaml +58 -0
- data/example/topo_discovery/widgets_combined/node_info_full.yaml +23 -0
- data/example/topo_discovery/widgets_combined/node_info_groundtruth.yaml +23 -0
- data/example/topo_discovery/widgets_combined/node_info_incomplete.yaml +23 -0
- data/example/topo_discovery/widgets_combined/tabs.yaml +49 -0
- data/example/{topo_discovery → topo_discovery2}/data_sources/links.csv +0 -0
- data/example/{topo_discovery → topo_discovery2}/data_sources/links2.csv +0 -0
- data/example/{topo_discovery → topo_discovery2}/data_sources/node_info.csv +0 -0
- data/example/{topo_discovery → topo_discovery2}/data_sources/nodes.csv +0 -0
- data/example/{topo_discovery → topo_discovery2}/data_sources/nodes2.csv +0 -0
- data/example/topo_discovery2/introduction.md +17 -0
- data/example/{topo_discovery → topo_discovery2}/topo_discovery_simple.yaml +0 -0
- data/example/{topo_discovery → topo_discovery2}/topo_discovery_simple2.yaml +0 -0
- data/example/{topo_discovery → topo_discovery2}/widgets/network.yaml +0 -0
- data/example/{topo_discovery → topo_discovery2}/widgets/node_info.yaml +0 -0
- data/lib/omf-web/thin/server.rb +47 -6
- data/lib/omf-web/version.rb +1 -1
- metadata +34 -11
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
# OMF Web
|
2
2
|
|
3
|
-
This Ruby
|
3
|
+
This Ruby gem provides the components for building a web-based data visualization service.
|
4
4
|
The typical use case is to allow a user to investigate a data set stored in one or more databases
|
5
5
|
as well as life data streams.
|
6
6
|
|
7
7
|
Installation
|
8
8
|
------------
|
9
9
|
|
10
|
+
gem install omf_web
|
11
|
+
|
12
|
+
or if you want to create a standalone visualisation solution you may want to
|
13
|
+
add the following to a local 'Gemfile':
|
14
|
+
|
15
|
+
source 'https://rubygems.org'
|
16
|
+
gem 'omf_web'
|
17
|
+
|
10
18
|
At this stage the best course of action is to clone the repository
|
11
19
|
|
12
20
|
% git clone https://github.com/mytestbed/omf_web.git
|
@@ -14,12 +22,16 @@ At this stage the best course of action is to clone the repository
|
|
14
22
|
% export OMF_WEB=`pwd`
|
15
23
|
% bundle install
|
16
24
|
|
17
|
-
On some systems you will need to install 'libicu'
|
25
|
+
On some systems you will need to install 'libicu'.
|
26
|
+
|
27
|
+
sudo apt-get install libicu-dev
|
28
|
+
|
29
|
+
On Debian (Ubuntu)
|
18
30
|
|
19
31
|
On Mac with Ports
|
20
32
|
|
21
|
-
|
22
|
-
|
33
|
+
sudo port install icu
|
34
|
+
bundle config build.charlock_holmes --with-icu-dir=/opt/local
|
23
35
|
|
24
36
|
Getting Started
|
25
37
|
---------------
|
@@ -27,16 +39,20 @@ Getting Started
|
|
27
39
|
There are a few example sites in the 'example' directory. They have been developed in the context of various demos and
|
28
40
|
may not always be kept up to date. The one which should always work is 'example/simple'. Try it out.
|
29
41
|
|
30
|
-
|
42
|
+
omf_web_server --example simple start
|
31
43
|
|
32
|
-
This starts a webserver which can be accessed locally via 'http:localhost:
|
44
|
+
This starts a webserver which can be accessed locally via 'http:localhost:4010'. Connecting to it through your favorite
|
33
45
|
web browser should display a web page approx. looking like:
|
34
46
|
|
35
47
|

|
36
48
|
|
37
49
|
Don't forget to press the icon buttons
|
38
50
|

|
39
|
-
on the
|
51
|
+
on the right widget header.
|
52
|
+
|
53
|
+
A list of all the available examples can be obtained through:
|
54
|
+
|
55
|
+
omf_web_server --example
|
40
56
|
|
41
57
|
Overview
|
42
58
|
--------
|
data/example/bridge/bridge.yaml
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
server:
|
3
3
|
page_title: Bridge Monitoring
|
4
4
|
port: 4020
|
5
|
+
options:
|
6
|
+
- separator: "BRIDGE options:"
|
7
|
+
- name: fake-events
|
8
|
+
var_name: oml_database
|
9
|
+
description: If set, create fake sensor events
|
10
|
+
var_name: fake_bridge_events
|
11
|
+
- name: oml-database
|
12
|
+
param: DATABASE
|
13
|
+
var_name: oml_database
|
14
|
+
default: sqlite://example/bridge/data_sources/test3.sq3
|
15
|
+
description: "Database containing bridge data"
|
5
16
|
|
6
17
|
include: tabs/*.yaml
|
7
18
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
id:int,from_id:string,to_id:string,zone:int
|
2
|
+
3,10:10:10:10:10:fe,rf2,0
|
3
|
+
11,rf2,10:10:10:10:10:fe,0
|
4
|
+
21,00:00:00:00:c1:00,sw1,0
|
5
|
+
22,sw1,rf1,0
|
6
|
+
23,00:00:00:00:c1:00,sw2,0
|
7
|
+
24,sw2,rf1,0
|
8
|
+
25,00:00:00:00:c2:00,sw2,0
|
9
|
+
26,sw2,rf1,0
|
10
|
+
27,rf1,sw1,0
|
11
|
+
28,sw1,00:00:00:00:c1:00,0
|
12
|
+
29,rf1,sw2,0
|
13
|
+
30,sw2,00:00:00:00:c1:00,0
|
14
|
+
31,rf1,sw2,0
|
15
|
+
32,sw2,00:00:00:00:c2:00,0
|
16
|
+
33,rf1,sw3,0
|
17
|
+
34,sw3,rf2,0
|
18
|
+
35,rf1,sw3,0
|
19
|
+
36,sw3,ba:5e:ba:11:00:00,0
|
20
|
+
37,rf2,sw3,0
|
21
|
+
38,sw3,rf1,0
|
22
|
+
39,rf2,sw3,0
|
23
|
+
40,sw3,ba:5e:ba:11:00:00,0
|
24
|
+
41,rf2,sw5,0
|
25
|
+
42,sw5,ba:5e:ba:11:ad:00,0
|
26
|
+
43,rf3,sw4,0
|
27
|
+
44,sw4,ba:5e:ba:11:db:00,0
|
28
|
+
45,rf3,sw5,0
|
29
|
+
46,sw5,ba:5e:ba:11:ad:00,0
|
30
|
+
47,ba:5e:ba:11:00:00,sw3,0
|
31
|
+
48,sw3,rf1,0
|
32
|
+
49,ba:5e:ba:11:00:00,sw3,0
|
33
|
+
50,sw3,rf2,0
|
34
|
+
51,ba:5e:ba:11:00:01,sw4,0
|
35
|
+
52,sw4,ba:5e:ba:11:db:00,0
|
36
|
+
53,ba:5e:ba:11:ad:00,sw5,0
|
37
|
+
54,sw5,rf2,0
|
38
|
+
55,ba:5e:ba:11:ad:00,sw5,0
|
39
|
+
56,sw5,rf3,0
|
40
|
+
57,ba:5e:ba:11:db:00,sw4,0
|
41
|
+
58,sw4,rf3,0
|
42
|
+
59,ba:5e:ba:11:db:00,sw4,0
|
43
|
+
60,sw4,ba:5e:ba:11:00:01,0
|
@@ -0,0 +1,39 @@
|
|
1
|
+
id:int,from_id:string,to_id:string,zone:int
|
2
|
+
3,Internet,rf2,0
|
3
|
+
21,client1,sw1,0
|
4
|
+
23,sw1,sw2,0
|
5
|
+
24,sw2,rf1,0
|
6
|
+
25,client2,sw2,0
|
7
|
+
26,sw2,rf1,0
|
8
|
+
28,sw1,client1,0
|
9
|
+
29,rf1,sw2,0
|
10
|
+
31,rf1,sw2,0
|
11
|
+
32,sw2,client2,0
|
12
|
+
33,rf1,sw3,0
|
13
|
+
34,sw3,rf2,0
|
14
|
+
35,rf1,sw3,0
|
15
|
+
36,sw3,WWWServer,0
|
16
|
+
37,rf2,sw3,0
|
17
|
+
38,sw3,rf1,0
|
18
|
+
39,rf2,sw3,0
|
19
|
+
40,sw3,WWWServer,0
|
20
|
+
41,rf2,sw5,0
|
21
|
+
42,sw5,admin,0
|
22
|
+
43,rf3,sw4,0
|
23
|
+
44,sw4,PsqlServer,0
|
24
|
+
45,rf3,sw5,0
|
25
|
+
46,sw5,admin,0
|
26
|
+
47,WWWServer,sw3,0
|
27
|
+
48,sw3,rf1,0
|
28
|
+
49,WWWServer,sw3,0
|
29
|
+
50,sw3,rf2,0
|
30
|
+
51,WWWServer,sw4,0
|
31
|
+
52,sw4,PsqlServer,0
|
32
|
+
53,admin,sw5,0
|
33
|
+
54,sw5,rf2,0
|
34
|
+
55,admin,sw5,0
|
35
|
+
56,sw5,rf3,0
|
36
|
+
57,PsqlServer,sw4,0
|
37
|
+
58,sw4,rf3,0
|
38
|
+
59,PsqlServer,sw4,0
|
39
|
+
60,sw4,WWWServer,0
|
@@ -0,0 +1,41 @@
|
|
1
|
+
id:int,from_id:string,to_id:string,zone:int
|
2
|
+
19,00:00:00:00:c1:00,sw1,0
|
3
|
+
20,sw1,30:00:00:00:01:00,0
|
4
|
+
21,00:00:00:00:c1:00,sw2,0
|
5
|
+
22,sw2,30:00:00:00:01:00,0
|
6
|
+
23,00:00:00:00:c2:00,sw2,0
|
7
|
+
24,sw2,30:00:00:00:01:00,0
|
8
|
+
25,30:00:00:00:01:00,sw1,0
|
9
|
+
26,sw1,00:00:00:00:c1:00,0
|
10
|
+
27,30:00:00:00:01:00,sw2,0
|
11
|
+
28,sw2,00:00:00:00:c1:00,0
|
12
|
+
29,30:00:00:00:01:00,sw2,0
|
13
|
+
30,sw2,00:00:00:00:c2:00,0
|
14
|
+
31,30:00:00:00:01:01,sw3,0
|
15
|
+
32,sw3,rf2,0
|
16
|
+
33,30:00:00:00:01:01,sw3,0
|
17
|
+
34,sw3,ba:5e:ba:11:00:00,0
|
18
|
+
35,rf2,sw3,0
|
19
|
+
36,sw3,30:00:00:00:01:01,0
|
20
|
+
37,rf2,sw3,0
|
21
|
+
38,sw3,ba:5e:ba:11:00:00,0
|
22
|
+
39,rf2,sw5,0
|
23
|
+
40,sw5,ba:5e:ba:11:ad:00,0
|
24
|
+
41,rf3,sw4,0
|
25
|
+
42,sw4,ba:5e:ba:11:db:00,0
|
26
|
+
43,rf3,sw5,0
|
27
|
+
44,sw5,ba:5e:ba:11:ad:00,0
|
28
|
+
45,ba:5e:ba:11:00:00,sw3,0
|
29
|
+
46,sw3,30:00:00:00:01:01,0
|
30
|
+
47,ba:5e:ba:11:00:00,sw3,0
|
31
|
+
48,sw3,rf2,0
|
32
|
+
49,ba:5e:ba:11:00:01,sw4,0
|
33
|
+
50,sw4,ba:5e:ba:11:db:00,0
|
34
|
+
51,ba:5e:ba:11:ad:00,sw5,0
|
35
|
+
52,sw5,rf2,0
|
36
|
+
53,ba:5e:ba:11:ad:00,sw5,0
|
37
|
+
54,sw5,rf3,0
|
38
|
+
55,ba:5e:ba:11:db:00,sw4,0
|
39
|
+
56,sw4,rf3,0
|
40
|
+
57,ba:5e:ba:11:db:00,sw4,0
|
41
|
+
58,sw4,ba:5e:ba:11:00:01,0
|
@@ -0,0 +1,55 @@
|
|
1
|
+
nodeID, property, value
|
2
|
+
rf1,name,rf1
|
3
|
+
rf1,type,router
|
4
|
+
rf1,intf,MAC 30:00:00:00:01:00 with IP 192.168.1.254
|
5
|
+
rf1,intf,MAC 30:00:00:00:01:01 with IP 192.168.2.1
|
6
|
+
rf2,name,rf2
|
7
|
+
rf2,type,router
|
8
|
+
rf2,intf,MAC 30:00:00:00:02:00 with IP 192.168.2.254
|
9
|
+
rf2,intf,MAC 30:00:00:00:02:01 with IP 192.168.4.1
|
10
|
+
rf2,intf,MAC 30:00:00:00:02:02 with IP 192.168.10.1
|
11
|
+
rf3,name,rf3
|
12
|
+
rf3,type,router
|
13
|
+
rf3,intf,MAC 30:00:00:00:03:00 with IP 192.168.3.254
|
14
|
+
rf3,intf,MAC 30:00:00:00:03:01 with IP 192.168.4.2
|
15
|
+
sw1,name,sw1
|
16
|
+
sw1,type,sw1
|
17
|
+
sw1,intf,MAC 20:00:00:00:01:00
|
18
|
+
sw1,intf,MAC 20:00:00:00:01:01
|
19
|
+
sw2,name,sw2
|
20
|
+
sw2,type,sw2
|
21
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
22
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
23
|
+
sw3,name,sw3
|
24
|
+
sw3,type,sw3
|
25
|
+
sw3,intf,MAC 20:00:00:00:03:00
|
26
|
+
sw3,intf,MAC 20:00:00:00:03:01
|
27
|
+
sw4,name,sw4
|
28
|
+
sw4,type,sw4
|
29
|
+
sw4,intf,MAC 20:00:00:00:04:00
|
30
|
+
sw4,intf,MAC 20:00:00:00:04:01
|
31
|
+
sw5,name,sw5
|
32
|
+
sw5,type,sw5
|
33
|
+
sw5,intf,MAC 20:00:00:00:05:00
|
34
|
+
sw5,intf,MAC 20:00:00:00:05:01
|
35
|
+
00:00:00:00:c1:00,name,device1
|
36
|
+
00:00:00:00:c1:00,type,WWW client
|
37
|
+
00:00:00:00:c1:00,intf,MAC 192.168.1.22 with IP 192.168.1.22
|
38
|
+
00:00:00:00:c2:00,name,device2
|
39
|
+
00:00:00:00:c2:00,type,WWW client
|
40
|
+
00:00:00:00:c2:00,intf,MAC 192.168.1.23 with IP 192.168.1.23
|
41
|
+
ba:5e:ba:11:00:00,name,device3
|
42
|
+
ba:5e:ba:11:00:00,type,WWW server
|
43
|
+
ba:5e:ba:11:00:00,intf,MAC 192.168.2.22 with IP 192.168.2.22
|
44
|
+
ba:5e:ba:11:00:01,name,device4
|
45
|
+
ba:5e:ba:11:00:01,type,DB client
|
46
|
+
ba:5e:ba:11:00:01,intf,MAC 192.168.3.22 with IP 192.168.3.22
|
47
|
+
ba:5e:ba:11:ad:00,name,device5
|
48
|
+
ba:5e:ba:11:ad:00,type,admin
|
49
|
+
ba:5e:ba:11:ad:00,intf,MAC 192.168.4.22 with IP 192.168.4.22
|
50
|
+
ba:5e:ba:11:db:00,name,device6
|
51
|
+
ba:5e:ba:11:db:00,type,DB
|
52
|
+
ba:5e:ba:11:db:00,intf,MAC 192.168.3.23 with IP 192.168.3.23
|
53
|
+
10:10:10:10:10:fe,name,device1
|
54
|
+
10:10:10:10:10:fe,type,unknown
|
55
|
+
10:10:10:10:10:fe,intf,MAC 10:10:10:10:10:fe with IP 192.168.10.22
|
@@ -0,0 +1,53 @@
|
|
1
|
+
nodeID, property, value
|
2
|
+
rf1,name,rf1
|
3
|
+
rf1,type,router
|
4
|
+
rf1,intf,MAC 30:00:00:00:01:00 with IP 192.168.1.254
|
5
|
+
rf1,intf,MAC 30:00:00:00:01:01 with IP 192.168.2.1
|
6
|
+
rf2,name,rf2
|
7
|
+
rf2,type,router
|
8
|
+
rf2,intf,MAC 30:00:00:00:02:00 with IP 192.168.2.254
|
9
|
+
rf2,intf,MAC 30:00:00:00:02:01 with IP 192.168.4.1
|
10
|
+
rf2,intf,MAC 30:00:00:00:02:02 with IP 192.168.10.1
|
11
|
+
rf3,name,rf3
|
12
|
+
rf3,type,router
|
13
|
+
rf3,intf,MAC 30:00:00:00:03:00 with IP 192.168.3.254
|
14
|
+
rf3,intf,MAC 30:00:00:00:03:01 with IP 192.168.4.2
|
15
|
+
sw1,name,sw1
|
16
|
+
sw1,type,switch
|
17
|
+
sw1,intf,MAC 20:00:00:00:01:00
|
18
|
+
sw1,intf,MAC 20:00:00:00:01:01
|
19
|
+
sw2,name,sw2
|
20
|
+
sw2,type,switch
|
21
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
22
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
23
|
+
sw3,name,sw3
|
24
|
+
sw3,type,switch
|
25
|
+
sw3,intf,MAC 20:00:00:00:03:00
|
26
|
+
sw3,intf,MAC 20:00:00:00:03:01
|
27
|
+
sw4,name,sw4
|
28
|
+
sw4,type,switch
|
29
|
+
sw4,intf,MAC 20:00:00:00:04:00
|
30
|
+
sw4,intf,MAC 20:00:00:00:04:01
|
31
|
+
sw5,name,sw5
|
32
|
+
sw5,type,switch
|
33
|
+
sw5,intf,MAC 20:00:00:00:05:00
|
34
|
+
sw5,intf,MAC 20:00:00:00:05:01
|
35
|
+
client1,name,client1
|
36
|
+
client1,type,WWW client
|
37
|
+
client1,intf,MAC 00:00:00:00:c1:00 with IP 192.168.1.22
|
38
|
+
client2,name,client2
|
39
|
+
client2,type,WWW client
|
40
|
+
client2,intf,MAC 00:00:00:00:c2:00 with IP 192.168.1.23
|
41
|
+
WWWServer,name,WWWServer
|
42
|
+
WWWServer,type,WWW server
|
43
|
+
WWWServer,intf,MAC ba:5e:ba:11:00:00 with IP 192.168.2.22
|
44
|
+
WWWServer,intf,MAC ba:5e:ba:11:00:01 with IP 192.168.3.22
|
45
|
+
admin,name,admin
|
46
|
+
admin,type,admin
|
47
|
+
admin,intf,MAC ba:5e:ba:11:ad:00 with IP 192.168.4.22
|
48
|
+
Internet,name,Internet
|
49
|
+
Internet,type,Internet
|
50
|
+
Internet,intf,MAC 10:10:10:10:10:fe with IP 192.168.10.22
|
51
|
+
PsqlServer,name,PsqlServer
|
52
|
+
PsqlServer,type,DB
|
53
|
+
PsqlServer,intf,MAC ba:5e:ba:11:db:00 with IP 192.168.3.23
|
@@ -0,0 +1,54 @@
|
|
1
|
+
nodeID, property, value
|
2
|
+
rf2,name,rf2
|
3
|
+
rf2,type,router
|
4
|
+
rf2,intf,MAC 30:00:00:00:02:00 with IP 192.168.2.254
|
5
|
+
rf2,intf,MAC 30:00:00:00:02:01 with IP 192.168.4.1
|
6
|
+
rf2,intf,MAC 30:00:00:00:02:02 with IP 192.168.10.1
|
7
|
+
rf3,name,rf3
|
8
|
+
rf3,type,router
|
9
|
+
rf3,intf,MAC 30:00:00:00:03:00 with IP 192.168.3.254
|
10
|
+
rf3,intf,MAC 30:00:00:00:03:01 with IP 192.168.4.2
|
11
|
+
sw1,name,sw1
|
12
|
+
sw1,type,sw1
|
13
|
+
sw1,intf,MAC 20:00:00:00:01:00
|
14
|
+
sw1,intf,MAC 20:00:00:00:01:01
|
15
|
+
sw2,name,sw2
|
16
|
+
sw2,type,sw2
|
17
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
18
|
+
sw2,intf,MAC 20:00:00:00:02:01
|
19
|
+
sw3,name,sw3
|
20
|
+
sw3,type,sw3
|
21
|
+
sw3,intf,MAC 20:00:00:00:03:00
|
22
|
+
sw3,intf,MAC 20:00:00:00:03:01
|
23
|
+
sw4,name,sw4
|
24
|
+
sw4,type,sw4
|
25
|
+
sw4,intf,MAC 20:00:00:00:04:00
|
26
|
+
sw4,intf,MAC 20:00:00:00:04:01
|
27
|
+
sw5,name,sw5
|
28
|
+
sw5,type,sw5
|
29
|
+
sw5,intf,MAC 20:00:00:00:05:00
|
30
|
+
sw5,intf,MAC 20:00:00:00:05:01
|
31
|
+
00:00:00:00:c1:00,name,device1
|
32
|
+
00:00:00:00:c1:00,type,WWW client
|
33
|
+
00:00:00:00:c1:00,intf,MAC 192.168.1.22 with IP 192.168.1.22
|
34
|
+
30:00:00:00:01:00,name,device2
|
35
|
+
30:00:00:00:01:00,type,MANUAL INSPECT
|
36
|
+
30:00:00:00:01:00,intf,MAC 192.168.2.22 with IP 192.168.2.22
|
37
|
+
30:00:00:00:01:01,name,device3
|
38
|
+
30:00:00:00:01:01,type,MANUAL INSPECT
|
39
|
+
30:00:00:00:01:01,intf,MAC 192.168.1.22 with IP 192.168.1.22
|
40
|
+
ba:5e:ba:11:00:00,name,device4
|
41
|
+
ba:5e:ba:11:00:00,type,WWW server
|
42
|
+
ba:5e:ba:11:00:00,intf,MAC 192.168.2.22 with IP 192.168.2.22
|
43
|
+
ba:5e:ba:11:00:01,name,device5
|
44
|
+
ba:5e:ba:11:00:01,type,DB client
|
45
|
+
ba:5e:ba:11:00:01,intf,MAC 192.168.3.22 with IP 192.168.3.22
|
46
|
+
ba:5e:ba:11:db:00,name,device6
|
47
|
+
ba:5e:ba:11:db:00,type,DB
|
48
|
+
ba:5e:ba:11:db:00,intf,MAC 192.168.3.23 with IP 192.168.3.23
|
49
|
+
00:00:00:00:c2:00,name,device1
|
50
|
+
00:00:00:00:c2:00,type,unknown
|
51
|
+
00:00:00:00:c2:00,intf,MAC 00:00:00:00:c2:00 with IP 192.168.1.23
|
52
|
+
ba:5e:ba:11:ad:00,name,device2
|
53
|
+
ba:5e:ba:11:ad:00,type,unknown
|
54
|
+
ba:5e:ba:11:ad:00,intf,MAC ba:5e:ba:11:ad:00 with IP None
|
@@ -0,0 +1,16 @@
|
|
1
|
+
id:string,name,type
|
2
|
+
00:00:00:00:c1:00,00:00:00:00:c1:00,genericclient
|
3
|
+
00:00:00:00:c2:00,00:00:00:00:c2:00,genericclient
|
4
|
+
10:10:10:10:10:fe,10:10:10:10:10:fe,unknown
|
5
|
+
sw1,sw1,switch
|
6
|
+
sw2,sw2,switch
|
7
|
+
sw3,sw3,switch
|
8
|
+
sw4,sw4,switch
|
9
|
+
sw5,sw5,switch
|
10
|
+
rf1,rf1,router
|
11
|
+
rf2,rf2,router
|
12
|
+
rf3,rf3,router
|
13
|
+
ba:5e:ba:11:00:00,ba:5e:ba:11:00:00,wwwserver
|
14
|
+
ba:5e:ba:11:00:01,ba:5e:ba:11:00:01,dbclient
|
15
|
+
ba:5e:ba:11:ad:00,ba:5e:ba:11:ad:00,admin
|
16
|
+
ba:5e:ba:11:db:00,ba:5e:ba:11:db:00,dbserver
|
@@ -0,0 +1,15 @@
|
|
1
|
+
id:string,name,type
|
2
|
+
client1,client1,client
|
3
|
+
client2,client2,client
|
4
|
+
Internet,Internet,Internet
|
5
|
+
sw1,sw1,switch
|
6
|
+
sw2,sw2,switch
|
7
|
+
sw3,sw3,switch
|
8
|
+
sw4,sw4,switch
|
9
|
+
sw5,sw5,switch
|
10
|
+
rf1,rf1,router
|
11
|
+
rf2,rf2,router
|
12
|
+
rf3,rf3,router
|
13
|
+
WWWServer,WWWServer,WWWServer
|
14
|
+
admin,admin,admin
|
15
|
+
PsqlServer,PsqlServer,PsqlServer
|
@@ -0,0 +1,16 @@
|
|
1
|
+
id:string,name,type
|
2
|
+
00:00:00:00:c1:00,00:00:00:00:c1:00,genericclient
|
3
|
+
00:00:00:00:c2:00,00:00:00:00:c2:00,unknown
|
4
|
+
sw1,sw1,switch
|
5
|
+
sw2,sw2,switch
|
6
|
+
sw3,sw3,switch
|
7
|
+
sw4,sw4,switch
|
8
|
+
sw5,sw5,switch
|
9
|
+
30:00:00:00:01:00,30:00:00:00:01:00,special
|
10
|
+
30:00:00:00:01:01,30:00:00:00:01:01,special
|
11
|
+
rf2,rf2,router
|
12
|
+
rf3,rf3,router
|
13
|
+
ba:5e:ba:11:00:00,ba:5e:ba:11:00:00,wwwserver
|
14
|
+
ba:5e:ba:11:00:01,ba:5e:ba:11:00:01,dbclient
|
15
|
+
ba:5e:ba:11:ad:00,ba:5e:ba:11:ad:00,unknown
|
16
|
+
ba:5e:ba:11:db:00,ba:5e:ba:11:db:00,dbserver
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
sed -i 's/00:00:00:00:c1:00/client1/g' nodes_groundtruth.csv
|
3
|
+
sed -i 's/00:00:00:00:c2:00/client2/g' nodes_groundtruth.csv
|
4
|
+
sed -i 's/10:10:10:10:10:fe/Internet/g' nodes_groundtruth.csv
|
5
|
+
sed -i 's/ba:5e:ba:11:00:00/WWWServer/g' nodes_groundtruth.csv
|
6
|
+
sed -i 's/ba:5e:ba:11:00:01/WWWServer/g' nodes_groundtruth.csv
|
7
|
+
sed -i 's/ba:5e:ba:11:ad:00/admin/g' nodes_groundtruth.csv
|
8
|
+
sed -i 's/ba:5e:ba:11:db:00/PsqlServer/g' nodes_groundtruth.csv
|
9
|
+
|
10
|
+
sed -i 's/00:00:00:00:c1:00/client1/g' links_groundtruth.csv
|
11
|
+
sed -i 's/00:00:00:00:c2:00/client2/g' links_groundtruth.csv
|
12
|
+
sed -i 's/10:10:10:10:10:fe/Internet/g' links_groundtruth.csv
|
13
|
+
sed -i 's/ba:5e:ba:11:00:00/WWWServer/g' links_groundtruth.csv
|
14
|
+
sed -i 's/ba:5e:ba:11:00:01/WWWServer/g' links_groundtruth.csv
|
15
|
+
sed -i 's/ba:5e:ba:11:ad:00/admin/g' links_groundtruth.csv
|
16
|
+
sed -i 's/ba:5e:ba:11:db:00/PsqlServer/g' links_groundtruth.csv
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
# Simple tab showing a line chart with supporting table
|
5
|
+
#
|
6
|
+
|
7
|
+
server:
|
8
|
+
name: 'Topology Discovery'
|
9
|
+
page_title: 'Topology Discovery'
|
10
|
+
port: 4020
|
11
|
+
footer_left: NICTA
|
12
|
+
footer_right: V1.2
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
repositories:
|
17
|
+
- id: content
|
18
|
+
type: file
|
19
|
+
top_dir: ./docs
|
20
|
+
|
21
|
+
include: widgets_combined/*.yaml
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
|
2
|
+
data_sources:
|
3
|
+
- id: network/nodes
|
4
|
+
file: data_sources/nodes_full.csv # checking that node ids can be anything
|
5
|
+
- id: network/links
|
6
|
+
file: data_sources/links_full.csv
|
7
|
+
|
8
|
+
widgets:
|
9
|
+
- id: network_full
|
10
|
+
name: Discovered Network
|
11
|
+
type: data/network2
|
12
|
+
height: 1.0
|
13
|
+
#data_source: network
|
14
|
+
data_sources:
|
15
|
+
- name: nodes
|
16
|
+
stream: network/nodes
|
17
|
+
- name: links
|
18
|
+
stream: network/links
|
19
|
+
|
20
|
+
mapping:
|
21
|
+
nodes:
|
22
|
+
x: auto
|
23
|
+
y: auto
|
24
|
+
radius: 15
|
25
|
+
# property: capacity
|
26
|
+
# scale: 20
|
27
|
+
# min: 4
|
28
|
+
fill_color: #white
|
29
|
+
property: type
|
30
|
+
color:
|
31
|
+
router: orange
|
32
|
+
switch: '#FFDD00'
|
33
|
+
genericclient: lightskyblue
|
34
|
+
unknown: white
|
35
|
+
dbserver: '#D473D4' #Mauve is the best colour for a DB: http://search.dilbert.com/comic/Database%20Color
|
36
|
+
dbclient: '#915F6D' # clients have similar colour
|
37
|
+
wwwserver: darkgreen
|
38
|
+
admin: '#0000FF' # deep blue for admin
|
39
|
+
internet: '#eeeeee'
|
40
|
+
# property: capacity
|
41
|
+
# color: red_yellow20_green()
|
42
|
+
stroke_width: 2
|
43
|
+
label_color: black
|
44
|
+
label_size: 14
|
45
|
+
links:
|
46
|
+
stroke_width: 8
|
47
|
+
stroke_color:
|
48
|
+
property: zone
|
49
|
+
color: category10()
|
50
|
+
|
51
|
+
force:
|
52
|
+
link_distance: 50
|
53
|
+
charge: -1000
|
54
|
+
|
55
|
+
line_mode: straight
|
56
|
+
interaction_mode: click
|
57
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
|
2
|
+
data_sources:
|
3
|
+
- id: network_gt/nodes
|
4
|
+
file: data_sources/nodes_groundtruth.csv # checking that node ids can be anything
|
5
|
+
- id: network_gt/links
|
6
|
+
file: data_sources/links_groundtruth.csv
|
7
|
+
|
8
|
+
widgets:
|
9
|
+
- id: network_groundtruth
|
10
|
+
name: Network (Ground truth)
|
11
|
+
type: data/network2
|
12
|
+
height: 1.0
|
13
|
+
#data_source: network
|
14
|
+
data_sources:
|
15
|
+
- name: nodes
|
16
|
+
stream: network_gt/nodes
|
17
|
+
- name: links
|
18
|
+
stream: network_gt/links
|
19
|
+
|
20
|
+
mapping:
|
21
|
+
nodes:
|
22
|
+
x: auto
|
23
|
+
y: auto
|
24
|
+
radius: 15
|
25
|
+
# property: capacity
|
26
|
+
# scale: 20
|
27
|
+
# min: 4
|
28
|
+
fill_color: #white
|
29
|
+
property: type
|
30
|
+
color:
|
31
|
+
router: orange
|
32
|
+
switch: '#FFDD00'
|
33
|
+
client: lightskyblue
|
34
|
+
unknown: white
|
35
|
+
PsqlServer: '#D473D4' #Mauve is the best colour for a DB: http://search.dilbert.com/comic/Database%20Color
|
36
|
+
PsqlClient: '#915F6D' # clients have similar colour
|
37
|
+
WWWServer: darkgreen
|
38
|
+
admin: '#0000FF' # deep blue for admin
|
39
|
+
Internet: '#eeeeee'
|
40
|
+
# property: capacity
|
41
|
+
# color: red_yellow20_green()
|
42
|
+
stroke_width: 2
|
43
|
+
label_color: black
|
44
|
+
label_size: 14
|
45
|
+
links:
|
46
|
+
stroke_width: 8
|
47
|
+
stroke_color:
|
48
|
+
property: zone
|
49
|
+
color: category10()
|
50
|
+
|
51
|
+
force:
|
52
|
+
link_distance: 50
|
53
|
+
charge: -1000
|
54
|
+
|
55
|
+
line_mode: straight
|
56
|
+
interaction_mode: click
|
57
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
widgets:
|
5
|
+
- id: network_groundtruth_small
|
6
|
+
name: Ground Truth
|
7
|
+
type: data/network2
|
8
|
+
height: 1.0
|
9
|
+
#data_source: network
|
10
|
+
data_sources:
|
11
|
+
- name: nodes
|
12
|
+
stream: network_gt/nodes
|
13
|
+
- name: links
|
14
|
+
stream: network_gt/links
|
15
|
+
|
16
|
+
mapping:
|
17
|
+
nodes:
|
18
|
+
x: auto
|
19
|
+
y: auto
|
20
|
+
radius: 10
|
21
|
+
# property: capacity
|
22
|
+
# scale: 20
|
23
|
+
# min: 4
|
24
|
+
fill_color: #white
|
25
|
+
property: type
|
26
|
+
color:
|
27
|
+
router: orange
|
28
|
+
switch: '#FFDD00'
|
29
|
+
client: lightskyblue
|
30
|
+
unknown: white
|
31
|
+
PsqlServer: '#D473D4' #Mauve is the best colour for a DB: http://search.dilbert.com/comic/Database%20Color
|
32
|
+
PsqlClient: '#915F6D' # clients have similar colour
|
33
|
+
WWWServer: darkgreen
|
34
|
+
admin: '#0000FF' # deep blue for admin
|
35
|
+
Internet: '#eeeeee'
|
36
|
+
# property: capacity
|
37
|
+
# color: red_yellow20_green()
|
38
|
+
stroke_width: 2
|
39
|
+
label_color: black
|
40
|
+
label_size: 8
|
41
|
+
links:
|
42
|
+
stroke_width: 2
|
43
|
+
stroke_color:
|
44
|
+
property: zone
|
45
|
+
color: category10()
|
46
|
+
|
47
|
+
force:
|
48
|
+
link_distance: 15
|
49
|
+
charge: -300
|
50
|
+
|
51
|
+
line_mode: straight
|
52
|
+
interaction_mode: none
|
53
|
+
|
54
|
+
margin:
|
55
|
+
left: 20
|
56
|
+
top: 20
|
57
|
+
right: 20
|
58
|
+
bottom: 20
|
59
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
data_sources:
|
3
|
+
- id: network_ic/nodes
|
4
|
+
file: data_sources/nodes_incomplete.csv # checking that node ids can be anything
|
5
|
+
- id: network_ic/links
|
6
|
+
file: data_sources/links_incomplete.csv
|
7
|
+
|
8
|
+
widgets:
|
9
|
+
- id: network_incomplete
|
10
|
+
name: Discovered Network
|
11
|
+
type: data/network2
|
12
|
+
height: 1.0
|
13
|
+
#data_source: network
|
14
|
+
data_sources:
|
15
|
+
- name: nodes
|
16
|
+
stream: network_ic/nodes
|
17
|
+
- name: links
|
18
|
+
stream: network_ic/links
|
19
|
+
|
20
|
+
mapping:
|
21
|
+
nodes:
|
22
|
+
x: auto
|
23
|
+
y: auto
|
24
|
+
radius: 15
|
25
|
+
# property: capacity
|
26
|
+
# scale: 20
|
27
|
+
# min: 4
|
28
|
+
fill_color: #white
|
29
|
+
property: type
|
30
|
+
color:
|
31
|
+
router: orange
|
32
|
+
switch: '#FFDD00'
|
33
|
+
genericclient: lightskyblue
|
34
|
+
unknown: white
|
35
|
+
special: red
|
36
|
+
dbserver: '#D473D4' #Mauve is the best colour for a DB: http://search.dilbert.com/comic/Database%20Color
|
37
|
+
dbclient: '#915F6D' # clients have similar colour
|
38
|
+
wwwserver: darkgreen
|
39
|
+
admin: '#0000FF' # deep blue for admin
|
40
|
+
internet: '#eeeeee'
|
41
|
+
# property: capacity
|
42
|
+
# color: red_yellow20_green()
|
43
|
+
stroke_width: 2
|
44
|
+
label_color: black
|
45
|
+
label_size: 14
|
46
|
+
links:
|
47
|
+
stroke_width: 8
|
48
|
+
stroke_color:
|
49
|
+
property: zone
|
50
|
+
color: category10()
|
51
|
+
|
52
|
+
force:
|
53
|
+
link_distance: 50
|
54
|
+
charge: -1000
|
55
|
+
|
56
|
+
line_mode: straight
|
57
|
+
interaction_mode: click
|
58
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
data_sources:
|
2
|
+
- id: node_info_fl
|
3
|
+
file: data_sources/node_info_full.csv
|
4
|
+
|
5
|
+
widgets:
|
6
|
+
- id: node_info_full
|
7
|
+
type: data/table2
|
8
|
+
title: Node Info
|
9
|
+
data_source:
|
10
|
+
name: node_info_fl
|
11
|
+
slice:
|
12
|
+
slice_column: nodeID
|
13
|
+
event:
|
14
|
+
name: "graph.network/nodes.selected"
|
15
|
+
key: id
|
16
|
+
columns:
|
17
|
+
- field: property
|
18
|
+
#name: Name
|
19
|
+
- field: value
|
20
|
+
#name: Value
|
21
|
+
|
22
|
+
margin:
|
23
|
+
left: 5
|
@@ -0,0 +1,23 @@
|
|
1
|
+
data_sources:
|
2
|
+
- id: node_info_gt
|
3
|
+
file: data_sources/node_info_groundtruth.csv
|
4
|
+
|
5
|
+
widgets:
|
6
|
+
- id: node_info_groundtruth
|
7
|
+
type: data/table2
|
8
|
+
title: Node Info
|
9
|
+
data_source:
|
10
|
+
name: node_info_gt
|
11
|
+
slice:
|
12
|
+
slice_column: nodeID
|
13
|
+
event:
|
14
|
+
name: "graph.network/nodes.selected"
|
15
|
+
key: id
|
16
|
+
columns:
|
17
|
+
- field: property
|
18
|
+
#name: Name
|
19
|
+
- field: value
|
20
|
+
#name: Value
|
21
|
+
|
22
|
+
margin:
|
23
|
+
left: 5
|
@@ -0,0 +1,23 @@
|
|
1
|
+
data_sources:
|
2
|
+
- id: node_info_ic
|
3
|
+
file: data_sources/node_info_incomplete.csv
|
4
|
+
|
5
|
+
widgets:
|
6
|
+
- id: node_info_incomplete
|
7
|
+
type: data/table2
|
8
|
+
title: Node Info
|
9
|
+
data_source:
|
10
|
+
name: node_info_ic
|
11
|
+
slice:
|
12
|
+
slice_column: nodeID
|
13
|
+
event:
|
14
|
+
name: "graph.network_ic/nodes.selected"
|
15
|
+
key: id
|
16
|
+
columns:
|
17
|
+
- field: property
|
18
|
+
#name: Name
|
19
|
+
- field: value
|
20
|
+
#name: Value
|
21
|
+
|
22
|
+
margin:
|
23
|
+
left: 5
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
widgets:
|
3
|
+
- id: main
|
4
|
+
name: Home
|
5
|
+
top_level: true
|
6
|
+
priority: 900
|
7
|
+
type: layout/two_columns/50_50
|
8
|
+
left:
|
9
|
+
- name: Introduction
|
10
|
+
type: text
|
11
|
+
content:
|
12
|
+
url: file:content:introduction.md
|
13
|
+
right:
|
14
|
+
- network_groundtruth
|
15
|
+
|
16
|
+
- id: full
|
17
|
+
name: Full
|
18
|
+
top_level: true
|
19
|
+
priority: 800
|
20
|
+
type: layout/two_columns/66_33
|
21
|
+
left:
|
22
|
+
- network_full
|
23
|
+
right:
|
24
|
+
- type: layout/one_column
|
25
|
+
widgets:
|
26
|
+
- name: Introduction
|
27
|
+
type: text
|
28
|
+
content:
|
29
|
+
url: file:content:full_network.md
|
30
|
+
- node_info_full
|
31
|
+
- network_groundtruth_small
|
32
|
+
|
33
|
+
- id: incomplete
|
34
|
+
name: Incomplete
|
35
|
+
top_level: true
|
36
|
+
priority: 700
|
37
|
+
type: layout/two_columns/66_33
|
38
|
+
left:
|
39
|
+
- network_incomplete
|
40
|
+
right:
|
41
|
+
- type: layout/one_column
|
42
|
+
widgets:
|
43
|
+
- name: Introduction
|
44
|
+
type: text
|
45
|
+
content:
|
46
|
+
url: file:content:incomplete_network.md
|
47
|
+
- node_info_incomplete
|
48
|
+
- network_groundtruth_small
|
49
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
title: Introduction
|
2
|
+
|
3
|
+
|
4
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin
|
5
|
+
sollicitudin nibh eu ligula lobortis ornare. Sed nibh nibh,
|
6
|
+
ullamcorper at vehicula ac, molestie ac nunc. Duis sodales, nisi vel
|
7
|
+
pellentesque imperdiet, nisi massa accumsan lorem, gravida scelerisque
|
8
|
+
velit est vitae eros. Suspendisse eu lacinia elit.
|
9
|
+
|
10
|
+
|
11
|
+
Suspendisse laoreet, lacus quis dignissim volutpat, dolor augue convallis lectus,
|
12
|
+
ac consectetur yyyy sem iaculis diam. Donec iaculis mattis iaculis.
|
13
|
+
Curabitur ut nisl in sapien semper ullamcorper in id turpis. Vivamus
|
14
|
+
sed sapien justo, ac scelerisque nibh. Sed eget quam velit. Lorem
|
15
|
+
ipsum dolor sit amet, consectetur adipiscing elit.
|
16
|
+
|
17
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/omf-web/thin/server.rb
CHANGED
@@ -23,6 +23,13 @@ module OMF::Web
|
|
23
23
|
pre_parse: lambda do |p, runner|
|
24
24
|
p.on("--config CONF_FILE", "File holding description of web site") {|f| runner.options[:omf_config_file] = f}
|
25
25
|
p.on("--top-dir DIR", "Directory to start from for relative data paths [directory of config file]") {|td| @top_dir = td }
|
26
|
+
p.on("--example [EXAMPLE]", "Run an example [#{list_of_examples.join(', ')}]") do |e|
|
27
|
+
unless e
|
28
|
+
puts "Available examples: #{list_of_examples.join(', ')}"
|
29
|
+
exit 0
|
30
|
+
end
|
31
|
+
runner.options[:omf_config_file] = "example:#{e}"
|
32
|
+
end
|
26
33
|
end
|
27
34
|
},
|
28
35
|
authentication: {
|
@@ -44,13 +51,16 @@ module OMF::Web
|
|
44
51
|
|
45
52
|
def load_environment(opts)
|
46
53
|
unless cf = opts[:omf_config_file]
|
47
|
-
fatal "Missing config file"
|
54
|
+
fatal "Missing config file '--config'"
|
48
55
|
abort
|
49
56
|
end
|
50
57
|
|
51
58
|
unless File.readable? cf
|
52
|
-
|
53
|
-
|
59
|
+
unless cf2 = check_for_builtin(cf, opts)
|
60
|
+
fatal "Can't read config file '#{cf}'"
|
61
|
+
abort
|
62
|
+
end
|
63
|
+
cf = cf2 # found a builtin config file
|
54
64
|
end
|
55
65
|
|
56
66
|
@cfg_dir = File.dirname(cf)
|
@@ -59,12 +69,43 @@ module OMF::Web
|
|
59
69
|
load_config_file(cf, opts)
|
60
70
|
end
|
61
71
|
|
62
|
-
def
|
63
|
-
|
64
|
-
|
72
|
+
def check_for_builtin(cf, opts)
|
73
|
+
pa = cf.split(':')
|
74
|
+
unless pa.length == 2 && pa[0] == 'example'
|
75
|
+
return nil
|
76
|
+
end
|
77
|
+
path = File.join(@top_dir, 'example', pa[1])
|
78
|
+
if File.directory? path
|
79
|
+
dir = path
|
80
|
+
path = File.join(dir, "#{pa[1]}.yaml")
|
81
|
+
unless File.readable? path
|
82
|
+
# check .yml
|
83
|
+
path = File.join(dir, "#{pa[1]}.yml")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
unless File.readable?(path)
|
87
|
+
da = list_of_examples
|
88
|
+
ex = pa[1].split('/')[0]
|
89
|
+
if da.include? ex
|
90
|
+
ya = Dir.glob(File.join(@top_dir, 'example', ex, '*.yaml')).map do |fn|
|
91
|
+
File.basename(fn)
|
92
|
+
end
|
93
|
+
fatal "Unknown config file. Did you mean '#{ya.join(', ')}'?"
|
94
|
+
else
|
95
|
+
fatal "Unknown example '#{}'. Did you mean '#{da.join(', ')}'?"
|
96
|
+
end
|
65
97
|
abort
|
66
98
|
end
|
99
|
+
return path
|
100
|
+
end
|
67
101
|
|
102
|
+
def list_of_examples()
|
103
|
+
Dir.entries(File.join(@top_dir, 'example')).select do |n|
|
104
|
+
!(n == 'NOT_WORKING' || n.start_with?('.'))
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def load_config_file(cf, opts)
|
68
109
|
debug "Loading config file '#{cf}'"
|
69
110
|
cfg = _rec_sym_keys(YAML.load_file(cf))
|
70
111
|
|
data/lib/omf-web/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -417,16 +417,39 @@ files:
|
|
417
417
|
- example/simple/sample.sql
|
418
418
|
- example/simple/simple.yaml
|
419
419
|
- example/simple/simple_dynamic.yaml
|
420
|
-
- example/topo_discovery/
|
421
|
-
- example/topo_discovery/data_sources/
|
422
|
-
- example/topo_discovery/data_sources/
|
423
|
-
- example/topo_discovery/data_sources/
|
424
|
-
- example/topo_discovery/data_sources/
|
425
|
-
- example/topo_discovery/
|
426
|
-
- example/topo_discovery/
|
427
|
-
- example/topo_discovery/
|
428
|
-
- example/topo_discovery/
|
429
|
-
- example/topo_discovery/
|
420
|
+
- example/topo_discovery/Gemfile
|
421
|
+
- example/topo_discovery/data_sources/links_full.csv
|
422
|
+
- example/topo_discovery/data_sources/links_groundtruth.csv
|
423
|
+
- example/topo_discovery/data_sources/links_incomplete.csv
|
424
|
+
- example/topo_discovery/data_sources/node_info_full.csv
|
425
|
+
- example/topo_discovery/data_sources/node_info_groundtruth.csv
|
426
|
+
- example/topo_discovery/data_sources/node_info_incomplete.csv
|
427
|
+
- example/topo_discovery/data_sources/nodes_full.csv
|
428
|
+
- example/topo_discovery/data_sources/nodes_groundtruth.csv
|
429
|
+
- example/topo_discovery/data_sources/nodes_incomplete.csv
|
430
|
+
- example/topo_discovery/data_sources/truth.sh
|
431
|
+
- example/topo_discovery/docs/full_network.md
|
432
|
+
- example/topo_discovery/docs/incomplete_network.md
|
433
|
+
- example/topo_discovery/docs/introduction.md
|
434
|
+
- example/topo_discovery/topo_discovery.yaml
|
435
|
+
- example/topo_discovery/widgets_combined/network_full.yaml
|
436
|
+
- example/topo_discovery/widgets_combined/network_groundtruth.yaml
|
437
|
+
- example/topo_discovery/widgets_combined/network_groundtruth_small.yaml
|
438
|
+
- example/topo_discovery/widgets_combined/network_incomplete.yaml
|
439
|
+
- example/topo_discovery/widgets_combined/node_info_full.yaml
|
440
|
+
- example/topo_discovery/widgets_combined/node_info_groundtruth.yaml
|
441
|
+
- example/topo_discovery/widgets_combined/node_info_incomplete.yaml
|
442
|
+
- example/topo_discovery/widgets_combined/tabs.yaml
|
443
|
+
- example/topo_discovery2/data_sources/links.csv
|
444
|
+
- example/topo_discovery2/data_sources/links2.csv
|
445
|
+
- example/topo_discovery2/data_sources/node_info.csv
|
446
|
+
- example/topo_discovery2/data_sources/nodes.csv
|
447
|
+
- example/topo_discovery2/data_sources/nodes2.csv
|
448
|
+
- example/topo_discovery2/introduction.md
|
449
|
+
- example/topo_discovery2/topo_discovery_simple.yaml
|
450
|
+
- example/topo_discovery2/topo_discovery_simple2.yaml
|
451
|
+
- example/topo_discovery2/widgets/network.yaml
|
452
|
+
- example/topo_discovery2/widgets/node_info.yaml
|
430
453
|
- lib/irods4r.rb
|
431
454
|
- lib/irods4r/directory.rb
|
432
455
|
- lib/irods4r/file.rb
|