# HG changeset patch # User igor # Date 1190973795 -10800 # Node ID f71b298798c26eaab5485ca28f3f110be93f0320 # Parent 3245e12b66d5c2cd66902a99e41c0125c048d493 real topologies diff -r 3245e12b66d5 -r f71b298798c2 examples/example1.py --- a/examples/example1.py Tue Sep 25 23:31:23 2007 +0300 +++ b/examples/example1.py Fri Sep 28 13:03:15 2007 +0300 @@ -3,8 +3,8 @@ network='netw' -domains = [ 'qua1', 'qua2', 'dyn3', 'qua4', 'qua5', 'dyn6', ] -domain_types = [ 'quagga', 'quagga', 'xenomips', 'quagga', 'quagga', 'xenomips', ] +domains = [ 'qua1', 'qua2', 'dyn3', 'qua4', 'qua5', 'dyn6', 'cisco1', 'cisco2' ] +domain_types = [ 'quagga', 'quagga', 'xenomips', 'quagga', 'quagga', 'xenomips','cisco', 'cisco' ] bridges = [ 'br1', 'br2', @@ -12,6 +12,7 @@ 'br4', 'br5', 'br6', + 'cat1', ] vbridges_table ={ @@ -22,12 +23,17 @@ 'qua5' : [ 'br4' ], 'dyn6' : [ 'br5', 'br6' ], + 'cisco1' : ['br6','cat1'], + 'cisco2' : ['br6','cat1'], } hidden_bridges = [] broken_links = [] temporary_links = [] +real_bridges=['cat1'] +real_nodes=['cisco1','cisco2'] + N=domains.index(domain) if domain_types[N] == 'quagga': memory = 64 diff -r 3245e12b66d5 -r f71b298798c2 shapes/all/cisco.png Binary file shapes/all/cisco.png has changed diff -r 3245e12b66d5 -r f71b298798c2 shapes/all/real_switch.png Binary file shapes/all/real_switch.png has changed diff -r 3245e12b66d5 -r f71b298798c2 xenomips_vars.py --- a/xenomips_vars.py Tue Sep 25 23:31:23 2007 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ - -N=1 - - diff -r 3245e12b66d5 -r f71b298798c2 xentaur.py --- a/xentaur.py Tue Sep 25 23:31:23 2007 +0300 +++ b/xentaur.py Fri Sep 28 13:03:15 2007 +0300 @@ -2,8 +2,6 @@ import sys,os,time -import xenomips_vars -xenomips_vars.N='1' xentaur_path=os.environ['HOME']+"/xentaur" @@ -39,7 +37,7 @@ return output def create_bridges_script(): - unbound_bridges=bridges + unbound_bridges=set(bridges)-set(real_bridges) create_unbound_bridges="\n".join(map(lambda x: "sudo /usr/sbin/brctl show | awk '{print $1}' | grep -q "+x+" || sudo /usr/sbin/brctl addbr "+x, unbound_bridges)) create_unbound_bridges+="\n"+"\n".join(map(lambda x: "sudo /bin/ip link set "+x+" up", unbound_bridges)) @@ -51,11 +49,13 @@ def create_domains_script(): for domain in domains: - print "sudo /usr/sbin/xm create "+xentaur_path+"/xendomain.py "+" domain="+domain+" network="+network+" && sleep 1 && sudo /usr/sbin/xm sched-credit -d $(sudo /usr/sbin/xm list | grep "+domain+" | awk '{print $2}') -c 10 && sleep 1" + if not domain in real_nodes: + print "sudo /usr/sbin/xm create "+xentaur_path+"/xendomain.py "+" domain="+domain+" network="+network+" && sleep 1 && sudo /usr/sbin/xm sched-credit -d $(sudo /usr/sbin/xm list | grep "+domain+" | awk '{print $2}') -c 10 && sleep 1" def destroy_domains_script(): for domain in domains: - print "sudo /usr/sbin/xm shutdown "+domain + if not domain in real_nodes: + print "sudo /usr/sbin/xm shutdown "+domain def create_screens_script(): N=1 @@ -94,7 +94,9 @@ def graph_bridge(bridge): if bridge in hidden_bridges: return "" - if bridge in bridges_turned_down: + if bridge in real_bridges: + return "%s [shape=none,shapefile=\"shapes/all/real_switch.png\"]" % (bridge) + elif bridge in bridges_turned_down: return "%s [shape=none,shapefile=\"shapes/all/switch_turned_down.png\"]" % (bridge) else: return "%s [shape=none,shapefile=\"shapes/all/switch.png\"]" % (bridge) @@ -232,6 +234,20 @@ dump_start(self.name,filter) +class Domain: + def __init__ (self,name): + self.name=name + def start(self): + return "" + def stop(self): + return "" + def start_commandline(self): + return "" + def graphviz(self): + return "" + def get_domain_id(self): + return get_domain_id(self.name) + #----------------------------------------------------------------------- # DOMAINS @@ -246,6 +262,9 @@ """ Turn the bridge down """ + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 if bridge in bridges_turned_down: print "Bridge %s is turned down already" % (bridge) else: @@ -257,6 +276,9 @@ """ Turn the bridge up """ + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 if not (bridge in bridges_turned_down): print "Bridge %s is turned up already" % (bridge) else: @@ -268,6 +290,9 @@ """ Show the state of the bridge """ + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 run_command("sudo ip link show %s" % bridge) @@ -295,8 +320,11 @@ Connect the interface with the number of the domain to the bridge """ + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 + dom_id=get_domain_id(domain) - if vbridges_table[domain][int_number]: print "Interface %s of the %s domain is connected already to the %s bridge" % (int_number, domain, vbridges_table[domain][int_number]) return 1 @@ -314,6 +342,10 @@ of the domain from the bridge to which it is connected to the bridge """ + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 + int_disconnect(domain, int_number) int_connect(domain, int_number, bridge) @@ -326,6 +358,9 @@ def dump_start(bridge, filter=""): + if bridge in real_bridges: + print "Bridge %s is a real bridge" % (bridge) + return -1 try: print "Writing dump... (press Ctrl-C to stop)" run_command("sudo tcpdump -w xentaur.dump -i %s %s > /dev/null 2>&1 " % (bridge,filter))