From 96355dca4b5230e96a64c38d29d727cebd3a10fb Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 20 Feb 2014 23:23:58 -0700 Subject: [PATCH] CLOUDSTACK-6079: fixed issue: if public traffic is on a physical network isolated by VLAN, and guest traffic is on an another physical network isolated by VXLAN, public traffic's broadcast type is updated to VXLAN by mistake. submitted-by: mail@ynojima.net --- .../com/cloud/network/NetworkServiceImpl.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java index 270ff7b02cc..34d674eefb9 100755 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@ -3587,15 +3587,17 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { // For public traffic, get isolation method of physical network and update the public network accordingly // each broadcast type will individually need to be qualified for support of public traffic - List isolationMethods = network.getIsolationMethods(); - if ((isolationMethods.size() == 1 && isolationMethods.get(0).toLowerCase().equals("vxlan")) - || (isolationMethod != null && isolationMethods.contains(isolationMethod) && isolationMethod.toLowerCase().equals("vxlan"))) { - // find row in networks table that is defined as 'Public', created when zone was deployed - NetworkVO publicNetwork = _networksDao.listByZoneAndTrafficType(network.getDataCenterId(),TrafficType.Public).get(0); - if (publicNetwork != null) { - s_logger.debug("setting public network " + publicNetwork + " to broadcast type vxlan"); - publicNetwork.setBroadcastDomainType(BroadcastDomainType.Vxlan); - _networksDao.persist(publicNetwork); + if (TrafficType.Public.equals(trafficType)){ + List isolationMethods = network.getIsolationMethods(); + if ((isolationMethods.size() == 1 && isolationMethods.get(0).toLowerCase().equals("vxlan")) + || (isolationMethod != null && isolationMethods.contains(isolationMethod) && isolationMethod.toLowerCase().equals("vxlan"))) { + // find row in networks table that is defined as 'Public', created when zone was deployed + NetworkVO publicNetwork = _networksDao.listByZoneAndTrafficType(network.getDataCenterId(),TrafficType.Public).get(0); + if (publicNetwork != null) { + s_logger.debug("setting public network " + publicNetwork + " to broadcast type vxlan"); + publicNetwork.setBroadcastDomainType(BroadcastDomainType.Vxlan); + _networksDao.persist(publicNetwork); + } } }