From 39485a4a5669d179ad7de32ad2fa4feee17ed9f6 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Thu, 2 Aug 2012 14:51:28 -0700 Subject: [PATCH] VPC: CS-15821 - corrected mac address format for vpc private network --- .../com/cloud/network/NetworkManagerImpl.java | 2 +- .../network/guru/PrivateNetworkGuru.java | 3 +- ...VpcVirtualNetworkApplianceManagerImpl.java | 48 ++++++++++++------- .../cloud/network/vpc/PrivateIpAddress.java | 5 +- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index f60008bcc98..0ad1e8c250f 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -4760,7 +4760,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag NetworkOffering ntwkOff = _configMgr.getNetworkOffering(network.getNetworkOfferingId()); // For default userVm Default network and domR guest/public network, get rate information from the service -// offering; for other situations get information + // offering; for other situations get information // from the network offering boolean isUserVmsDefaultNetwork = false; boolean isDomRGuestOrPublicNetwork = false; diff --git a/server/src/com/cloud/network/guru/PrivateNetworkGuru.java b/server/src/com/cloud/network/guru/PrivateNetworkGuru.java index c0d689c2c77..25502d4ed87 100644 --- a/server/src/com/cloud/network/guru/PrivateNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PrivateNetworkGuru.java @@ -183,7 +183,8 @@ public class PrivateNetworkGuru extends AdapterBase implements NetworkGuru { PrivateIpVO ipVO = _privateIpDao.allocateIpAddress(network.getDataCenterId(), network.getId(), null); String vlanTag = network.getBroadcastUri().getHost(); String netmask = NetUtils.getCidrNetmask(network.getCidr()); - PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, ipVO.getMacAddress()); + PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, + NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress()))); nic.setIp4Address(ip.getIpAddress()); nic.setGateway(ip.getGateway()); diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 72dad34d76d..af1c569a7ab 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -814,7 +814,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian Network network = _networkDao.findById(guestNic.getNetworkId()); String vlanTag = network.getBroadcastUri().getHost(); String netmask = NetUtils.getCidrNetmask(network.getCidr()); - PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, ipVO.getMacAddress()); + PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, guestNic.getMacAddress()); List privateIps = new ArrayList(1); privateIps.add(ip); @@ -942,7 +942,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian Network network = _networkDao.findById(privateNic.getNetworkId()); String vlanTag = network.getBroadcastUri().getHost(); String netmask = NetUtils.getCidrNetmask(network.getCidr()); - PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, ipVO.getMacAddress()); + PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, privateNic.getMacAddress()); List privateIps = new ArrayList(1); privateIps.add(ip); @@ -1221,24 +1221,36 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian @DB protected NicProfile createPrivateNicProfileForGateway(VpcGateway privateGateway) { - Network network = _networkMgr.getNetwork(privateGateway.getNetworkId()); - PrivateIpVO ipVO = _privateIpDao.allocateIpAddress(network.getDataCenterId(), network.getId(), privateGateway.getIp4Address()); + Network privateNetwork = _networkMgr.getNetwork(privateGateway.getNetworkId()); + PrivateIpVO ipVO = _privateIpDao.allocateIpAddress(privateNetwork.getDataCenterId(), privateNetwork.getId(), privateGateway.getIp4Address()); + Nic privateNic = _nicDao.findByIp4AddressAndNetworkId(ipVO.getIpAddress(), privateNetwork.getId()); - NicProfile privateNic = new NicProfile(); - String vlanTag = network.getBroadcastUri().getHost(); - String netmask = NetUtils.getCidrNetmask(network.getCidr()); - PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, ipVO.getMacAddress()); + NicProfile privateNicProfile = new NicProfile(); - privateNic.setIp4Address(ip.getIpAddress()); - privateNic.setGateway(ip.getGateway()); - privateNic.setNetmask(ip.getNetmask()); - privateNic.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag())); - privateNic.setBroadcastUri(IsolationType.Vlan.toUri(ip.getVlanTag())); - privateNic.setBroadcastType(BroadcastDomainType.Vlan); - privateNic.setFormat(AddressFormat.Ip4); - privateNic.setReservationId(String.valueOf(ip.getVlanTag())); - privateNic.setMacAddress(ip.getMacAddress()); - return privateNic; + if (privateNic != null) { + VirtualMachine vm = _vmDao.findById(privateNic.getId()); + privateNicProfile = new NicProfile(privateNic, privateNetwork, privateNic.getBroadcastUri(), privateNic.getIsolationUri(), + _networkMgr.getNetworkRate(privateNetwork.getId(), vm.getId()), + _networkMgr.isSecurityGroupSupportedInNetwork(privateNetwork), + _networkMgr.getNetworkTag(vm.getHypervisorType(), privateNetwork)); + } else { + String vlanTag = privateNetwork.getBroadcastUri().getHost(); + String netmask = NetUtils.getCidrNetmask(privateNetwork.getCidr()); + PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, privateNetwork.getGateway(), netmask, + NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress()))); + + 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.setBroadcastType(BroadcastDomainType.Vlan); + privateNicProfile.setFormat(AddressFormat.Ip4); + privateNicProfile.setReservationId(String.valueOf(ip.getVlanTag())); + privateNicProfile.setMacAddress(ip.getMacAddress()); + } + + return privateNicProfile; } protected NicProfile createGuestNicProfileForVpcRouter(Network guestNetwork) { diff --git a/server/src/com/cloud/network/vpc/PrivateIpAddress.java b/server/src/com/cloud/network/vpc/PrivateIpAddress.java index 1b01ed9aeb5..826bea22e25 100644 --- a/server/src/com/cloud/network/vpc/PrivateIpAddress.java +++ b/server/src/com/cloud/network/vpc/PrivateIpAddress.java @@ -16,7 +16,6 @@ // under the License. package com.cloud.network.vpc; -import com.cloud.utils.net.NetUtils; public class PrivateIpAddress implements PrivateIp{ @@ -35,13 +34,13 @@ public class PrivateIpAddress implements PrivateIp{ * @param macAddress TODO * @param physicalNetworkId TODO */ - public PrivateIpAddress(PrivateIpVO privateIp, String vlanTag, String gateway, String netmask, long macAddress) { + public PrivateIpAddress(PrivateIpVO privateIp, String vlanTag, String gateway, String netmask, String macAddress) { super(); this.ipAddress = privateIp.getIpAddress(); this.vlanTag = vlanTag; this.gateway = gateway; this.netmask = netmask; - this.macAddress = NetUtils.long2Mac(macAddress); + this.macAddress = macAddress; this.networkId = privateIp.getNetworkId(); }