Murali,

This patch worked but not perfect. It can skip throwing exeption when
plugging Dom0's VIF to network but actually the bridge is still not
recognized from HOSTs. Everything is done if we plug a DomU's VIF instead.
I don't know why.

--Tuna


On Mon, Feb 24, 2014 at 7:18 PM, Murali Reddy <murali.re...@citrix.com>wrote:

>  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>
> Date: Saturday, 22 February 2014 12:32 AM
> To: "dev@cloudstack.apache.org" <dev@cloudstack.apache.org>
> Cc: Murali Reddy <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