[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-API] [PATCH 2 of 2] CP-1592: interface-reconfigure: Configure network device MTU from Network.MTU field
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1267008538 0 # Node ID a91df72fd4bf6329831d3efcae45a5ff55e3ba2e # Parent 219104a041786d7274b15800de5c3efccf0c4f42 CP-1592: interface-reconfigure: Configure network device MTU from Network.MTU field With override via other-config:mtu field on specific objects in the datamodel. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> diff -r 219104a04178 -r a91df72fd4bf scripts/InterfaceReconfigure.py --- a/scripts/InterfaceReconfigure.py Wed Feb 24 10:48:58 2010 +0000 +++ b/scripts/InterfaceReconfigure.py Wed Feb 24 10:48:58 2010 +0000 @@ -295,6 +295,7 @@ _NETWORK_ATTRS = { 'uuid': (_str_to_xml,_str_from_xml), 'bridge': (_str_to_xml,_str_from_xml), + 'MTU': (_str_to_xml,_str_from_xml), 'PIFs': (lambda x, p, t, v: _strlist_to_xml(x, p, 'PIFs', 'PIF', v), lambda n: _strlist_from_xml(n, 'PIFs', 'PIF')), 'other_config': (lambda x, p, t, v: _otherconfig_to_xml(x, p, v, _NETWORK_OTHERCONFIG_ATTRS), @@ -595,13 +596,33 @@ log("Invalid value for ethtool-%s = %s. Must be on|true|off|false." % (opt, val)) return settings,offload -def mtu_setting(oc): +# By default the MTU is taken from the Network.MTU setting for VIF, +# PIF and Bridge. However it is possible to override this by using +# {VIF,PIF,Network}.other-config:mtu. +# +# type parameter is a string describing the object that the oc parameter +# is from. e.g. "PIF", "Network" +def mtu_setting(nw, type, oc): + mtu = None + + nwrec = db().get_network_record(nw) + if nwrec.has_key('MTU'): + mtu = nwrec['MTU'] + else: + mtu = "1500" + if oc.has_key('mtu'): + log("Override Network.MTU setting on bridge %s from %s.MTU is %s" % \ + (nwrec['bridge'], type, mtu)) + mtu = oc['mtu'] + + if mtu is not None: try: - int(oc['mtu']) # Check that the value is an integer - return oc['mtu'] + int(mtu) # Check that the value is an integer + return mtu except ValueError, x: - log("Invalid value for mtu = %s" % oc['mtu']) + log("Invalid value for mtu = %s" % mtu) + return None # diff -r 219104a04178 -r a91df72fd4bf scripts/InterfaceReconfigureBridge.py --- a/scripts/InterfaceReconfigureBridge.py Wed Feb 24 10:48:58 2010 +0000 +++ b/scripts/InterfaceReconfigureBridge.py Wed Feb 24 10:48:58 2010 +0000 @@ -295,6 +295,8 @@ pifrec = db().get_pif_record(pif) + log("Configuring physical interface %s" % pifrec['device']) + f = open_pif_ifcfg(pif) f.write("TYPE=Ethernet\n") @@ -306,7 +308,7 @@ if len(offload): f.write("ETHTOOL_OFFLOAD_OPTS=\"%s\"\n" % str.join(" ", offload)) - mtu = mtu_setting(pifrec['other_config']) + mtu = mtu_setting(pifrec['network'], "PIF", pifrec['other_config']) if mtu: f.write("MTU=%s\n" % mtu) @@ -364,7 +366,7 @@ if len(offload): f.write("ETHTOOL_OFFLOAD_OPTS=\"%s\"\n" % str.join(" ", offload)) - mtu = mtu_setting(pifrec['other_config']) + mtu = mtu_setting(pifrec['network'], "Bond-PIF", pifrec['other_config']) if mtu: f.write("MTU=%s\n" % mtu) @@ -414,7 +416,7 @@ if len(offload): f.write("ETHTOOL_OFFLOAD_OPTS=\"%s\"\n" % str.join(" ", offload)) - mtu = mtu_setting(pifrec['other_config']) + mtu = mtu_setting(pifrec['network'], "VLAN-PIF", pifrec['other_config']) if mtu: f.write("MTU=%s\n" % mtu) diff -r 219104a04178 -r a91df72fd4bf scripts/InterfaceReconfigureVswitch.py --- a/scripts/InterfaceReconfigureVswitch.py Wed Feb 24 10:48:58 2010 +0000 +++ b/scripts/InterfaceReconfigureVswitch.py Wed Feb 24 10:48:58 2010 +0000 @@ -393,11 +393,12 @@ physical_devices = datapath_get_physical_pifs(self._dp) for p in physical_devices: - oc = db().get_pif_record(p)['other_config'] + prec = db().get_pif_record(p) + oc = prec['other_config'] dev = pif_netdev_name(p) - mtu = mtu_setting(oc) + mtu = mtu_setting(prec['network'], "PIF", oc) netdev_up(dev, mtu) diff -r 219104a04178 -r a91df72fd4bf scripts/interface-reconfigure --- a/scripts/interface-reconfigure Wed Feb 24 10:48:58 2010 +0000 +++ b/scripts/interface-reconfigure Wed Feb 24 10:48:58 2010 +0000 @@ -284,7 +284,8 @@ """ pifrec = db().get_pif_record(pif) - nwrec = db().get_network_record(pifrec['network']) + nw = pifrec['network'] + nwrec = db().get_network_record(nw) ipdev = pif_ipdev_name(pif) @@ -319,11 +320,12 @@ if len(offload): f.write("ETHTOOL_OFFLOAD_OPTS=\"%s\"\n" % str.join(" ", offload)) - mtu = mtu_setting(nwrec['other_config']) - if mtu: - f.write("MTU=%s\n" % mtu) + ipdev_configure_static_routes(ipdev, nwrec['other_config'], f) - ipdev_configure_static_routes(ipdev, nwrec['other_config'], f) + mtu = mtu_setting(nw, "Network", nwrec['other_config']) + if mtu: + f.write("MTU=%s\n" % mtu) + if pifrec.has_key('DNS') and pifrec['DNS'] != "": ServerList = pifrec['DNS'].split(",") diff -r 219104a04178 -r a91df72fd4bf scripts/vif --- a/scripts/vif Wed Feb 24 10:48:58 2010 +0000 +++ b/scripts/vif Wed Feb 24 10:48:58 2010 +0000 @@ -62,7 +62,8 @@ { local mtu=$(xenstore-read "${PRIVATE}/MTU" 2>/dev/null) if [ $? -eq 0 -a -n "${mtu}" ]; then - echo "${mtu}" > /sys/class/net/${dev}/mtu + logger -t scripts-vif "Setting ${dev} MTU ${mtu}" + ${IP} link set "${dev}" mtu ${mtu} || logger -t scripts-vif "Failed to ip link set ${dev} mtu ${mtu}. Error code $?" fi } _______________________________________________ xen-api mailing list xen-api@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/mailman/listinfo/xen-api
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |