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