From d9c06e538be96c347acc9055c267efda0b7bb559 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Tue, 27 Aug 2013 13:31:43 +0200 Subject: [PATCH] CLOUDSTACK-4346 replace URI getHost() and create(String) calls with BroadcastDomainType methods --- .../networkservice/BaremetaNetworkGuru.java | 7 +- .../kvm/resource/BridgeVifDriver.java | 23 +++---- .../resource/LibvirtComputingResource.java | 8 ++- .../hypervisor/kvm/resource/OvsVifDriver.java | 7 +- .../cloud/ovm/hypervisor/OvmResourceBase.java | 3 +- .../vmware/resource/VmwareResource.java | 6 +- .../xen/resource/CitrixResourceBase.java | 51 +++++++------- .../network/element/BigSwitchVnsElement.java | 30 ++++---- .../network/element/CiscoVnmcElement.java | 12 ++-- .../network/resource/F5BigIpResource.java | 1 + .../network/resource/JuniperSrxResource.java | 1 + .../network/element/NiciraNvpElement.java | 11 ++- .../guru/NiciraNvpGuestNetworkGuru.java | 2 +- .../network/ovs/OvsTunnelManagerImpl.java | 10 ++- .../src/com/cloud/api/ApiResponseHelper.java | 5 +- .../ExternalDeviceUsageManagerImpl.java | 3 +- .../ExternalFirewallDeviceManagerImpl.java | 69 ++++++++++++------- ...ExternalLoadBalancerDeviceManagerImpl.java | 7 +- .../com/cloud/network/NetworkManagerImpl.java | 5 +- .../guru/DirectPodBasedNetworkGuru.java | 6 +- .../guru/ExternalGuestNetworkGuru.java | 2 +- .../cloud/network/guru/GuestNetworkGuru.java | 4 +- .../network/guru/PrivateNetworkGuru.java | 2 +- .../cloud/network/guru/PublicNetworkGuru.java | 2 +- ...VpcVirtualNetworkApplianceManagerImpl.java | 20 +++--- utils/src/com/cloud/utils/net/NetUtils.java | 3 + 26 files changed, 166 insertions(+), 134 deletions(-) diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetaNetworkGuru.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetaNetworkGuru.java index 07ee12d06e5..f5e08977d7a 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetaNetworkGuru.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetaNetworkGuru.java @@ -18,8 +18,6 @@ // Automatically generated by addcopyright.py at 01/29/2013 package com.cloud.baremetal.networkservice; -import java.net.URI; - import javax.ejb.Local; import javax.inject.Inject; @@ -47,6 +45,7 @@ import com.cloud.network.Network; import com.cloud.network.NetworkManager; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.addr.PublicIp; import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.IPAddressVO; @@ -163,8 +162,8 @@ public class BaremetaNetworkGuru extends DirectPodBasedNetworkGuru { nic.setGateway(ip.getGateway()); nic.setNetmask(ip.getNetmask()); if (ip.getVlanTag() != null && ip.getVlanTag().equalsIgnoreCase(Vlan.UNTAGGED)) { - nic.setIsolationUri(URI.create("ec2://" + Vlan.UNTAGGED)); - nic.setBroadcastUri(URI.create("vlan://" + Vlan.UNTAGGED)); + nic.setIsolationUri(IsolationType.Ec2.toUri(Vlan.UNTAGGED)); + nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(Vlan.UNTAGGED)); nic.setBroadcastType(BroadcastDomainType.Native); } nic.setReservationId(String.valueOf(ip.getVlanTag())); diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java index 195cf409e5d..c94856decc9 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java @@ -19,23 +19,23 @@ package com.cloud.hypervisor.kvm.resource; +import java.io.File; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.naming.ConfigurationException; + +import org.apache.log4j.Logger; +import org.libvirt.LibvirtException; + import com.cloud.agent.api.to.NicTO; -import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource; import com.cloud.exception.InternalErrorException; import com.cloud.network.Networks; import com.cloud.utils.NumbersUtil; import com.cloud.utils.net.NetUtils; import com.cloud.utils.script.OutputInterpreter; import com.cloud.utils.script.Script; -import org.apache.log4j.Logger; -import org.libvirt.LibvirtException; - -import javax.naming.ConfigurationException; -import java.net.URI; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.io.File; public class BridgeVifDriver extends VifDriverBase { @@ -87,8 +87,7 @@ public class BridgeVifDriver extends VifDriverBase { String vlanId = null; if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) { - URI broadcastUri = nic.getBroadcastUri(); - vlanId = broadcastUri.getHost(); + vlanId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri()); } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) { throw new InternalErrorException("Nicira NVP Logicalswitches are not supported by the BridgeVifDriver"); diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index a156ae651b3..b56f3ca26d6 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; +import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; @@ -1727,8 +1728,9 @@ ServerResource { if (vlanId == null) { nicTO.setBroadcastType(BroadcastDomainType.Native); } else { - nicTO.setBroadcastType(BroadcastDomainType.Vlan); - nicTO.setBroadcastUri(BroadcastDomainType.Vlan.toUri(vlanId)); + URI uri = BroadcastDomainType.fromString(vlanId); + nicTO.setBroadcastType(BroadcastDomainType.getSchemeValue(uri)); + nicTO.setBroadcastUri(uri); } Domain vm = getDomain(conn, vmName); @@ -1815,7 +1817,7 @@ ServerResource { String routerGIP = cmd.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP); String routerName = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME); String gateway = cmd.getAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY); - String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));; + String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask())); String domainName = cmd.getNetworkDomain(); String dns = cmd.getDefaultDns1(); diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java index 7038d7e34ec..119f117c921 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java @@ -18,7 +18,6 @@ */ package com.cloud.hypervisor.kvm.resource; -import java.net.URI; import java.util.Map; import javax.naming.ConfigurationException; @@ -65,12 +64,12 @@ public class OvsVifDriver extends VifDriverBase { String vlanId = null; String logicalSwitchUuid = null; if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) { - URI broadcastUri = nic.getBroadcastUri(); - vlanId = broadcastUri.getHost(); + vlanId = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri()); } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) { - logicalSwitchUuid = nic.getBroadcastUri().getSchemeSpecificPart(); + logicalSwitchUuid = Networks.BroadcastDomainType.getValue(nic.getBroadcastUri()); } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Pvlan) { + // TODO consider moving some of this functionality from NetUtils to Networks.... vlanId = NetUtils.getPrimaryPvlanFromUri(nic.getBroadcastUri()); } String trafficLabel = nic.getName(); diff --git a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java index 59ba001d04c..8f21c139e84 100755 --- a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java +++ b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java @@ -591,8 +591,7 @@ public class OvmResourceBase implements ServerResource, HypervisorResource { String vlanId = null; String bridgeName = null; if (nic.getBroadcastType() == BroadcastDomainType.Vlan) { - URI broadcastUri = nic.getBroadcastUri(); - vlanId = broadcastUri.getHost(); + vlanId = BroadcastDomainType.getValue(nic.getBroadcastUri()); } if (nic.getType() == TrafficType.Guest) { diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 1723ef374f2..8853b887e8f 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -1635,7 +1635,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa NicTO nicTo = cmd.getNic(); VirtualDevice nic; - Pair networkInfo = prepareNetworkFromNicInfo(vmMo.getRunningHost(), nicTo, false, cmd.getVMType());; + Pair networkInfo = prepareNetworkFromNicInfo(vmMo.getRunningHost(), nicTo, false, cmd.getVMType()); if (VmwareHelper.isDvPortGroup(networkInfo.first())) { String dvSwitchUuid; ManagedObjectReference dcMor = hyperHost.getHyperHostDatacenter(); @@ -3181,9 +3181,11 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa if (nicTo.getBroadcastUri() != null) { if (nicTo.getBroadcastType() == BroadcastDomainType.Vlan) // For vlan, the broadcast uri is of the form vlan:// - return nicTo.getBroadcastUri().getHost(); + // BroadcastDomainType recogniizes and handles this. + return BroadcastDomainType.getValue(nicTo.getBroadcastUri()); else // for pvlan, the broacast uri will be of the form pvlan://-i + // TODO consider the spread of functionality between BroadcastDomainType and NetUtils return NetUtils.getPrimaryPvlanFromUri(nicTo.getBroadcastUri()); } else { s_logger.warn("BroadcastType is not claimed as VLAN or PVLAN, but without vlan info in broadcast URI. Use vlan info from labeling: " + defaultVlan); 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 ecdec1ee085..35f30e4280a 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 @@ -1027,40 +1027,39 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe s_logger.error("Network is not configured on the backend for nic " + nic.toString()); throw new CloudRuntimeException("Network for the backend is not configured correctly for network broadcast domain: " + nic.getBroadcastUri()); } - if (nic.getBroadcastUri() != null && nic.getBroadcastUri().toString().contains("untagged")) { + URI uri = nic.getBroadcastUri(); + BroadcastDomainType type = nic.getBroadcastType(); + if (uri != null && uri.toString().contains("untagged")) { return network.getNetwork(); - } else if (nic.getBroadcastType() == BroadcastDomainType.Vlan) { - URI broadcastUri = nic.getBroadcastUri(); - assert broadcastUri.getScheme().equals(BroadcastDomainType.Vlan.scheme()); - long vlan = Long.parseLong(broadcastUri.getHost()); + } else if (type == BroadcastDomainType.Vlan) { + assert (BroadcastDomainType.getSchemeValue(uri) == BroadcastDomainType.Vlan); + long vlan = Long.parseLong(BroadcastDomainType.getValue(uri)); return enableVlanNetwork(conn, vlan, network); - } else if (nic.getBroadcastType() == BroadcastDomainType.Native || nic.getBroadcastType() == BroadcastDomainType.LinkLocal) { + } else if (type == BroadcastDomainType.Native || type == BroadcastDomainType.LinkLocal) { return network.getNetwork(); - } else if (nic.getBroadcastType() == BroadcastDomainType.Vswitch) { - String broadcastUri = nic.getBroadcastUri().toString(); - String header = broadcastUri.substring(Networks.BroadcastDomainType.Vswitch.scheme().length() + "://".length()); + } else if (type == BroadcastDomainType.Vswitch) { + String header = uri.toString().substring(Networks.BroadcastDomainType.Vswitch.scheme().length() + "://".length()); if (header.startsWith("vlan")) { _isOvs = true; return setupvSwitchNetwork(conn); } else { - long vnetId = Long.parseLong(nic.getBroadcastUri().getHost()); + long vnetId = Long.parseLong(BroadcastDomainType.getValue(uri)); return findOrCreateTunnelNetwork(conn, vnetId); } - } else if (nic.getBroadcastType() == BroadcastDomainType.Storage) { - URI broadcastUri = nic.getBroadcastUri(); - if (broadcastUri == null) { + } else if (type == BroadcastDomainType.Storage) { + if (uri == null) { return network.getNetwork(); } else { - long vlan = Long.parseLong(broadcastUri.getHost()); + long vlan = Long.parseLong(BroadcastDomainType.getValue(uri)); return enableVlanNetwork(conn, vlan, network); } - } else if (nic.getBroadcastType() == BroadcastDomainType.Lswitch) { + } else if (type == BroadcastDomainType.Lswitch) { // Nicira Logical Switch return network.getNetwork(); - } else if (nic.getBroadcastType() == BroadcastDomainType.Pvlan) { - URI broadcastUri = nic.getBroadcastUri(); - assert broadcastUri.getScheme().equals(BroadcastDomainType.Pvlan.scheme()); - long vlan = Long.parseLong(NetUtils.getPrimaryPvlanFromUri(broadcastUri)); + } else if (type == BroadcastDomainType.Pvlan) { + assert BroadcastDomainType.getSchemeValue(uri) == BroadcastDomainType.Pvlan; + // TODO considder moving this NetUtils method to BroadcastDomainType + long vlan = Long.parseLong(NetUtils.getPrimaryPvlanFromUri(uri)); return enableVlanNetwork(conn, vlan, network); } @@ -1639,7 +1638,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe // TODO(Salvatore-orlando): This code should go for (NicTO nic : vmSpec.getNics()) { if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vswitch) { - HashMap args = parseDefaultOvsRuleComamnd(nic.getBroadcastUri().toString().substring(Networks.BroadcastDomainType.Vswitch.scheme().length() + "://".length())); + HashMap args = parseDefaultOvsRuleComamnd(BroadcastDomainType.getValue(nic.getBroadcastUri())); OvsSetTagAndFlowCommand flowCmd = new OvsSetTagAndFlowCommand(args.get("vmName"), args.get("tag"), args.get("vlans"), args.get("seqno"), Long.parseLong(args.get("vmId"))); OvsSetTagAndFlowAnswer r = execute(flowCmd); @@ -2273,8 +2272,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (vlanId == null) { nic.setBroadcastType(BroadcastDomainType.Native); } else { - nic.setBroadcastType(BroadcastDomainType.Vlan); - nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(vlanId)); + URI uri = BroadcastDomainType.fromString(vlanId); + nic.setBroadcastType(BroadcastDomainType.getSchemeValue(uri)); + nic.setBroadcastUri(uri); } nic.setDeviceId(0); nic.setNetworkRateMbps(networkRate); @@ -4215,8 +4215,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (ip.getVlanId() == null) { nic.setBroadcastType(BroadcastDomainType.Native); } else { - nic.setBroadcastType(BroadcastDomainType.Vlan); - nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(ip.getVlanId())); + URI uri = BroadcastDomainType.fromString(ip.getVlanId()); + nic.setBroadcastType(BroadcastDomainType.getSchemeValue(uri)); + nic.setBroadcastUri(uri); } Network network = getNetwork(conn, nic); // Determine the correct VIF on DomR to associate/disassociate the @@ -8216,7 +8217,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe String domrGIP = cmd.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP); String domrName = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME); String gw = cmd.getAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY); - String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask()));; + String cidr = Long.toString(NetUtils.getCidrSize(nic.getNetmask())); String domainName = cmd.getNetworkDomain(); String dns = cmd.getDefaultDns1(); if (dns == null || dns.isEmpty()) { diff --git a/plugins/network-elements/bigswitch-vns/src/com/cloud/network/element/BigSwitchVnsElement.java b/plugins/network-elements/bigswitch-vns/src/com/cloud/network/element/BigSwitchVnsElement.java index 54623e9d080..cb6e7fcec61 100644 --- a/plugins/network-elements/bigswitch-vns/src/com/cloud/network/element/BigSwitchVnsElement.java +++ b/plugins/network-elements/bigswitch-vns/src/com/cloud/network/element/BigSwitchVnsElement.java @@ -27,8 +27,10 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + +import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; import com.cloud.agent.AgentManager; import com.cloud.agent.api.CreateVnsPortAnswer; @@ -85,14 +87,12 @@ import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; -import org.springframework.stereotype.Component; @Component @Local(value = {NetworkElement.class, ConnectivityProvider.class}) public class BigSwitchVnsElement extends AdapterBase implements - BigSwitchVnsElementService, ConnectivityProvider, ResourceStateAdapter { + BigSwitchVnsElementService, ConnectivityProvider, ResourceStateAdapter { private static final Logger s_logger = Logger.getLogger(BigSwitchVnsElement.class); private static final Map> capabilities = setCapabilities(); @@ -134,7 +134,7 @@ public class BigSwitchVnsElement extends AdapterBase implements private boolean canHandle(Network network, Service service) { s_logger.debug("Checking if BigSwitchVnsElement can handle service " - + service.getName() + " on network " + network.getDisplayText()); + + service.getName() + " on network " + network.getDisplayText()); if (network.getBroadcastDomainType() != BroadcastDomainType.Lswitch) { return false; } @@ -210,12 +210,12 @@ public class BigSwitchVnsElement extends AdapterBase implements HostVO bigswitchVnsHost = _hostDao.findById(bigswitchVnsDevice.getHostId()); CreateVnsPortCommand cmd = new CreateVnsPortCommand( - network.getBroadcastUri().getSchemeSpecificPart(), + BroadcastDomainType.getValue(network.getBroadcastUri()), vm.getUuid(), tenantId, nic.getName(), mac); - CreateVnsPortAnswer answer = (CreateVnsPortAnswer) _agentMgr + CreateVnsPortAnswer answer = (CreateVnsPortAnswer)_agentMgr .easySend(bigswitchVnsHost.getId(), cmd); if (answer == null || !answer.getResult()) { @@ -254,10 +254,10 @@ public class BigSwitchVnsElement extends AdapterBase implements HostVO bigswitchVnsHost = _hostDao.findById(bigswitchVnsDevice.getHostId()); DeleteVnsPortCommand cmd = new DeleteVnsPortCommand( - network.getBroadcastUri().getSchemeSpecificPart(), + BroadcastDomainType.getValue(network.getBroadcastUri()), vm.getUuid(), tenantId); - DeleteVnsPortAnswer answer = (DeleteVnsPortAnswer) _agentMgr + DeleteVnsPortAnswer answer = (DeleteVnsPortAnswer)_agentMgr .easySend(bigswitchVnsHost.getId(), cmd); if (answer == null || !answer.getResult()) { @@ -420,7 +420,7 @@ public class BigSwitchVnsElement extends AdapterBase implements if (pnw != null) { response.setPhysicalNetworkId(pnw.getUuid()); } - response.setId(bigswitchVnsDeviceVO.getUuid()); + response.setId(bigswitchVnsDeviceVO.getUuid()); response.setProviderName(bigswitchVnsDeviceVO.getProviderName()); response.setHostName(bigswitchVnsHost.getDetail("ip")); response.setObjectName("bigswitchvnsdevice"); @@ -452,7 +452,7 @@ public class BigSwitchVnsElement extends AdapterBase implements && (network.getState() != Network.State.Destroy)) { throw new CloudRuntimeException( "This BigSwitch Controller device can not be deleted as there are one or more " + - "logical networks provisioned by cloudstack."); + "logical networks provisioned by cloudstack."); } } } @@ -533,13 +533,13 @@ public class BigSwitchVnsElement extends AdapterBase implements return new DeleteHostAnswer(true); } - @Override - public List> getCommands() { - List> cmdList = new ArrayList>(); + @Override + public List> getCommands() { + List> cmdList = new ArrayList>(); cmdList.add(AddBigSwitchVnsDeviceCmd.class); cmdList.add(DeleteBigSwitchVnsDeviceCmd.class); cmdList.add(ListBigSwitchVnsDevicesCmd.class); return cmdList; - } + } } diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java index 088bfae3435..a9f3256f4a3 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java @@ -342,8 +342,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro _hostDao.loadDetails(ciscoVnmcHost); Account owner = context.getAccount(); PublicIp sourceNatIp = _ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(owner, network); - String vlan = network.getBroadcastUri().getHost(); - long vlanId = Long.parseLong(vlan); + long vlanId = Long.parseLong(BroadcastDomainType.getValue(network.getBroadcastUri())); List vlanVOList = _vlanDao.listVlansByPhysicalNetworkId(network.getPhysicalNetworkId()); List publicGateways = new ArrayList(); @@ -465,8 +464,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro unassignAsa1000vFromNetwork(network); - String vlan = network.getBroadcastUri().getHost(); - long vlanId = Long.parseLong(vlan); + long vlanId = Long.parseLong(BroadcastDomainType.getValue(network.getBroadcastUri())); List devices = _ciscoVnmcDao.listByPhysicalNetwork(network.getPhysicalNetworkId()); if (!devices.isEmpty()) { CiscoVnmcControllerVO ciscoVnmcDevice = devices.get(0); @@ -709,7 +707,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro if (!rulesTO.isEmpty()) { SetFirewallRulesCommand cmd = new SetFirewallRulesCommand(rulesTO); - cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, network.getBroadcastUri().getHost()); + cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, BroadcastDomainType.getValue(network.getBroadcastUri())); cmd.setContextParam(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); Answer answer = _agentMgr.easySend(ciscoVnmcHost.getId(), cmd); if (answer == null || !answer.getResult()) { @@ -764,7 +762,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro if (!rulesTO.isEmpty()) { SetPortForwardingRulesCommand cmd = new SetPortForwardingRulesCommand(rulesTO); - cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, network.getBroadcastUri().getHost()); + cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, BroadcastDomainType.getValue(network.getBroadcastUri())); cmd.setContextParam(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); Answer answer = _agentMgr.easySend(ciscoVnmcHost.getId(), cmd); if (answer == null || !answer.getResult()) { @@ -819,7 +817,7 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro if (!rulesTO.isEmpty()) { SetStaticNatRulesCommand cmd = new SetStaticNatRulesCommand(rulesTO, null); - cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, network.getBroadcastUri().getHost()); + cmd.setContextParam(NetworkElementCommand.GUEST_VLAN_TAG, BroadcastDomainType.getValue(network.getBroadcastUri())); cmd.setContextParam(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); Answer answer = _agentMgr.easySend(ciscoVnmcHost.getId(), cmd); if (answer == null || !answer.getResult()) { diff --git a/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java b/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java index 1733712366b..ffddd3073ea 100644 --- a/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java +++ b/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java @@ -294,6 +294,7 @@ public class F5BigIpResource implements ServerResource { try { IpAddressTO[] ips = cmd.getIpAddresses(); for (IpAddressTO ip : ips) { + // TODO BroadcastDomain.getValue(ip.getVlanId) ??? long guestVlanTag = Long.valueOf(ip.getVlanId()); // It's a hack, using isOneToOneNat field for indicate if it's inline or not boolean inline = ip.isOneToOneNat(); diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/network/resource/JuniperSrxResource.java b/plugins/network-elements/juniper-srx/src/com/cloud/network/resource/JuniperSrxResource.java index 3d3d797f8dc..f9dd5e3be43 100644 --- a/plugins/network-elements/juniper-srx/src/com/cloud/network/resource/JuniperSrxResource.java +++ b/plugins/network-elements/juniper-srx/src/com/cloud/network/resource/JuniperSrxResource.java @@ -693,6 +693,7 @@ public class JuniperSrxResource implements ServerResource { Long publicVlanTag = null; if (ip.getVlanId() != null && !ip.getVlanId().equals("untagged")) { try { + // TODO BroadcastDomain.getValue(ip.getVlanId) ??? publicVlanTag = Long.parseLong(ip.getVlanId()); } catch (Exception e) { throw new ExecutionException("Could not parse public VLAN tag: " + ip.getVlanId()); diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java index c7d08844fe3..a5f1b9272dd 100644 --- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java +++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java @@ -273,7 +273,7 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer { CreateLogicalRouterCommand cmd = new CreateLogicalRouterCommand( niciraNvpHost.getDetail("l3gatewayserviceuuid"), vlanid, - network.getBroadcastUri().getSchemeSpecificPart(), + BroadcastDomainType.getValue(network.getBroadcastUri()), "router-" + network.getDisplayText(), publicCidr, sourceNatIp.getGateway(), internalCidr, context .getDomain().getName() @@ -339,8 +339,8 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer { + nic.getName() + " with uuid " + existingNicMap.getLogicalSwitchPortUuid()); UpdateLogicalSwitchPortCommand cmd = new UpdateLogicalSwitchPortCommand( - existingNicMap.getLogicalSwitchPortUuid(), network - .getBroadcastUri().getSchemeSpecificPart(), + existingNicMap.getLogicalSwitchPortUuid(), + BroadcastDomainType.getValue(network.getBroadcastUri()), nicVO.getUuid(), context.getDomain().getName() + "-" + context.getAccount().getAccountName(), nic.getName()); @@ -355,7 +355,7 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer { } CreateLogicalSwitchPortCommand cmd = new CreateLogicalSwitchPortCommand( - network.getBroadcastUri().getSchemeSpecificPart(), + BroadcastDomainType.getValue(network.getBroadcastUri()), nicVO.getUuid(), context.getDomain().getName() + "-" + context.getAccount().getAccountName(), nic.getName()); CreateLogicalSwitchPortAnswer answer = (CreateLogicalSwitchPortAnswer) _agentMgr @@ -366,8 +366,7 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer { return false; } - NiciraNvpNicMappingVO nicMap = new NiciraNvpNicMappingVO(network - .getBroadcastUri().getSchemeSpecificPart(), + NiciraNvpNicMappingVO nicMap = new NiciraNvpNicMappingVO(BroadcastDomainType.getValue(network.getBroadcastUri()), answer.getLogicalSwitchPortUuid(), nicVO.getUuid()); _niciraNvpNicMappingDao.persist(nicMap); diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java index ff238edc600..9451441baf2 100644 --- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java +++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java @@ -245,7 +245,7 @@ public class NiciraNvpGuestNetworkGuru extends GuestNetworkGuru { NiciraNvpDeviceVO niciraNvpDevice = devices.get(0); HostVO niciraNvpHost = _hostDao.findById(niciraNvpDevice.getHostId()); - DeleteLogicalSwitchCommand cmd = new DeleteLogicalSwitchCommand(networkObject.getBroadcastUri().getSchemeSpecificPart()); + DeleteLogicalSwitchCommand cmd = new DeleteLogicalSwitchCommand(BroadcastDomainType.getValue(networkObject.getBroadcastUri())); DeleteLogicalSwitchAnswer answer = (DeleteLogicalSwitchAnswer) _agentMgr.easySend(niciraNvpHost.getId(), cmd); if (answer == null || !answer.getResult()) { diff --git a/plugins/network-elements/ovs/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java b/plugins/network-elements/ovs/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java index 36a807f8e78..e8ff1a0a18d 100644 --- a/plugins/network-elements/ovs/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java +++ b/plugins/network-elements/ovs/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java @@ -45,6 +45,7 @@ import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.network.Network; +import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.PhysicalNetworkTrafficType; import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao; @@ -240,9 +241,12 @@ public class OvsTunnelManagerImpl extends ManagerBase implements OvsTunnelManage int key = 0; try { //The GRE key is actually in the host part of the URI - String keyStr = network.getBroadcastUri().getHost(); - // The key is most certainly and int. - // So we feel quite safe in converting it into a string + // this is not true for lswitch/NiciraNvp! + String keyStr = BroadcastDomainType.getValue(network.getBroadcastUri()); + // The key is most certainly and int if network is a vlan. + // !! not in the case of lswitch/pvlan/(possibly)vswitch + // So we now feel quite safe in converting it into a string + // by calling the appropriate BroadcastDomainType method key = Integer.valueOf(keyStr); return key; } catch (NumberFormatException e) { diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 5e015c69176..8d01274f501 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -199,6 +199,7 @@ import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkModel; import com.cloud.network.NetworkProfile; +import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.IsolationType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.PhysicalNetwork; @@ -2180,8 +2181,8 @@ public class ApiResponseHelper implements ResponseGenerator { String broadcastUri = network.getBroadcastUri().toString(); response.setBroadcastUri(broadcastUri); String vlan = "N/A"; - if (broadcastUri.startsWith("vlan")) { - vlan = broadcastUri.substring("vlan://".length(), broadcastUri.length()); + if (BroadcastDomainType.Vlan.scheme().equals(BroadcastDomainType.getSchemeValue(network.getBroadcastUri()))) { + vlan = BroadcastDomainType.getValue(network.getBroadcastUri()); } // return vlan information only to Root admin response.setVlan(vlan); diff --git a/server/src/com/cloud/network/ExternalDeviceUsageManagerImpl.java b/server/src/com/cloud/network/ExternalDeviceUsageManagerImpl.java index e91dcfa7260..3db511186ed 100644 --- a/server/src/com/cloud/network/ExternalDeviceUsageManagerImpl.java +++ b/server/src/com/cloud/network/ExternalDeviceUsageManagerImpl.java @@ -46,6 +46,7 @@ import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDetailsDao; +import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.dao.ExternalFirewallDeviceDao; import com.cloud.network.dao.ExternalFirewallDeviceVO; import com.cloud.network.dao.ExternalLoadBalancerDeviceDao; @@ -554,7 +555,7 @@ public class ExternalDeviceUsageManagerImpl extends ManagerBase implements Exter s_logger.debug("Not updating stats for guest network with ID " + network.getId() + " because the network is not implemented."); return true; } else { - long vlanTag = Integer.parseInt(broadcastURI.getHost()); + long vlanTag = Integer.parseInt(BroadcastDomainType.getValue(broadcastURI)); long[] bytesSentAndReceived = answer.guestVlanBytes.get(String.valueOf(vlanTag)); if (bytesSentAndReceived == null) { diff --git a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java index a9340247f81..ec48d1352a3 100644 --- a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java +++ b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java @@ -6,7 +6,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -26,18 +26,13 @@ import java.util.Map; import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.network.dao.*; -import com.cloud.offerings.NetworkOfferingVO; +import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.response.ExternalFirewallResponse; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; -import com.cloud.utils.Pair; - -import org.apache.log4j.Logger; - import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.StartupCommand; @@ -69,7 +64,26 @@ import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDetailsDao; +import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.TrafficType; +import com.cloud.network.dao.ExternalFirewallDeviceDao; +import com.cloud.network.dao.ExternalFirewallDeviceVO; +import com.cloud.network.dao.FirewallRulesDao; +import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.dao.IPAddressVO; +import com.cloud.network.dao.InlineLoadBalancerNicMapDao; +import com.cloud.network.dao.InlineLoadBalancerNicMapVO; +import com.cloud.network.dao.LoadBalancerDao; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.dao.NetworkExternalFirewallDao; +import com.cloud.network.dao.NetworkExternalFirewallVO; +import com.cloud.network.dao.NetworkServiceMapDao; +import com.cloud.network.dao.NetworkVO; +import com.cloud.network.dao.PhysicalNetworkDao; +import com.cloud.network.dao.PhysicalNetworkServiceProviderDao; +import com.cloud.network.dao.PhysicalNetworkServiceProviderVO; +import com.cloud.network.dao.PhysicalNetworkVO; +import com.cloud.network.dao.VpnUserDao; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; @@ -77,6 +91,7 @@ import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.StaticNat; import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.offering.NetworkOffering; +import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceState; @@ -88,6 +103,7 @@ import com.cloud.user.AccountManager; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserStatisticsDao; import com.cloud.utils.NumbersUtil; +import com.cloud.utils.Pair; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.GlobalLock; @@ -95,8 +111,8 @@ import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; import com.cloud.utils.net.UrlUtil; -import com.cloud.vm.NicVO; import com.cloud.vm.Nic.ReservationStrategy; +import com.cloud.vm.NicVO; import com.cloud.vm.dao.DomainRouterDao; import com.cloud.vm.dao.NicDao; @@ -162,10 +178,10 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), ntwkDevice.getNetworkServiceProvder()); if (ntwkSvcProvider == null ) { - throw new CloudRuntimeException("Network Service Provider: " + ntwkDevice.getNetworkServiceProvder() + + throw new CloudRuntimeException("Network Service Provider: " + ntwkDevice.getNetworkServiceProvder() + " is not enabled in the physical network: " + physicalNetworkId + "to add this device" ); } else if (ntwkSvcProvider.getState() == PhysicalNetworkServiceProvider.State.Shutdown) { - throw new CloudRuntimeException("Network Service Provider: " + ntwkSvcProvider.getProviderName() + + throw new CloudRuntimeException("Network Service Provider: " + ntwkSvcProvider.getProviderName() + " is not added or in shutdown state in the physical network: " + physicalNetworkId + "to add this device" ); } @@ -205,12 +221,12 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl txn.start(); boolean dedicatedUse = (configParams.get(ApiConstants.FIREWALL_DEVICE_DEDICATED) != null) ? Boolean.parseBoolean(configParams.get(ApiConstants.FIREWALL_DEVICE_DEDICATED)) : false; - long capacity = NumbersUtil.parseLong((String)configParams.get(ApiConstants.FIREWALL_DEVICE_CAPACITY), 0); + long capacity = NumbersUtil.parseLong(configParams.get(ApiConstants.FIREWALL_DEVICE_CAPACITY), 0); if (capacity == 0) { capacity = _defaultFwCapacity; } - ExternalFirewallDeviceVO fwDevice = new ExternalFirewallDeviceVO(externalFirewall.getId(), pNetwork.getId(), ntwkSvcProvider.getProviderName(), + ExternalFirewallDeviceVO fwDevice = new ExternalFirewallDeviceVO(externalFirewall.getId(), pNetwork.getId(), ntwkSvcProvider.getProviderName(), deviceName, capacity, dedicatedUse); _externalFirewallDeviceDao.persist(fwDevice); @@ -273,7 +289,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), fwNetworkDevice.getNetworkServiceProvder()); if (ntwkSvcProvider == null) { - return null; + return null; } List fwDevices = _externalFirewallDeviceDao.listByPhysicalNetworkAndProvider(physicalNetworkId, ntwkSvcProvider.getProviderName()); @@ -283,6 +299,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl return firewallHosts; } + @Override public ExternalFirewallDeviceVO getExternalFirewallForNetwork(Network network) { NetworkExternalFirewallVO fwDeviceForNetwork = _networkExternalFirewallDao.findByNetworkId(network.getId()); if (fwDeviceForNetwork != null) { @@ -304,7 +321,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl long physicalNetworkId = network.getPhysicalNetworkId(); List fwDevices = _externalFirewallDeviceDao.listByPhysicalNetwork(physicalNetworkId); - // loop through the firewall device in the physical network and pick the first-fit + // loop through the firewall device in the physical network and pick the first-fit for (ExternalFirewallDeviceVO fwDevice: fwDevices) { // max number of guest networks that can be mapped to this device long fullCapacity = fwDevice.getCapacity(); @@ -313,7 +330,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl } // get the list of guest networks that are mapped to this load balancer - List mappedNetworks = _networkExternalFirewallDao.listByFirewallDeviceId(fwDevice.getId()); + List mappedNetworks = _networkExternalFirewallDao.listByFirewallDeviceId(fwDevice.getId()); long usedCapacity = (mappedNetworks == null) ? 0 : mappedNetworks.size(); if ((fullCapacity - usedCapacity) > 0) { @@ -386,7 +403,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl try { if (deviceMapLock.lock(120)) { try { - ExternalFirewallDeviceVO device = findSuitableFirewallForNetwork(network); + ExternalFirewallDeviceVO device = findSuitableFirewallForNetwork(network); long externalFirewallId = device.getId(); NetworkExternalFirewallVO networkFW = new NetworkExternalFirewallVO(network.getId(), externalFirewallId); @@ -412,17 +429,17 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl Account account = _accountDao.findByIdIncludingRemoved(network.getAccountId()); - NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId()); + NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId()); boolean sharedSourceNat = offering.getSharedSourceNat(); IPAddressVO sourceNatIp = null; if (!sharedSourceNat) { - // Get the source NAT IP address for this account - List sourceNatIps = _networkModel.listPublicIpsAssignedToAccount(network.getAccountId(), + // Get the source NAT IP address for this account + List sourceNatIps = _networkModel.listPublicIpsAssignedToAccount(network.getAccountId(), zoneId, true); if (sourceNatIps.size() != 1) { - String errorMsg = "External firewall was unable to find the source NAT IP address for account " + String errorMsg = "External firewall was unable to find the source NAT IP address for account " + account.getAccountName(); s_logger.error(errorMsg); return true; @@ -432,7 +449,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl } // Send a command to the external firewall to implement or shutdown the guest network - long guestVlanTag = Long.parseLong(network.getBroadcastUri().getHost()); + long guestVlanTag = Long.parseLong(BroadcastDomainType.getValue(network.getBroadcastUri())); String guestVlanGateway = network.getGateway(); String guestVlanCidr = network.getCidr(); String sourceNatIpAddress = null; @@ -536,7 +553,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl } FirewallRuleTO ruleTO; if (rule.getPurpose() == Purpose.Firewall && rule.getTrafficType() == FirewallRule.TrafficType.Egress) { - String guestVlanTag = network.getBroadcastUri().getHost(); + String guestVlanTag = BroadcastDomainType.getValue(network.getBroadcastUri()); String guestCidr = network.getCidr(); ruleTO = new FirewallRuleTO(rule, guestVlanTag, rule.getTrafficType(), guestCidr, defaultEgressPolicy, rule.getType()); } else { @@ -639,7 +656,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl // Mask the IP range with the network's VLAN tag String[] ipRange = vpn.getIpRange().split("-"); DataCenterVO zone = _dcDao.findById(network.getDataCenterId()); - int vlanTag = Integer.parseInt(network.getBroadcastUri().getHost()); + int vlanTag = Integer.parseInt(BroadcastDomainType.getValue(network.getBroadcastUri())); int offset = getVlanOffset(network.getPhysicalNetworkId(), vlanTag); int cidrSize = getGloballyConfiguredCidrSize(); @@ -651,7 +668,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl RemoteAccessVpnCfgCommand createVpnCmd = new RemoteAccessVpnCfgCommand(create, ip.getAddress().addr(), vpn.getLocalIp(), maskedIpRange, vpn.getIpsecPresharedKey()); createVpnCmd.setAccessDetail(NetworkElementCommand.ACCOUNT_ID, String.valueOf(network.getAccountId())); - createVpnCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); + createVpnCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); Answer answer = _agentMgr.easySend(externalFirewall.getId(), createVpnCmd); if (answer == null || !answer.getResult()) { String details = (answer != null) ? answer.getDetails() : "details unavailable"; @@ -663,7 +680,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl // Add/delete users List vpnUsers = _vpnUsersDao.listByAccount(vpn.getAccountId()); return manageRemoteAccessVpnUsers(network, vpn, vpnUsers); - } + } public boolean manageRemoteAccessVpnUsers(Network network, RemoteAccessVpn vpn, List vpnUsers) throws ResourceUnavailableException { ExternalFirewallDeviceVO fwDeviceVO = getExternalFirewallForNetwork(network); @@ -686,7 +703,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl VpnUsersCfgCommand addUsersCmd = new VpnUsersCfgCommand(addUsers, removeUsers); addUsersCmd.setAccessDetail(NetworkElementCommand.ACCOUNT_ID, String.valueOf(network.getAccountId())); - addUsersCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); + addUsersCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_CIDR, network.getCidr()); Answer answer = _agentMgr.easySend(externalFirewall.getId(), addUsersCmd); if (answer == null || !answer.getResult()) { diff --git a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java index c14d5c79409..f594c8c1b94 100644 --- a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java +++ b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java @@ -66,6 +66,7 @@ import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDetailsDao; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.TrafficType; import com.cloud.network.addr.PublicIp; import com.cloud.network.dao.ExternalFirewallDeviceDao; @@ -904,7 +905,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase int numLoadBalancersForCommand = loadBalancersToApply.size(); LoadBalancerTO[] loadBalancersForCommand = loadBalancersToApply.toArray(new LoadBalancerTO[numLoadBalancersForCommand]); LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(loadBalancersForCommand, null); - long guestVlanTag = Integer.parseInt(network.getBroadcastUri().getHost()); + long guestVlanTag = Integer.parseInt(BroadcastDomainType.getValue(network.getBroadcastUri())); cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, String.valueOf(guestVlanTag)); Answer answer = _agentMgr.easySend(externalLoadBalancer.getId(), cmd); if (answer == null || !answer.getResult()) { @@ -980,7 +981,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase } // Send a command to the external load balancer to implement or shutdown the guest network - long guestVlanTag = Long.parseLong(guestConfig.getBroadcastUri().getHost()); + long guestVlanTag = Long.parseLong(BroadcastDomainType.getValue(guestConfig.getBroadcastUri())); String selfIp = null; String guestVlanNetmask = NetUtils.cidr2Netmask(guestConfig.getCidr()); Integer networkRate = _networkModel.getNetworkRate(guestConfig.getId(), null); @@ -1188,7 +1189,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase // LoadBalancerConfigCommand cmd = new // LoadBalancerConfigCommand(loadBalancersForCommand, null); HealthCheckLBConfigCommand cmd = new HealthCheckLBConfigCommand(loadBalancersForCommand); - long guestVlanTag = Integer.parseInt(network.getBroadcastUri().getHost()); + long guestVlanTag = Integer.parseInt(BroadcastDomainType.getValue(network.getBroadcastUri())); cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, String.valueOf(guestVlanTag)); answer = (HealthCheckLBConfigAnswer) _agentMgr.easySend(externalLoadBalancer.getId(), cmd); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index ae27554e2f5..7feeb148fe7 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1772,7 +1772,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L + " is already being used for dynamic vlan allocation for the guest network in zone " + zone.getName()); } - String uri = "vlan://" + vlanId; + String uri = BroadcastDomainType.fromString(vlanId).toString(); // For Isolated networks, don't allow to create network with vlan that already exists in the zone if (ntwkOff.getGuestType() == GuestType.Isolated) { if (_networksDao.countByZoneAndUri(zoneId, uri) > 0) { @@ -1902,7 +1902,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L if (vlanId != null) { if (isolatedPvlan == null) { - userNetwork.setBroadcastUri(URI.create("vlan://" + vlanId)); + URI uri = BroadcastDomainType.fromString(vlanId); + userNetwork.setBroadcastUri(uri); if (!vlanId.equalsIgnoreCase(Vlan.UNTAGGED)) { userNetwork.setBroadcastDomainType(BroadcastDomainType.Vlan); } else { diff --git a/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java b/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java index 5b87d542037..9ae636edcae 100755 --- a/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java +++ b/server/src/com/cloud/network/guru/DirectPodBasedNetworkGuru.java @@ -17,7 +17,6 @@ // under the License. package com.cloud.network.guru; -import java.net.URI; import java.util.List; import javax.ejb.Local; @@ -45,6 +44,7 @@ import com.cloud.network.Network; import com.cloud.network.NetworkManager; import com.cloud.network.Networks.AddressFormat; import com.cloud.network.Networks.BroadcastDomainType; +import com.cloud.network.Networks.IsolationType; import com.cloud.network.addr.PublicIp; import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.IPAddressVO; @@ -194,8 +194,8 @@ public class DirectPodBasedNetworkGuru extends DirectNetworkGuru { nic.setGateway(ip.getGateway()); nic.setNetmask(ip.getNetmask()); if (ip.getVlanTag() != null && ip.getVlanTag().equalsIgnoreCase(Vlan.UNTAGGED)) { - nic.setIsolationUri(URI.create("ec2://" + Vlan.UNTAGGED)); - nic.setBroadcastUri(URI.create("vlan://" + Vlan.UNTAGGED)); + nic.setIsolationUri(IsolationType.Ec2.toUri(Vlan.UNTAGGED)); + nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(Vlan.UNTAGGED)); nic.setBroadcastType(BroadcastDomainType.Native); } nic.setReservationId(String.valueOf(ip.getVlanTag())); diff --git a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java index 00598dda903..bed61eae530 100644 --- a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -151,7 +151,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { implemented.setBroadcastUri(BroadcastDomainType.Vlan.toUri(vlanTag)); ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), config.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + config.getId(), 0); } else { - vlanTag = Integer.parseInt(config.getBroadcastUri().getHost()); + vlanTag = Integer.parseInt(BroadcastDomainType.getValue(config.getBroadcastUri())); implemented.setBroadcastUri(config.getBroadcastUri()); } diff --git a/server/src/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/com/cloud/network/guru/GuestNetworkGuru.java index b0da42f7c87..e980df9f17f 100755 --- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java @@ -414,11 +414,11 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur if (profile.getBroadcastDomainType() == BroadcastDomainType.Vlan && profile.getBroadcastUri() != null && !offering.getSpecifyVlan()) { s_logger.debug("Releasing vnet for the network id=" + profile.getId()); - _dcDao.releaseVnet(profile.getBroadcastUri().getHost(), profile.getDataCenterId(), + _dcDao.releaseVnet(BroadcastDomainType.getValue(profile.getBroadcastUri()), profile.getDataCenterId(), profile.getPhysicalNetworkId(), profile.getAccountId(), profile.getReservationId()); ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), profile.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_RELEASE, "Released Zone Vlan: " - + profile.getBroadcastUri().getHost() + " for Network: " + profile.getId(), 0); + + BroadcastDomainType.getValue(profile.getBroadcastUri()) + " for Network: " + profile.getId(), 0); } profile.setBroadcastUri(null); } diff --git a/server/src/com/cloud/network/guru/PrivateNetworkGuru.java b/server/src/com/cloud/network/guru/PrivateNetworkGuru.java index 039f0c7c889..9f02175e05e 100644 --- a/server/src/com/cloud/network/guru/PrivateNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PrivateNetworkGuru.java @@ -183,7 +183,7 @@ public class PrivateNetworkGuru extends AdapterBase implements NetworkGuru { throws InsufficientVirtualNetworkCapcityException,InsufficientAddressCapacityException { if (nic.getIp4Address() == null) { PrivateIpVO ipVO = _privateIpDao.allocateIpAddress(network.getDataCenterId(), network.getId(), null); - String vlanTag = network.getBroadcastUri().getHost(); + String vlanTag = BroadcastDomainType.getValue(network.getBroadcastUri()); String netmask = NetUtils.getCidrNetmask(network.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress()))); diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java index d1094681a10..8fe672990f5 100755 --- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java @@ -118,7 +118,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { nic.setGateway(ip.getGateway()); nic.setNetmask(ip.getNetmask()); nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag())); - nic.setBroadcastUri(IsolationType.Vlan.toUri(ip.getVlanTag())); + nic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(ip.getVlanTag())); nic.setBroadcastType(BroadcastDomainType.Vlan); nic.setFormat(AddressFormat.Ip4); nic.setReservationId(String.valueOf(ip.getVlanTag())); diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 82cad0b038b..abe07464eda 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -393,7 +393,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); if (network.getBroadcastDomainType() == BroadcastDomainType.Vlan) { - long guestVlanTag = Long.parseLong(network.getBroadcastUri().getHost()); + long guestVlanTag = Long.parseLong(BroadcastDomainType.Vlan.getValueFrom(network.getBroadcastUri())); setupCmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, String.valueOf(guestVlanTag)); } @@ -669,7 +669,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian Network guestNtwk = _networkDao.findById(guestNetworkId); URI uri = guestNtwk.getBroadcastUri(); if (uri != null) { - guestVlan = guestNtwk.getBroadcastUri().getHost(); + guestVlan = BroadcastDomainType.getValue(uri); } if (rules != null) { @@ -730,7 +730,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian } else if (network.getTrafficType() == TrafficType.Public) { Pair publicNic = new Pair(routerNic, network); publicNics.add(publicNic); - String vlanTag = routerNic.getBroadcastUri().getHost(); + String vlanTag = BroadcastDomainType.getValue(routerNic.getBroadcastUri()); vlanMacAddress.put(vlanTag, routerNic.getMacAddress()); } } @@ -796,7 +796,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian //set private network PrivateIpVO ipVO = _privateIpDao.findByIpAndSourceNetworkId(guestNic.getNetworkId(), guestNic.getIp4Address()); Network network = _networkDao.findById(guestNic.getNetworkId()); - String vlanTag = network.getBroadcastUri().getHost(); + // should this be a vlan id or a broadcast uri??? + String vlanTag = BroadcastDomainType.getValue(network.getBroadcastUri()); String netmask = NetUtils.getCidrNetmask(network.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, guestNic.getMacAddress()); @@ -934,7 +935,9 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian if (router.getState() == State.Running) { PrivateIpVO ipVO = _privateIpDao.findByIpAndSourceNetworkId(privateNic.getNetworkId(), privateNic.getIp4Address()); Network network = _networkDao.findById(privateNic.getNetworkId()); - String vlanTag = network.getBroadcastUri().getHost(); + // TODO should this be a lan tag or a broadcast uri??? + // or maybe conditional; in case of vlan ... in case of lswitch + String vlanTag = BroadcastDomainType.getValue(network.getBroadcastUri()); String netmask = NetUtils.getCidrNetmask(network.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, privateNic.getMacAddress()); @@ -1227,16 +1230,17 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian _networkModel.isSecurityGroupSupportedInNetwork(privateNetwork), _networkModel.getNetworkTag(vm.getHypervisorType(), privateNetwork)); } else { - String vlanTag = privateNetwork.getBroadcastUri().getHost(); + String vlanTag = BroadcastDomainType.getValue(privateNetwork.getBroadcastUri()); String netmask = NetUtils.getCidrNetmask(privateNetwork.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, privateNetwork.getGateway(), netmask, NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress()))); + URI netUri = BroadcastDomainType.fromString(ip.getVlanTag()); privateNicProfile.setIp4Address(ip.getIpAddress()); privateNicProfile.setGateway(ip.getGateway()); privateNicProfile.setNetmask(ip.getNetmask()); - privateNicProfile.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag())); - privateNicProfile.setBroadcastUri(IsolationType.Vlan.toUri(ip.getVlanTag())); + privateNicProfile.setIsolationUri(netUri); + privateNicProfile.setBroadcastUri(netUri); privateNicProfile.setBroadcastType(BroadcastDomainType.Vlan); privateNicProfile.setFormat(AddressFormat.Ip4); privateNicProfile.setReservationId(String.valueOf(ip.getVlanTag())); diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index 05b485b9c39..7a89103f465 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -1378,6 +1378,9 @@ public class NetUtils { } } + // Attention maintainers: these pvlan functions should take into account code + // in Networks.BroadcastDomainType, where URI construction is done for other + // types of BroadcastDomainTypes public static URI generateUriForPvlan(String primaryVlan, String isolatedPvlan) { return URI.create("pvlan://" + primaryVlan + "-i" + isolatedPvlan); }