GUI -- Simplified setRadio() api. Other minor cleanup. Added test topology data files.
diff --git a/web/gui/src/main/webapp/json/topoTest_1.json b/web/gui/src/main/webapp/json/topoTest_1.json
new file mode 100644
index 0000000..052e126
--- /dev/null
+++ b/web/gui/src/main/webapp/json/topoTest_1.json
@@ -0,0 +1,367 @@
+{
+ "comment": [
+ "2 links removed from base",
+ " ff07 - ff09 ",
+ " ff01 - 0001 "
+ ],
+ "devices": [
+ {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff02",
+ "FF:FF:FF:FF:FF:02",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff07",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff07",
+ "FF:FF:FF:FF:FF:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff06",
+ "FF:FF:FF:FF:FF:06",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0007",
+ "FF:FF:FF:FF:00:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff05",
+ "FF:FF:FF:FF:FF:05",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0009",
+ "FF:FF:FF:FF:00:09",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff04",
+ "FF:FF:FF:FF:FF:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff000A",
+ "FF:FF:FF:FF:00:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0001",
+ "FF:FF:FF:FF:00:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff01",
+ "FF:FF:FF:FF:FF:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0004",
+ "FF:FF:FF:FF:00:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff0A",
+ "FF:FF:FF:FF:FF:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff09",
+ "FF:FF:FF:FF:FF:09",
+ "?"
+ ]
+ }
+ ],
+ "links": [
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ }
+ ],
+ "hosts": [
+ {
+ "id": "00:00:00:00:00:03/-1",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.3",
+ "00:00:00:00:00:03"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:04/-1",
+ "cp": {
+ "device": "of:0000ffffffff0004",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.4",
+ "00:00:00:00:00:04"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.10",
+ "00:00:00:00:00:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:09/-1",
+ "cp": {
+ "device": "of:0000ffffffff0009",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.9",
+ "00:00:00:00:00:09"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.7",
+ "00:00:00:00:00:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:01/-1",
+ "cp": {
+ "device": "of:0000ffffffff0001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ]
+ }
+ ]
+}
diff --git a/web/gui/src/main/webapp/json/topoTest_2.json b/web/gui/src/main/webapp/json/topoTest_2.json
new file mode 100644
index 0000000..0b0802f
--- /dev/null
+++ b/web/gui/src/main/webapp/json/topoTest_2.json
@@ -0,0 +1,372 @@
+{
+ "comment": [
+ "1 packet switch removed from base",
+ " 0007 "
+ ],
+ "devices": [
+ {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff02",
+ "FF:FF:FF:FF:FF:02",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff07",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff07",
+ "FF:FF:FF:FF:FF:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff06",
+ "FF:FF:FF:FF:FF:06",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff05",
+ "FF:FF:FF:FF:FF:05",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0009",
+ "FF:FF:FF:FF:00:09",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff04",
+ "FF:FF:FF:FF:FF:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff000A",
+ "FF:FF:FF:FF:00:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0001",
+ "FF:FF:FF:FF:00:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff01",
+ "FF:FF:FF:FF:FF:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0004",
+ "FF:FF:FF:FF:00:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff0A",
+ "FF:FF:FF:FF:FF:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff09",
+ "FF:FF:FF:FF:FF:09",
+ "?"
+ ]
+ }
+ ],
+ "links": [
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0001",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff09",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ }
+ ],
+ "hosts": [
+ {
+ "id": "00:00:00:00:00:03/-1",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.3",
+ "00:00:00:00:00:03"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:04/-1",
+ "cp": {
+ "device": "of:0000ffffffff0004",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.4",
+ "00:00:00:00:00:04"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.10",
+ "00:00:00:00:00:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:09/-1",
+ "cp": {
+ "device": "of:0000ffffffff0009",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.9",
+ "00:00:00:00:00:09"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.7",
+ "00:00:00:00:00:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:01/-1",
+ "cp": {
+ "device": "of:0000ffffffff0001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ]
+ }
+ ]
+}
diff --git a/web/gui/src/main/webapp/json/topoTest_3.json b/web/gui/src/main/webapp/json/topoTest_3.json
new file mode 100644
index 0000000..24fbba7
--- /dev/null
+++ b/web/gui/src/main/webapp/json/topoTest_3.json
@@ -0,0 +1,372 @@
+{
+ "comment": [
+ "1 optical switch removed from base",
+ " ff07 "
+ ],
+ "devices": [
+ {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff02",
+ "FF:FF:FF:FF:FF:02",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff06",
+ "FF:FF:FF:FF:FF:06",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0007",
+ "FF:FF:FF:FF:00:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff05",
+ "FF:FF:FF:FF:FF:05",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0009",
+ "FF:FF:FF:FF:00:09",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff04",
+ "FF:FF:FF:FF:FF:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff000A",
+ "FF:FF:FF:FF:00:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0001",
+ "FF:FF:FF:FF:00:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff01",
+ "FF:FF:FF:FF:FF:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0004",
+ "FF:FF:FF:FF:00:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff0A",
+ "FF:FF:FF:FF:FF:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff09",
+ "FF:FF:FF:FF:FF:09",
+ "?"
+ ]
+ }
+ ],
+ "links": [
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0001",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff09",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ }
+ ],
+ "hosts": [
+ {
+ "id": "00:00:00:00:00:03/-1",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.3",
+ "00:00:00:00:00:03"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:04/-1",
+ "cp": {
+ "device": "of:0000ffffffff0004",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.4",
+ "00:00:00:00:00:04"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.10",
+ "00:00:00:00:00:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:09/-1",
+ "cp": {
+ "device": "of:0000ffffffff0009",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.9",
+ "00:00:00:00:00:09"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.7",
+ "00:00:00:00:00:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:01/-1",
+ "cp": {
+ "device": "of:0000ffffffff0001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ]
+ }
+ ]
+}
diff --git a/web/gui/src/main/webapp/json/topoTest_4.json b/web/gui/src/main/webapp/json/topoTest_4.json
new file mode 100644
index 0000000..6e5e22f
--- /dev/null
+++ b/web/gui/src/main/webapp/json/topoTest_4.json
@@ -0,0 +1,415 @@
+{
+ "comment": [
+ "3 hosts added to base",
+ " 2 to 000A, 1 to 0007 "
+ ],
+ "devices": [
+ {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff02",
+ "FF:FF:FF:FF:FF:02",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff07",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff07",
+ "FF:FF:FF:FF:FF:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff06",
+ "FF:FF:FF:FF:FF:06",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0007",
+ "FF:FF:FF:FF:00:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff05",
+ "FF:FF:FF:FF:FF:05",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0009",
+ "FF:FF:FF:FF:00:09",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff04",
+ "FF:FF:FF:FF:FF:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff000A",
+ "FF:FF:FF:FF:00:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0001",
+ "FF:FF:FF:FF:00:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff01",
+ "FF:FF:FF:FF:FF:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0004",
+ "FF:FF:FF:FF:00:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff0A",
+ "FF:FF:FF:FF:FF:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff09",
+ "FF:FF:FF:FF:FF:09",
+ "?"
+ ]
+ }
+ ],
+ "links": [
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0001",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff09",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ }
+ ],
+ "hosts": [
+ {
+ "id": "00:00:00:00:00:03/-1",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.3",
+ "00:00:00:00:00:03"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:04/-1",
+ "cp": {
+ "device": "of:0000ffffffff0004",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.4",
+ "00:00:00:00:00:04"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.10",
+ "00:00:00:00:00:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:65:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 101
+ },
+ "labels": [
+ "10.0.0.101",
+ "00:00:00:00:65:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:66:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 102
+ },
+ "labels": [
+ "10.0.0.102",
+ "00:00:00:00:66:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:09/-1",
+ "cp": {
+ "device": "of:0000ffffffff0009",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.9",
+ "00:00:00:00:00:09"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.7",
+ "00:00:00:00:00:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:67:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 103
+ },
+ "labels": [
+ "10.0.0.73",
+ "00:00:00:00:67:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:01/-1",
+ "cp": {
+ "device": "of:0000ffffffff0001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ]
+ }
+ ]
+}
diff --git a/web/gui/src/main/webapp/json/topoTest_base.json b/web/gui/src/main/webapp/json/topoTest_base.json
new file mode 100644
index 0000000..24f1e6c
--- /dev/null
+++ b/web/gui/src/main/webapp/json/topoTest_base.json
@@ -0,0 +1,378 @@
+{
+ "devices": [
+ {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff02",
+ "FF:FF:FF:FF:FF:02",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff07",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff07",
+ "FF:FF:FF:FF:FF:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff06",
+ "FF:FF:FF:FF:FF:06",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0007",
+ "FF:FF:FF:FF:00:07",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff05",
+ "FF:FF:FF:FF:FF:05",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0009",
+ "FF:FF:FF:FF:00:09",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff04",
+ "FF:FF:FF:FF:FF:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff000A",
+ "FF:FF:FF:FF:00:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0001",
+ "FF:FF:FF:FF:00:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff01",
+ "FF:FF:FF:FF:FF:01",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "0000ffffffff0004",
+ "FF:FF:FF:FF:00:04",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff0A",
+ "FF:FF:FF:FF:FF:0A",
+ "?"
+ ]
+ },
+ {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "0000ffffffffff09",
+ "FF:FF:FF:FF:FF:09",
+ "?"
+ ]
+ }
+ ],
+ "links": [
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0001",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff09",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "type": "optical",
+ "linkWidth": 2
+ },
+ {
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "type": "optical",
+ "linkWidth": 2
+ }
+ ],
+ "hosts": [
+ {
+ "id": "00:00:00:00:00:03/-1",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.3",
+ "00:00:00:00:00:03"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:04/-1",
+ "cp": {
+ "device": "of:0000ffffffff0004",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.4",
+ "00:00:00:00:00:04"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:0A/-1",
+ "cp": {
+ "device": "of:0000ffffffff000A",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.10",
+ "00:00:00:00:00:0A"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:09/-1",
+ "cp": {
+ "device": "of:0000ffffffff0009",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.9",
+ "00:00:00:00:00:09"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:07/-1",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.7",
+ "00:00:00:00:00:07"
+ ]
+ },
+ {
+ "id": "00:00:00:00:00:01/-1",
+ "cp": {
+ "device": "of:0000ffffffff0001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ]
+ }
+ ]
+}
diff --git a/web/gui/src/main/webapp/onos2.js b/web/gui/src/main/webapp/onos2.js
index f509757..427a23f 100644
--- a/web/gui/src/main/webapp/onos2.js
+++ b/web/gui/src/main/webapp/onos2.js
@@ -50,7 +50,10 @@
},
built = false,
errorCount = 0,
- keyHandler = {};
+ keyHandler = {
+ fn: null,
+ map: {}
+ };
// DOM elements etc.
var $view,
@@ -258,50 +261,56 @@
}
// generate 'unique' id by prefixing view id
- function uid(view, id) {
+ function makeUid(view, id) {
return view.vid + '-' + id;
}
// restore id by removing view id prefix
- function unUid(view, uid) {
+ function unmakeUid(view, uid) {
var re = new RegExp('^' + view.vid + '-');
return uid.replace(re, '');
}
- function setRadioButtons(vid, btnSet, callback) {
+ function setRadioButtons(vid, btnSet) {
var view = views[vid],
btnG;
// lazily create the buttons...
if (!(btnG = view.radioButtons)) {
btnG = d3.select(document.createElement('div'));
+ btnG.buttonDef = {};
btnSet.forEach(function (btn, i) {
var bid = btn.id || 'b' + i,
txt = btn.text || 'Button #' + i,
- b = btnG.append('span')
+ uid = makeUid(view, bid),
+ button = btnG.append('span')
.attr({
- id: uid(view, bid),
+ id: uid,
class: 'radio'
})
.text(txt);
+
+ btnG.buttonDef[uid] = btn;
+
if (i === 0) {
- b.classed('active', true);
+ button.classed('active', true);
}
});
btnG.selectAll('span')
.on('click', function (d) {
- var btn = d3.select(this),
- bid = btn.attr('id'),
- act = btn.classed('active');
+ var button = d3.select(this),
+ uid = button.attr('id'),
+ btn = btnG.buttonDef[uid],
+ act = button.classed('active');
if (!act) {
- $mastRadio.selectAll('span')
- .classed('active', false);
- btn.classed('active', true);
-
- callback(view.token(), unUid(view, bid));
+ btnG.selectAll('span').classed('active', false);
+ button.classed('active', true);
+ if (isF(btn.cb)) {
+ btn.cb(view.token(), btn);
+ }
}
});
@@ -479,8 +488,8 @@
return $(this.$div.node()).height();
},
- setRadio: function (btnSet, cb) {
- setRadioButtons(this.vid, btnSet, cb);
+ setRadio: function (btnSet) {
+ setRadioButtons(this.vid, btnSet);
},
setKeys: function (keyArg) {
@@ -488,7 +497,7 @@
},
uid: function (id) {
- return uid(this, id);
+ return makeUid(this, id);
}
// TODO: consider schedule, clearTimer, etc.
diff --git a/web/gui/src/main/webapp/sampleKeys.js b/web/gui/src/main/webapp/sampleKeys.js
index a99d6a7..354c926 100644
--- a/web/gui/src/main/webapp/sampleKeys.js
+++ b/web/gui/src/main/webapp/sampleKeys.js
@@ -23,7 +23,7 @@
(function (onos) {
'use strict';
- var keyDispatch = {
+ var keyDispatch = {
Z: keyUndo,
X: keyCut,
C: keyCopy,
diff --git a/web/gui/src/main/webapp/sampleRadio.js b/web/gui/src/main/webapp/sampleRadio.js
index 4d362a9..92df369 100644
--- a/web/gui/src/main/webapp/sampleRadio.js
+++ b/web/gui/src/main/webapp/sampleRadio.js
@@ -23,33 +23,21 @@
(function (onos) {
'use strict';
- var data = [ 'Yo, radio button set...', 'Time to shine' ],
+ var intro = [ 'Yo, radio button set...', 'Time to shine' ],
btnSet = [
- { id: 'b1', text: 'First Button' },
- { id: 'b2', text: 'Second Button' },
- { id: 'b3', text: 'Third Button' }
- ],
- btnLookup = {};
+ { text: 'First Button', cb: cbRadio },
+ { text: 'Second Button', cb: cbRadio },
+ { text: 'Third Button', cb: cbRadio }
+ ];
- btnSet.forEach(function (b) {
- btnLookup[b.id] = b;
- });
-
- // invoked when the view is loaded
- function load(view, ctx) {
- view.setRadio(btnSet, doRadio);
-
- view.$div.selectAll('p')
- .data(data)
- .enter()
- .append('p')
- .text(function (d) { return d; })
- .style('padding', '2px 8px');
+ // radio button callback
+ function cbRadio(view, btn) {
+ write(view, 'You pressed the ' + btn.text);
}
- function doRadio(view, id) {
+ function write(view, msg) {
view.$div.append('p')
- .text('You pressed the ' + btnLookup[id].text)
+ .text(msg)
.style({
'font-size': '10pt',
color: 'green',
@@ -58,6 +46,18 @@
});
}
+ // invoked when the view is loaded
+ function load(view, ctx) {
+ view.setRadio(btnSet);
+
+ view.$div.selectAll('p')
+ .data(intro)
+ .enter()
+ .append('p')
+ .text(function (d) { return d; })
+ .style('padding', '2px 8px');
+ }
+
// == register the view here, with links to lifecycle callbacks
onos.ui.addView('sampleRadio', {
diff --git a/web/gui/src/main/webapp/topo2.js b/web/gui/src/main/webapp/topo2.js
index fcc4bb4..7ac9adc 100644
--- a/web/gui/src/main/webapp/topo2.js
+++ b/web/gui/src/main/webapp/topo2.js
@@ -68,60 +68,131 @@
// radio buttons
var btnSet = [
- { id: 'showAll', text: 'All Layers' },
- { id: 'showPkt', text: 'Packet Only' },
- { id: 'showOpt', text: 'Optical Only' }
- ];
+ { text: 'All Layers', cb: showAllLayers },
+ { text: 'Packet Only', cb: showPacketLayer },
+ { text: 'Optical Only', cb: showOpticalLayer }
+ ];
+
+ // key bindings
+ var keyDispatch = {
+ Q: getUpdatedNetworkData,
+ B: toggleBg,
+ G: toggleLayout,
+ L: cycleLabels,
+ P: togglePorts,
+ U: unpin
+ };
// state variables
- var svg,
- bgImg,
- network = {},
+ var network = {},
selected = {},
highlighted = null,
hovered = null,
viewMode = 'showAll',
portLabelsOn = false;
+ // D3 selections
+ var svg,
+ bgImg,
+ topoG;
// ==============================
- // Private functions
+ // For Debugging / Development
- // set the size of the SVG layer (or other element) to that of the view
- function setSize(view, el) {
- var thing = el || svg;
- thing.attr({
- width: view.width(),
- height: view.height()
- });
- }
+ var topoPrefix = 'json/topoTest_',
+ lastFlavor = 4,
+ topoBase = true,
+ topoFlavor = 1;
- function doRadio(view, id) {
- showAllLayers();
- if (id === 'showPkt') {
- showPacketLayer();
- } else if (id === 'showOpt') {
- showOpticalLayer();
+ function nextTopo() {
+ if (topoBase) {
+ topoBase = false;
+ } else {
+ topoBase = true;
+ topoFlavor = (topoFlavor === lastFlavor) ? 1 : topoFlavor + 1
}
}
+ // TODO change this to return the live data URL
+ function getTopoUrl() {
+ var suffix = topoBase ? 'base' : topoFlavor;
+ return topoPrefix + suffix + '.json';
+ }
+
+ // ==============================
+ // Key Callbacks
+
+ function getUpdatedNetworkData(view) {
+ nextTopo();
+ getNetworkData(view);
+ }
+
+ function toggleBg() {
+ var vis = bgImg.style('visibility');
+ bgImg.style('visibility', (vis === 'hidden') ? 'visible' : 'hidden');
+ }
+
+ function toggleLayout(view) {
+
+ }
+
+ function cycleLabels(view) {
+
+ }
+
+ function togglePorts(view) {
+
+ }
+
+ function unpin(view) {
+
+ }
+
+ // ==============================
+ // Radio Button Callbacks
+
function showAllLayers() {
// network.node.classed('inactive', false);
// network.link.classed('inactive', false);
// d3.selectAll('svg .port').classed('inactive', false);
// d3.selectAll('svg .portText').classed('inactive', false);
- alert('show all layers');
+ // TODO ...
+ console.log('showAllLayers()');
}
function showPacketLayer() {
- alert('show packet layer');
+ showAllLayers();
+ // TODO ...
+ console.log('showPacketLayer()');
}
function showOpticalLayer() {
- alert('show optical layer');
+ showAllLayers();
+ // TODO ...
+ console.log('showOpticalLayer()');
}
// ==============================
+ // Private functions
+
+ // set the size of the given element to that of the view
+ function setSize(el, view) {
+ el.attr({
+ width: view.width(),
+ height: view.height()
+ });
+ }
+
+
+ function getNetworkData(view) {
+ var url = getTopoUrl();
+
+ // TODO ...
+
+ }
+
+
+ // ==============================
// View life-cycle callbacks
function preload(view, ctx) {
@@ -132,8 +203,9 @@
// NOTE: view.$div is a D3 selection of the view's div
svg = view.$div.append('svg');
- setSize(view);
- svg.append('g')
+ setSize(svg, view);
+
+ topoG = svg.append('g')
.attr('transform', config.force.translate());
// load the background image
@@ -151,13 +223,15 @@
function load(view, ctx) {
- view.setRadio(btnSet, doRadio);
+ view.setRadio(btnSet);
+ view.setKeys(keyDispatch);
+ getNetworkData(view);
}
function resize(view, ctx) {
- setSize(view);
- setSize(view, bgImg);
+ setSize(svg, view);
+ setSize(bgImg, view);
}