Modified BMv2 demo scripts to work with onos.py
Change-Id: Ie6ff318f9aae2cbbeb288ba894e99a57d4d308db
diff --git a/tools/test/topos/bmv2-demo-cfg.json b/tools/test/topos/bmv2-demo-cfg.json
index 4ff2e0d..afdbf5b 100644
--- a/tools/test/topos/bmv2-demo-cfg.json
+++ b/tools/test/topos/bmv2-demo-cfg.json
@@ -7,42 +7,42 @@
}
},
"devices": {
- "bmv2:192.168.57.100:9090#11": {
+ "bmv2:192.168.123.4:9090#11": {
"basic": {
"name": "bmv2:11",
"latitude": 40,
"longitude": -107
}
},
- "bmv2:192.168.57.100:9091#12": {
+ "bmv2:192.168.123.4:9091#12": {
"basic": {
"name": "bmv2:12",
"latitude": 40,
"longitude": -99
}
},
- "bmv2:192.168.57.100:9092#13": {
+ "bmv2:192.168.123.4:9092#13": {
"basic": {
"name": "bmv2:13",
"latitude": 40,
"longitude": -91
}
},
- "bmv2:192.168.57.100:9093#21": {
+ "bmv2:192.168.123.4:9093#21": {
"basic": {
"name": "bmv2:21",
"latitude": 46,
"longitude": -107
}
},
- "bmv2:192.168.57.100:9094#22": {
+ "bmv2:192.168.123.4:9094#22": {
"basic": {
"name": "bmv2:22",
"latitude": 46,
"longitude": -99
}
},
- "bmv2:192.168.57.100:9095#23": {
+ "bmv2:192.168.123.4:9095#23": {
"basic": {
"name": "bmv2:23",
"latitude": 46,
@@ -51,83 +51,83 @@
}
},
"links": {
- "bmv2:192.168.57.100:9090#11/1-bmv2:192.168.57.100:9093#21/1": {
+ "bmv2:192.168.123.4:9090#11/1-bmv2:192.168.123.4:9093#21/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9093#21/1-bmv2:192.168.57.100:9090#11/1": {
+ "bmv2:192.168.123.4:9093#21/1-bmv2:192.168.123.4:9090#11/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9090#11/2-bmv2:192.168.57.100:9093#21/2": {
+ "bmv2:192.168.123.4:9090#11/2-bmv2:192.168.123.4:9093#21/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9093#21/2-bmv2:192.168.57.100:9090#11/2": {
+ "bmv2:192.168.123.4:9093#21/2-bmv2:192.168.123.4:9090#11/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9090#11/3-bmv2:192.168.57.100:9094#22/1": {
+ "bmv2:192.168.123.4:9090#11/3-bmv2:192.168.123.4:9094#22/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9094#22/1-bmv2:192.168.57.100:9090#11/3": {
+ "bmv2:192.168.123.4:9094#22/1-bmv2:192.168.123.4:9090#11/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9090#11/4-bmv2:192.168.57.100:9095#23/1": {
+ "bmv2:192.168.123.4:9090#11/4-bmv2:192.168.123.4:9095#23/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9095#23/1-bmv2:192.168.57.100:9090#11/4": {
+ "bmv2:192.168.123.4:9095#23/1-bmv2:192.168.123.4:9090#11/4": {
"basic": {}
},
- "bmv2:192.168.57.100:9091#12/1-bmv2:192.168.57.100:9093#21/3": {
+ "bmv2:192.168.123.4:9091#12/1-bmv2:192.168.123.4:9093#21/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9093#21/3-bmv2:192.168.57.100:9091#12/1": {
+ "bmv2:192.168.123.4:9093#21/3-bmv2:192.168.123.4:9091#12/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9091#12/2-bmv2:192.168.57.100:9094#22/2": {
+ "bmv2:192.168.123.4:9091#12/2-bmv2:192.168.123.4:9094#22/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9094#22/2-bmv2:192.168.57.100:9091#12/2": {
+ "bmv2:192.168.123.4:9094#22/2-bmv2:192.168.123.4:9091#12/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9091#12/3-bmv2:192.168.57.100:9094#22/3": {
+ "bmv2:192.168.123.4:9091#12/3-bmv2:192.168.123.4:9094#22/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9094#22/3-bmv2:192.168.57.100:9091#12/3": {
+ "bmv2:192.168.123.4:9094#22/3-bmv2:192.168.123.4:9091#12/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9091#12/4-bmv2:192.168.57.100:9095#23/2": {
+ "bmv2:192.168.123.4:9091#12/4-bmv2:192.168.123.4:9095#23/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9095#23/2-bmv2:192.168.57.100:9091#12/4": {
+ "bmv2:192.168.123.4:9095#23/2-bmv2:192.168.123.4:9091#12/4": {
"basic": {}
},
- "bmv2:192.168.57.100:9092#13/1-bmv2:192.168.57.100:9093#21/4": {
+ "bmv2:192.168.123.4:9092#13/1-bmv2:192.168.123.4:9093#21/4": {
"basic": {}
},
- "bmv2:192.168.57.100:9093#21/4-bmv2:192.168.57.100:9092#13/1": {
+ "bmv2:192.168.123.4:9093#21/4-bmv2:192.168.123.4:9092#13/1": {
"basic": {}
},
- "bmv2:192.168.57.100:9092#13/2-bmv2:192.168.57.100:9094#22/4": {
+ "bmv2:192.168.123.4:9092#13/2-bmv2:192.168.123.4:9094#22/4": {
"basic": {}
},
- "bmv2:192.168.57.100:9094#22/4-bmv2:192.168.57.100:9092#13/2": {
+ "bmv2:192.168.123.4:9094#22/4-bmv2:192.168.123.4:9092#13/2": {
"basic": {}
},
- "bmv2:192.168.57.100:9092#13/3-bmv2:192.168.57.100:9095#23/3": {
+ "bmv2:192.168.123.4:9092#13/3-bmv2:192.168.123.4:9095#23/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9095#23/3-bmv2:192.168.57.100:9092#13/3": {
+ "bmv2:192.168.123.4:9095#23/3-bmv2:192.168.123.4:9092#13/3": {
"basic": {}
},
- "bmv2:192.168.57.100:9092#13/4-bmv2:192.168.57.100:9095#23/4": {
+ "bmv2:192.168.123.4:9092#13/4-bmv2:192.168.123.4:9095#23/4": {
"basic": {}
},
- "bmv2:192.168.57.100:9095#23/4-bmv2:192.168.57.100:9092#13/4": {
+ "bmv2:192.168.123.4:9095#23/4-bmv2:192.168.123.4:9092#13/4": {
"basic": {}
}
},
"hosts": {
"00:00:00:00:00:01/-1": {
"basic": {
- "location": "bmv2:192.168.57.100:9090#11/5",
+ "location": "bmv2:192.168.123.4:9090#11/5",
"ips": [
"10.0.0.1"
],
@@ -138,7 +138,7 @@
},
"00:00:00:00:00:02/-1": {
"basic": {
- "location": "bmv2:192.168.57.100:9091#12/5",
+ "location": "bmv2:192.168.123.4:9091#12/5",
"ips": [
"10.0.0.2"
],
@@ -149,7 +149,7 @@
},
"00:00:00:00:00:03/-1": {
"basic": {
- "location": "bmv2:192.168.57.100:9092#13/5",
+ "location": "bmv2:192.168.123.4:9092#13/5",
"ips": [
"10.0.0.3"
],
diff --git a/tools/test/topos/bmv2-demo.py b/tools/test/topos/bmv2-demo.py
index d82a874..2ef6825 100644
--- a/tools/test/topos/bmv2-demo.py
+++ b/tools/test/topos/bmv2-demo.py
@@ -4,23 +4,26 @@
import sys
import argparse
-# Find and import bmv2.py
if 'ONOS_ROOT' not in os.environ:
print "Environment var $ONOS_ROOT not set"
exit()
else:
- sys.path.append(os.environ["ONOS_ROOT"] + "/tools/dev/mininet")
- from bmv2 import ONOSBmv2Switch
+ ONOS_ROOT = os.environ["ONOS_ROOT"]
+ sys.path.append(ONOS_ROOT + "/tools/dev/mininet")
+
+from onos import ONOSCluster, ONOSCLI
+from bmv2 import ONOSBmv2Switch
from itertools import combinations
from time import sleep
+from subprocess import call
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import setLogLevel
from mininet.net import Mininet
from mininet.node import RemoteController, Host
-from mininet.topo import Topo
+from mininet.topo import Topo, SingleSwitchTopo
class ClosTopo(Topo):
@@ -126,39 +129,54 @@
def main(args):
topo = ClosTopo()
- net = Mininet(topo=topo, build=False)
+ if not args.onos_ip:
+ controller = ONOSCluster('c0', 3)
+ onosIp = controller.nodes()[0].IP()
+ else:
+ controller = RemoteController('c0', ip=args.onos_ip, port=args.onos_port)
+ onosIp = args.onos_ip
- net.addController('c0', controller=RemoteController, ip=args.onos_ip, port=args.onos_port)
+ net = Mininet(topo=topo, build=False, controller=[controller])
net.build()
net.start()
- print "Network started..."
+ print "Network started"
- # Generates background traffic (needed for host discovery and bmv2 config swap).
+ # Generate background traffic.
sleep(3)
for (h1, h2) in combinations(net.hosts, 2):
h1.startPingBg(h2)
h2.startPingBg(h1)
+ print "Background ping started"
+
for h in net.hosts:
h.startIperfServer()
- print "Background ping started..."
+ print "Iperf servers started"
# sleep(4)
# print "Starting traffic from h1 to h3..."
# net.hosts[0].startIperfClient(net.hosts[-1], flowBw="200k", numFlows=100, duration=10)
- CLI(net)
+ print "Setting netcfg..."
+ call(("onos-netcfg", onosIp,
+ "%s/tools/test/topos/bmv2-demo-cfg.json" % ONOS_ROOT))
+
+ if not args.onos_ip:
+ ONOSCLI(net)
+ else:
+ CLI(net)
net.stop()
if __name__ == '__main__':
- parser = argparse.ArgumentParser(description='BMv2 mininet demo script (2-stage Clos topology)')
+ parser = argparse.ArgumentParser(
+ description='BMv2 mininet demo script (2-stage Clos topology)')
parser.add_argument('--onos-ip', help='ONOS-BMv2 controller IP address',
- type=str, action="store", required=True)
+ type=str, action="store", required=False)
parser.add_argument('--onos-port', help='ONOS-BMv2 controller port',
type=int, action="store", default=40123)
args = parser.parse_args()