# HG changeset patch # User igor # Date 1190399368 -10800 # Node ID 87f19c6d1514d9ceb493a6ff5ced242a8f26b164 # Parent d22ff6f55dc511ee178638146658ff84bf7a4084 redrawing bridge state diff -r d22ff6f55dc5 -r 87f19c6d1514 xentaur.py --- a/xentaur.py Fri Sep 21 20:48:40 2007 +0300 +++ b/xentaur.py Fri Sep 21 21:29:28 2007 +0300 @@ -9,6 +9,8 @@ xen_config_name='fabergeN' exec 'from '+xen_config_name+' import bridges,vbridges_table, hidden_bridges, domains, broken_links, temporary_links, domain_types' +bridges_turned_down=[] + from IPython.Shell import IPShellEmbed @@ -85,6 +87,15 @@ i+=1 return node+" [label=\" "+node+"\",shapefile=\"shapes/all/"+domain_type[node]+".png\",fontcolor=navy,fontsize=14]" +def graph_bridge(bridge): + if bridge in hidden_bridges: + return "" + if 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) + + def graph(): nodelist="" bridgelist="" @@ -95,7 +106,7 @@ nodelist=";\n ".join(map(graph_node,nodes)) if nodelist: nodelist += ";" - bridgelist=";\n ".join(set(bridges)-set(hidden_bridges)) + bridgelist=";\n ".join(map(graph_bridge,bridges)) if bridgelist: bridgelist += ";" links=[] @@ -203,13 +214,23 @@ """ Turn the bridge down """ - run_command("sudo ip link set %s down" % bridge) + if bridge in bridges_turned_down: + print "Bridge %s is turned down already" % (bridge) + else: + bridges_turned_down.append(bridge) + run_command("sudo ip link set %s down" % bridge) + autoredraw() def bridge_up(bridge): """ Turn the bridge up """ - run_command("sudo ip link set %s up" % bridge) + if not (bridge in bridges_turned_down): + print "Bridge %s is turned up already" % (bridge) + else: + bridges_turned_down.remove(bridge) + run_command("sudo ip link set %s up" % bridge) + autoredraw() def show_bridge(bridge): """ @@ -273,6 +294,7 @@ def dump_start(bridge, filter=""): + run_command("sudo tcpdump -w xentaur.dump -i %s %s" % (bridge,filter)) return 0 def dump_stop():