xentaur
diff xentaur.py @ 23:6bb2a29e91be
interfaces connection and disconnection
author | igor |
---|---|
date | Fri Sep 21 16:01:04 2007 +0300 (2007-09-21) |
parents | c4a092e32ee1 |
children | fcd08a4f3216 |
line diff
1.1 --- a/xentaur.py Fri Sep 21 13:16:28 2007 +0300 1.2 +++ b/xentaur.py Fri Sep 21 16:01:04 2007 +0300 1.3 @@ -25,6 +25,12 @@ 1.4 #run(cmds[0],*cmds[1:]) 1.5 run("/bin/sh", "-c", line) 1.6 1.7 +def run_command_return_stdout(line): 1.8 + p = os.popen(line) 1.9 + output = p.read() 1.10 + p.close() 1.11 + return output 1.12 + 1.13 def create_bridges_script(): 1.14 unbound_bridges=bridges 1.15 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)) 1.16 @@ -175,6 +181,12 @@ 1.17 xentaur {start|stop|start-bridges|start-domains|stop-domains|screen|graph} 1.18 """ 1.19 1.20 +#----------------------------------------------------------------------- 1.21 +# DOMAINS 1.22 + 1.23 +def get_domain_id(domain): 1.24 + return run_command_return_stdout("sudo xm list | awk '{if ($1 == \"'%s'\") print $2}'" % domain).rstrip("\n") 1.25 + 1.26 1.27 #----------------------------------------------------------------------- 1.28 # BRIDGES and IFACES 1.29 @@ -197,6 +209,34 @@ 1.30 """ 1.31 run_command("sudo ip link show %s" % bridge) 1.32 1.33 + 1.34 +def int_disconnect(domain, int_number): 1.35 + """ 1.36 + Disconnect the interface with the number <int_number> 1.37 + of the domain <domain> from the bridge to which 1.38 + it is connected 1.39 + """ 1.40 + dom_id=get_domain_id(domain) 1.41 + bridge=vbridges_table[domain][int_number] 1.42 + if not bridge: 1.43 + print "Interface %s of the %s domain is not connected" % (int_number, domain) 1.44 + return 1 1.45 + run_command("sudo brctl delif %s vif%s.%s" % (bridge, dom_id, int_number)) 1.46 + vbridges_table[domain][int_number]='' 1.47 + 1.48 +def int_connect(domain, int_number, bridge): 1.49 + """ 1.50 + Connect the interface with the number <int_number> 1.51 + of the domain <domain> the the bridge <bridge> 1.52 + """ 1.53 + dom_id=get_domain_id(domain) 1.54 + 1.55 + if vbridges_table[domain][int_number]: 1.56 + print "Interface %s of the %s domain is connected already to the %s bridge" % (int_number, domain, vbridges_table[domain][int_number]) 1.57 + return 1 1.58 + run_command("sudo brctl addif %s vif%s.%s" % (bridge, dom_id, int_number)) 1.59 + vbridges_table[domain][int_number]=bridge 1.60 + 1.61 #----------------------------------------------------------------------- 1.62 1.63