WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH 2 of 2] CP-1592: interface-reconfigure: Configure netwo

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 2 of 2] CP-1592: interface-reconfigure: Configure network device MTU from Network.MTU field
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Wed, 24 Feb 2010 10:50:49 +0000
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Delivery-date: Wed, 24 Feb 2010 02:51:05 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1267008647@xxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>