Problem is just creating network does not create bridge apparently on XenServer 
as the comments on 'enableXenServerNetwork' method indicate. So when 
findOrCreateTunnelNetwork is called to see if the network exists, since network 
object is present across cluster function just returns but bridge is not 
created.

Trick is to create bridge explicitly. Below diff worked for me, but did not 
have time to test it and submit. Will look into it tomorrow.

diff --git 
a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
 
b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index cf5c6d6..a935d3f 100644
--- 
a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ 
b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -900,8 +900,16 @@ public abstract class CitrixResourceBase implements 
ServerResource, HypervisorRe
             dom0vif = VIF.create(conn, vifr);
         }
         // At this stage we surely have a VIF
-        dom0vif.plug(conn);
-        dom0vif.unplug(conn);
+        try {
+            dom0vif.plug(conn);
+        } catch (Exception e) {
+            // ignore fake exception
+        }
+        try {
+            dom0vif.unplug(conn);
+        } catch (Exception e) {
+            // ignore fake exception
+        }
         synchronized (_tmpDom0Vif) {
             _tmpDom0Vif.add(dom0vif);
         }
@@ -923,8 +931,8 @@ public abstract class CitrixResourceBase implements 
ServerResource, HypervisorRe
                 } else {
                     vswitchNw = networks.iterator().next();
                 }
-                if (!is_xcp())
-                    enableXenServerNetwork(conn, vswitchNw, "vswitch", 
"vswitch network");
+
+                enableXenServerNetwork(conn, vswitchNw, "vswitch", "vswitch 
network");
                 _host.vswitchNetwork = vswitchNw;
             }
             return _host.vswitchNetwork;
@@ -963,6 +971,7 @@ public abstract class CitrixResourceBase implements 
ServerResource, HypervisorRe
                 s_logger.debug("### Xen Server network for tunnels created:" + 
nwName);
             } else {
                 nw = networks.iterator().next();
+                enableXenServerNetwork(conn, nw, nwName, "tunnel network for 
account " + key);
                 s_logger.debug("Xen Server network for tunnels found:" + 
nwName);
             }
             return nw;

From: Nguyen Anh Tu <t...@apache.org<mailto:t...@apache.org>>
Date: Saturday, 22 February 2014 12:32 AM
To: "dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>" 
<dev@cloudstack.apache.org<mailto:dev@cloudstack.apache.org>>
Cc: Murali Reddy <murali.re...@citrix.com<mailto:murali.re...@citrix.com>>
Subject: [Discuss] GRE Tunnel issue on XenServer 6.2

Hi guys,

Some people (Florin and Benoit) complain about the GRE tunnel issue on 
XenServer 6.2. Actually it has not been fixed completely, although Murali 
submitted a patch to bypass without any exception. Personally I stuck in how 
can we make XenServer 6.2 HOSTs recognize the GRE network created by an another 
HOST in one cluster. I confirm the "enableXenServer" (the tricky) method 
doesn't work in that case.

Anyone can help?

Thanks,

--Tuna

Reply via email to