[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-API] [PATCH 17 of 33] interface-reconfigure: Rename some functions to match vswitch version
- Rename get_vlan_slave_of_pif() to pif_get_vlan_slave() - Rename get_vlan_masters_of_pif() to pif_get_vlan_masters() - Rename get_bond_masters_of_pif() to pif_get_bond_masters() - Rename get_bond_slaves_of_pif() to pif_get_bond_slaves() - Add pif_is_bridged and use it. Make bridge_name (renamed to pif_bridge_name) error on non-bridged PIFs. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> diff -r 4b5e8e06b548 -r 8f20f592e3e2 scripts/interface-reconfigure --- a/scripts/interface-reconfigure Fri Dec 18 14:16:32 2009 +0000 +++ b/scripts/interface-reconfigure Fri Dec 18 14:16:32 2009 +0000 @@ -769,17 +769,29 @@ # Bridges # -def bridge_name(pif): - """Return the bridge name associated with pif, or None if network is bridgeless""" +def pif_is_bridged(pif): pifrec = db.get_pif_record(pif) nwrec = db.get_network_record(pifrec['network']) if nwrec['bridge']: # TODO: sanity check that nwrec['bridgeless'] != 'true' + return True + else: + # TODO: sanity check that nwrec['bridgeless'] == 'true' + return False + +def pif_bridge_name(pif): + """Return the bridge name of a pif. + + PIF must be a bridged PIF.""" + pifrec = db.get_pif_record(pif) + + nwrec = db.get_network_record(pifrec['network']) + + if nwrec['bridge']: return nwrec['bridge'] else: - # TODO: sanity check that nwrec['bridgeless'] == 'true' - return None + raise Error("PIF %(uuid)s does not have a bridge name" % pifrec) def load_bonding_driver(): log("Loading bonding driver") @@ -881,7 +893,10 @@ return f -def get_bond_masters_of_pif(pif): +# +# Bonded PIFs +# +def pif_get_bond_masters(pif): """Returns a list of PIFs which are bond masters of this PIF""" pifrec = db.get_pif_record(pif) @@ -901,7 +916,7 @@ return [bond['master'] for bond in bondrecs] -def get_bond_slaves_of_pif(pif): +def pif_get_bond_slaves(pif): """Returns a list of PIFs which make up the given bonded pif.""" pifrec = db.get_pif_record(pif) @@ -953,7 +968,7 @@ if pifrec['MAC'] != "": f.write("MACADDR=%s\n" % pifrec['MAC']) - for slave in get_bond_slaves_of_pif(pif): + for slave in pif_get_bond_slaves(pif): s = configure_physical_interface(slave) s.write("MASTER=%(device)s\n" % pifrec) s.write("SLAVE=yes\n") @@ -981,10 +996,14 @@ f.write('"\n') return f +# +# VLAN PIFs +# + def pif_is_vlan(pif): return db.get_pif_record(pif)['VLAN'] != '-1' -def get_vlan_slave_of_pif(pif): +def pif_get_vlan_slave(pif): """Find the PIF which is the VLAN slave of pif. Returns the 'physical' PIF underneath the a VLAN PIF @pif.""" @@ -1001,7 +1020,7 @@ return vlanrec['tagged_PIF'] -def get_vlan_masters_of_pif(pif): +def pif_get_vlan_masters(pif): """Returns a list of PIFs which are VLANs on top of the given pif.""" pifrec = db.get_pif_record(pif) @@ -1019,7 +1038,7 @@ file. """ - slave = configure_pif(get_vlan_slave_of_pif(pif)) + slave = configure_pif(pif_get_vlan_slave(pif)) f = open_pif_ifcfg(pif) f.write("VLAN=yes\n") @@ -1045,10 +1064,7 @@ else: f = configure_physical_interface(pif) - bridge = bridge_name(pif) - if bridge: - f.write("BRIDGE=%s\n" % bridge) - + f.write("BRIDGE=%s\n" % pif_bridge_name(pif)) f.close() return f @@ -1081,18 +1097,17 @@ if destroy: log("Destroy vlan device %s" % interface) vconfig_rem(interface) - bridge = bridge_name(pif) - if bridge: - bring_down_bridge(bridge, destroy=True) + if pif_is_bridged(pif): + bring_down_bridge(pif_bridge_name(pif), destroy=True) else: return - slave = get_vlan_slave_of_pif(pif) + slave = pif_get_vlan_slave(pif) if db.get_pif_record(slave)['currently_attached']: log("bring_down_interface: vlan slave is currently attached") return - masters = get_vlan_masters_of_pif(slave) + masters = pif_get_vlan_masters(slave) masters = [m for m in masters if m != pif and db.get_pif_record(m)['currently_attached']] if len(masters) > 0: log("bring_down_interface: vlan slave has other masters") @@ -1101,7 +1116,7 @@ log("bring_down_interface: no more masters, bring down vlan slave %s" % pif_netdev_name(slave)) pif = slave else: - vlan_masters = get_vlan_masters_of_pif(pif) + vlan_masters = pif_get_vlan_masters(pif) log("vlan masters of %s - %s" % (db.get_pif_record(pif)['device'], [pif_netdev_name(m) for m in vlan_masters])) if len([m for m in vlan_masters if db.get_pif_record(m)['currently_attached']]) > 0: log("Leaving %s up due to currently attached VLAN masters" % pif_netdev_name(pif)) @@ -1111,11 +1126,10 @@ # Need to bring down bond slaves first since the bond device # must be up to enslave/unenslave. - bond_slaves = get_bond_slaves_of_pif(pif) + bond_slaves = pif_get_bond_slaves(pif) log("bond slaves of %s - %s" % (db.get_pif_record(pif)['device'], [pif_netdev_name(s) for s in bond_slaves])) for slave in bond_slaves: slave_interface = pif_netdev_name(slave) - slave_bridge = bridge_name(slave) if db.get_pif_record(slave)['currently_attached']: log("leave bond slave %s up (currently attached)" % slave_interface) continue @@ -1124,8 +1138,8 @@ # Also destroy the bridge associated with the slave, since # it will carry the MAC address and possibly an IP address # leading to confusion. - if slave_bridge: - bring_down_bridge(slave_bridge, destroy=True) + if pif_is_bridged(slave): + bring_down_bridge(pif_bridge_name(slave), destroy=True) interface = pif_netdev_name(pif) log("Bring interface %s down" % interface) @@ -1133,9 +1147,8 @@ if destroy: destroy_bond_device(pif) - bridge = bridge_name(pif) - if bridge: - bring_down_bridge(bridge, destroy=True) + if pif_is_bridged(pif): + bring_down_bridge(pif_bridge_name(pif), destroy=True) def interface_is_up(pif): try: @@ -1154,7 +1167,7 @@ # VLAN on bond seems to need bond brought up explicitly, but VLAN # on normal device does not. Might as well always bring it up. if pif_is_vlan(pif): - slave = get_vlan_slave_of_pif(pif) + slave = pif_get_vlan_slave(pif) if not interface_is_up(slave): bring_up_interface(slave) @@ -1247,7 +1260,7 @@ if pifrec.has_key('other_config'): oc = pifrec['other_config'] - if ipdev != pif_netdev_name(pif): + if pif_is_bridged(pif): f.write("TYPE=Bridge\n") f.write("DELAY=0\n") f.write("STP=off\n") @@ -1297,7 +1310,7 @@ # because when we are called to bring up an interface with a bond # master, it is implicit that we should bring down that master. - pifs_on_host = [p for p in db.get_all_pifs() if not p in get_bond_masters_of_pif(pif)] + pifs_on_host = [p for p in db.get_all_pifs() if not p in pif_get_bond_masters(pif)] # loop through all the pifs on this host looking for one with # other-config:peerdns = true, and one with @@ -1361,20 +1374,17 @@ f = ipdev_configure_network(pif) - bridge = bridge_name(pif) - - if bridge: + if pif_is_bridged(pif): pf = configure_pif(pif) f.attach_child(pf) f.close() - # if there is a bridge using this pif then bring it down - if bridge: - bring_down_bridge(bridge) + if pif_is_bridged(pif): + bring_down_bridge(pif_bridge_name(pif)) # Bring down any VLAN masters so that we can reconfigure the slave. - vlan_masters = get_vlan_masters_of_pif(pif) + vlan_masters = pif_get_vlan_masters(pif) for master in vlan_masters: name = pif_netdev_name(master) log("action_up: bring down %s" % (name)) @@ -1382,13 +1392,12 @@ # interface-reconfigure is never explicitly called to down a bond master. # However, when we are called to up a slave it is implicit that we are destroying the master. - bond_masters = get_bond_masters_of_pif(pif) + bond_masters = pif_get_bond_masters(pif) for master in bond_masters: - master_bridge = bridge_name(master) # bring down master bring_down_interface(master, destroy=True) - if master_bridge: - bring_down_bridge(master_bridge, destroy=True) + if pif_is_bridged(master): + bring_down_bridge(pif_bridge_name(master), destroy=True) # No masters left - now its safe to reconfigure the slave. bring_down_interface(pif) @@ -1397,8 +1406,8 @@ f.apply() bring_up_interface(pif) - if bridge: - bring_up_bridge(bridge) + if pif_is_bridged(pif): + bring_up_bridge(pif_bridge_name(pif)) # Update /etc/issue (which contains the IP address of the management interface) os.system("/sbin/update-issue") @@ -1419,18 +1428,11 @@ bring_down_interface(pif, destroy=True) def action_rewrite(pif): - pifrec = db.get_pif_record(pif) - f = ipdev_configure_network(pif) - - bridge = bridge_name(pif) - - if bridge: + if pif_is_bridged(pif): pf = configure_pif(pif) f.attach_child(pf) - f.close() - try: f.apply() f.commit() _______________________________________________ xen-api mailing list xen-api@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/mailman/listinfo/xen-api
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |