You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/06/28 19:25:07 UTC
[1/12] git commit: VPC: update public IP info in domain_router table
once the VR gets the public nic
Updated Branches:
refs/heads/vpc ce876e24d -> 46b97cbf7
VPC: update public IP info in domain_router table once the VR gets the public nic
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/46b97cbf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/46b97cbf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/46b97cbf
Branch: refs/heads/vpc
Commit: 46b97cbf7d477a6a52c78369475c90172bf43791
Parents: 308fd39
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Wed Jun 27 17:41:27 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Thu Jun 28 10:25:24 2012 -0700
----------------------------------------------------------------------
.../router/VirtualNetworkApplianceManagerImpl.java | 2 +-
.../VpcVirtualNetworkApplianceManagerImpl.java | 18 ++++++++++----
utils/src/com/cloud/utils/net/NetUtils.java | 10 ++++++++
3 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46b97cbf/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index a56ebb0..595d494 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -729,7 +729,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
if (dcVo.getNetworkType() == NetworkType.Basic) {
cmd.addVmData("metadata", "public-ipv4", guestIpAddress);
cmd.addVmData("metadata", "public-hostname", StringUtils.unicodeEscape(vmName));
- }else
+ } else
{
if (router.getPublicIpAddress() == null) {
cmd.addVmData("metadata", "public-ipv4", guestIpAddress);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46b97cbf/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index 76ff190..56c599c 100644
--- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -309,7 +309,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
}
} else {
result = false;
- s_logger.warn("Failed to plug nic for " + ipAddress + " to VPC router " + router);
+ s_logger.warn("Failed to add public ip " + ipAddress + " to VPC router " + router);
}
} catch (Exception ex) {
s_logger.warn("Failed to add ip address " + ipAddress + " from the public network " + publicNetwork +
@@ -748,7 +748,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
try {
//add VPC router to public networks
- List<PublicIp> publicIps = new ArrayList<PublicIp>(1);
+ List<PublicIp> sourceNat = new ArrayList<PublicIp>(1);
for (Nic publicNic : publicNics.keySet()) {
Network publicNtwk = publicNics.get(publicNic);
IPAddressVO userIp = _ipAddressDao.findByIpAndSourceNetworkId(publicNtwk.getId(),
@@ -757,7 +757,15 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
if (userIp.isSourceNat()) {
PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()),
NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress()));
- publicIps.add(publicIp);
+ sourceNat.add(publicIp);
+
+ if (router.getPublicIpAddress() == null) {
+ DomainRouterVO routerVO = _routerDao.findById(router.getId());
+ routerVO.setPublicIpAddress(publicNic.getIp4Address());
+ routerVO.setPublicNetmask(publicNic.getNetmask());
+ routerVO.setPublicMacAddress(publicNic.getMacAddress());
+ _routerDao.update(routerVO.getId(), routerVO);
+ }
}
PlugNicCommand plugNicCmd = new PlugNicCommand(_itMgr.toVmTO(profile), getNicTO(router, publicNic.getNetworkId()));
@@ -765,8 +773,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
}
// create ip assoc for source nat
- if (!publicIps.isEmpty()) {
- createVpcAssociateIPCommands(router, publicIps, cmds);
+ if (!sourceNat.isEmpty()) {
+ createVpcAssociateIPCommands(router, sourceNat, cmds);
}
for (Nic guestNic : guestNics.keySet()) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/46b97cbf/utils/src/com/cloud/utils/net/NetUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java
index 886f441..0d3879d 100755
--- a/utils/src/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/com/cloud/utils/net/NetUtils.java
@@ -1051,5 +1051,15 @@ public class NetUtils {
return true;
}
+
+ public static boolean isNetworksOverlap(String cidrA, String cidrB) {
+ Long[] cidrALong = cidrToLong(cidrA);
+ Long[] cidrBLong = cidrToLong(cidrB);
+ if (cidrALong == null || cidrBLong == null) {
+ return false;
+ }
+ long shift = 32 - (cidrALong[1] > cidrBLong[1] ? cidrBLong[1] : cidrALong[1]);
+ return ((cidrALong[0] >> shift) == (cidrBLong[0] >> shift));
+ }
}