Return-Path: X-Original-To: apmail-incubator-cloudstack-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 833A2E4BA for ; Mon, 18 Mar 2013 12:27:31 +0000 (UTC) Received: (qmail 40911 invoked by uid 500); 18 Mar 2013 12:27:23 -0000 Delivered-To: apmail-incubator-cloudstack-commits-archive@incubator.apache.org Received: (qmail 40746 invoked by uid 500); 18 Mar 2013 12:27:20 -0000 Mailing-List: contact cloudstack-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-commits@incubator.apache.org Received: (qmail 35911 invoked by uid 99); 18 Mar 2013 12:27:12 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Mar 2013 12:27:12 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 4D85235D75; Mon, 18 Mar 2013 12:27:11 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: tsp@apache.org To: cloudstack-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [17/50] [abbrv] git commit: refs/heads/marvin-refactor - CLOUDSTACK-1218: Use the first IP in the first vlan range for VR in shared network Message-Id: <20130318122711.4D85235D75@tyr.zones.apache.org> Date: Mon, 18 Mar 2013 12:27:11 +0000 (UTC) CLOUDSTACK-1218: Use the first IP in the first vlan range for VR in shared network Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/98291d04 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/98291d04 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/98291d04 Branch: refs/heads/marvin-refactor Commit: 98291d043de47ef6c999907aca3d1d31464f6a87 Parents: 0bf5f5e Author: Sheng Yang Authored: Wed Mar 13 17:02:19 2013 -0700 Committer: Sheng Yang Committed: Thu Mar 14 13:13:31 2013 -0700 ---------------------------------------------------------------------- api/src/com/cloud/network/NetworkModel.java | 2 + server/src/com/cloud/network/NetworkModelImpl.java | 17 +++++++ .../router/VirtualNetworkApplianceManagerImpl.java | 35 ++++++++++---- .../com/cloud/network/MockNetworkModelImpl.java | 6 +++ .../test/com/cloud/vpc/MockNetworkModelImpl.java | 6 +++ 5 files changed, 56 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/98291d04/api/src/com/cloud/network/NetworkModel.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/NetworkModel.java b/api/src/com/cloud/network/NetworkModel.java index 9731a61..60e1f7f 100644 --- a/api/src/com/cloud/network/NetworkModel.java +++ b/api/src/com/cloud/network/NetworkModel.java @@ -257,4 +257,6 @@ public interface NetworkModel { void checkIp6Parameters(String startIPv6, String endIPv6, String ip6Gateway, String ip6Cidr) throws InvalidParameterValueException; void checkRequestedIpAddresses(long networkId, String ip4, String ip6) throws InvalidParameterValueException; + + String getStartIpv6Address(long id); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/98291d04/server/src/com/cloud/network/NetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index 46790b3..52089df 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -1972,4 +1972,21 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel { } } } + + @Override + public String getStartIpv6Address(long networkId) { + List vlans = _vlanDao.listVlansByNetworkId(networkId); + if (vlans == null) { + return null; + } + String startIpv6 = null; + // Get the start ip of first create vlan(not the lowest, because if you add a lower vlan, lowest vlan would change) + for (Vlan vlan : vlans) { + if (vlan.getIp6Range() != null) { + startIpv6 = vlan.getIp6Range().split("-")[0]; + break; + } + } + return startIpv6; + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/98291d04/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 3cbd51d..ce65586 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -162,6 +162,7 @@ import com.cloud.network.dao.Site2SiteCustomerGatewayDao; import com.cloud.network.dao.Site2SiteVpnConnectionDao; import com.cloud.network.dao.Site2SiteVpnConnectionVO; import com.cloud.network.dao.Site2SiteVpnGatewayDao; +import com.cloud.network.dao.UserIpv6AddressDao; import com.cloud.network.dao.VirtualRouterProviderDao; import com.cloud.network.dao.VpnUserDao; import com.cloud.network.lb.LoadBalancingRule; @@ -340,6 +341,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V Site2SiteVpnConnectionDao _s2sVpnConnectionDao; @Inject Site2SiteVpnManager _s2sVpnMgr; + @Inject + UserIpv6AddressDao _ipv6Dao; int _routerRamSize; @@ -1696,18 +1699,30 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V boolean hasGuestNetwork = false; if (guestNetwork != null) { s_logger.debug("Adding nic for Virtual Router in Guest network " + guestNetwork); - String defaultNetworkStartIp = null; - if (guestNetwork.getCidr() != null && !setupPublicNetwork) { - String startIp = _networkModel.getStartIpAddress(guestNetwork.getId()); - if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) { - defaultNetworkStartIp = startIp; - } else if (s_logger.isDebugEnabled()){ - s_logger.debug("First ip " + startIp + " in network id=" + guestNetwork.getId() + - " is already allocated, can't use it for domain router; will get random ip address from the range"); - } + String defaultNetworkStartIp = null, defaultNetworkStartIpv6 = null; + if (!setupPublicNetwork) { + if (guestNetwork.getCidr() != null) { + String startIp = _networkModel.getStartIpAddress(guestNetwork.getId()); + if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) { + defaultNetworkStartIp = startIp; + } else if (s_logger.isDebugEnabled()){ + s_logger.debug("First ip " + startIp + " in network id=" + guestNetwork.getId() + + " is already allocated, can't use it for domain router; will get random ip address from the range"); + } + } + + if (guestNetwork.getIp6Cidr() != null) { + String startIpv6 = _networkModel.getStartIpv6Address(guestNetwork.getId()); + if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(guestNetwork.getId(), startIpv6) == null) { + defaultNetworkStartIpv6 = startIpv6; + } else if (s_logger.isDebugEnabled()){ + s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + guestNetwork.getId() + + " is already allocated, can't use it for domain router; will get random ipv6 address from the range"); + } + } } - NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, null); + NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, defaultNetworkStartIpv6); if (setupPublicNetwork) { if (isRedundant) { gatewayNic.setIp4Address(_networkMgr.acquireGuestIpAddress(guestNetwork, null)); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/98291d04/server/test/com/cloud/network/MockNetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/MockNetworkModelImpl.java b/server/test/com/cloud/network/MockNetworkModelImpl.java index d7ffa7d..83dddf4 100644 --- a/server/test/com/cloud/network/MockNetworkModelImpl.java +++ b/server/test/com/cloud/network/MockNetworkModelImpl.java @@ -835,4 +835,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { throws InvalidParameterValueException { // TODO Auto-generated method stub } + + @Override + public String getStartIpv6Address(long id) { + // TODO Auto-generated method stub + return null; + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/98291d04/server/test/com/cloud/vpc/MockNetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vpc/MockNetworkModelImpl.java b/server/test/com/cloud/vpc/MockNetworkModelImpl.java index 5ac8777..7f1f945 100644 --- a/server/test/com/cloud/vpc/MockNetworkModelImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkModelImpl.java @@ -848,4 +848,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { // TODO Auto-generated method stub } + @Override + public String getStartIpv6Address(long id) { + // TODO Auto-generated method stub + return null; + } + }