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 3 of 7] [PATCH] xenserver: Restore XS5.5 compatibility

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 3 of 7] [PATCH] xenserver: Restore XS5.5 compatibility for vif script
From: David Scott <dave.scott@xxxxxxxxxxxxx>
Date: Thu, 8 Jul 2010 14:31:44 +0100
Delivery-date: Thu, 08 Jul 2010 06:49:52 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1278595901@ely>
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>
References: <patchbomb.1278595901@ely>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
# HG changeset patch
# User Ben Pfaff <blp@xxxxxxxxxx>
# Date 1278595885 -3600
# Node ID 2bcd0bfcb66e53c3b88e8db0911e0f82247fdef5
# Parent  aaeba1119fafdb49f821244d51f08f36c2178a93
[PATCH] xenserver: Restore XS5.5 compatibility for vif script.

>From c69af19fe8f20b5a3333e54310b1592bc3f6dfd0 Mon Sep 17 00:00:00 2001
Date: Fri, 12 Mar 2010 15:08:18 -0800
XAPI in XenServer 5.5 does not put the vif-uuid or network-uuid into
XenStore, so the vif script needs to query xapi for those attributes in
that case.

Tested with XenServer 5.5.0 update 1 and XenServer 5.5.9 build 29381
(the latter just to make sure I didn't break anything).

Signed-off-by: Ben Pfaff <blp@xxxxxxxxxx>
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 scripts/vif |   49 +++++++++++++++++++++-------------
 1 files changed, 30 insertions(+), 19 deletions(-)

diff -r aaeba1119faf -r 2bcd0bfcb66e scripts/vif
--- a/scripts/vif       Thu Jul 08 14:31:25 2010 +0100
+++ b/scripts/vif       Thu Jul 08 14:31:25 2010 +0100
@@ -25,6 +25,16 @@
 
 vsctl="/usr/bin/ovs-vsctl"
 
+# XAPI before build 29381 (approximately) did not provide some of the
+# data in XenStore that we rely on.
+. /etc/xensource-inventory
+if test "$PRODUCT_VERSION" = "5.5.0" || test "${BUILD_NUMBER%p}" -le 26131
+then
+    xs550=true
+else
+    xs550=false
+fi
+
 handle_promiscuous()
 {
     local arg=$(xenstore-read "${PRIVATE}/other-config/promiscuous" 
2>/dev/null)
@@ -77,8 +87,27 @@
 
 handle_vswitch_vif_details()
 {
+    local vm=$(xenstore-read "/local/domain/$DOMID/vm" 2>/dev/null)
+    if [ $? -eq 0 -a -n "${vm}" ] ; then
+       local vm_uuid=$(xenstore-read "$vm/uuid" 2>/dev/null)
+    fi
+    if [ -n "${vm_uuid}" ] ; then
+       set_vif_external_id "xs-vm-uuid" "${vm_uuid}"
+    fi
+
+    local vif_uuid=$(xenstore-read "${PRIVATE}/vif-uuid" 2>/dev/null)
+    if $xs550 && [ -z "${vif_uuid}" ] && [ -n "${vm_uuid}" ]; then
+        vif_uuid=$(xe vif-list --minimal vm-uuid="${vm_uuid}" device=$DEVID)
+    fi
+    if [ -n "${vif_uuid}" ] ; then
+       set_vif_external_id "xs-vif-uuid" "${vif_uuid}"
+    fi
+
     local vif_details=
     local net_uuid=$(xenstore-read "${PRIVATE}/network-uuid" 2>/dev/null)
+    if $xs550 && [ -z "${net_uuid}" ] && [ -n "${vif_uuid}" ]; then
+        net_uuid=$(xe vif-param-get uuid="${vif_uuid}" param-name=network-uuid)
+    fi
     if [ -n "${net_uuid}" ] ; then
        set_vif_external_id "xs-network-uuid" "${net_uuid}"
     fi
@@ -87,26 +116,11 @@
     if [ -n "${address}" ] ; then
        set_vif_external_id "xs-vif-mac" "${address}"
     fi
-
-    local vif_uuid=$(xenstore-read "${PRIVATE}/vif-uuid" 2>/dev/null)
-    if [ -n "${vif_uuid}" ] ; then
-       set_vif_external_id "xs-vif-uuid" "${vif_uuid}"
-    fi
-
-    local vm=$(xenstore-read "/local/domain/$DOMID/vm" 2>/dev/null)
-    if [ $? -eq 0 -a -n "${vm}" ] ; then
-       local vm_uuid=$(xenstore-read "$vm/uuid" 2>/dev/null)
-    fi
-    if [ -n "${vm_uuid}" ] ; then
-       set_vif_external_id "xs-vm-uuid" "${vm_uuid}"
-    fi
 }
 
 xs550_set_internal_network_uuid()
 {
-    . /etc/xensource-inventory
-    if test "$PRODUCT_VERSION" = "5.5.0" || test "${BUILD_NUMBER%p}" -le 26131
-    then
+    if $xs550; then
         # vNetManager needs to know the network UUID(s) associated with each
         # datapath.  Normally interface-reconfigure adds them, but XAPI does
         # not use interface-reconfigure for internal networks. Instead, XAPI
@@ -122,9 +136,6 @@
             logger -t scripts-vif "${bridge} xs-network-uuids ${net_uuid}"
             echo "-- br-set-external-id $bridge xs-network-uuids ${net_uuid}"
         fi
-    else
-        # XAPI after 5.5.0 sets the network external ids itself, via ovs-vsctl.
-        :
     fi
 }
 
 scripts/vif |  49 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 19 deletions(-)


Attachment: xenserver_Restore_XS5.5_compatibility_for_vif_script.patch
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api