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/07/06 20:11:02 UTC
[8/11] git commit: VPC: CS-15447 - fail vpc creation when vpc
provider is not enabled at least in one physical network in the target zone
VPC: CS-15447 - fail vpc creation when vpc provider is not enabled at least in one physical network in the target zone
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/07eb6e3c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/07eb6e3c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/07eb6e3c
Branch: refs/heads/vpc
Commit: 07eb6e3cf76be45ce1e27afa9df48444b7b95b86
Parents: b4fec75
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Thu Jul 5 13:33:46 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Fri Jul 6 11:08:28 2012 -0700
----------------------------------------------------------------------
.../src/com/cloud/network/NetworkManagerImpl.java | 6 ++--
.../src/com/cloud/network/vpc/VpcManagerImpl.java | 19 ++++++++++++++-
2 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07eb6e3c/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 1e677a0..c46bdf4 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -2079,7 +2079,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
List<Provider> providersToImplement = getNetworkProviders(network.getId());
for (NetworkElement element : _networkElements) {
if (providersToImplement.contains(element.getProvider())) {
- if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
+ if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), element.getProvider().getName())) {
// The physicalNetworkId will not get translated into a uuid by the reponse serializer,
// because the serializer would look up the NetworkVO class's table and retrieve the
// network id instead of the physical network id.
@@ -3515,7 +3515,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
for (NetworkElement element : _networkElements) {
if (providersToShutdown.contains(element.getProvider())) {
try {
- if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
+ if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), element.getProvider().getName())) {
s_logger.warn("Unable to complete shutdown of the network elements due to element: " + element.getName() + " either doesn't exist or not enabled in the physical network "
+ getPhysicalNetworkId(network));
success = false;
@@ -3602,7 +3602,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
for (NetworkElement element : _networkElements) {
if (providersToDestroy.contains(element.getProvider())) {
try {
- if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
+ if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), element.getProvider().getName())) {
s_logger.warn("Unable to complete destroy of the network elements due to element: " + element.getName() + " either doesn't exist or not enabled in the physical network "
+ getPhysicalNetworkId(network));
success = false;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07eb6e3c/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 5cc8f86..be6b2d9 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -56,6 +56,7 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetwork;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.NetworkDao;
+import com.cloud.network.dao.PhysicalNetworkDao;
import com.cloud.network.element.VpcProvider;
import com.cloud.network.vpc.VpcOffering.State;
import com.cloud.network.vpc.Dao.PrivateIpDao;
@@ -132,6 +133,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
NetworkOfferingServiceMapDao _ntwkOffServiceDao ;
@Inject
VpcOfferingServiceMapDao _vpcOffServiceDao;
+ @Inject
+ PhysicalNetworkDao _pNtwkDao;
private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("VpcChecker"));
@@ -502,7 +505,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
if (networkDomain == null) {
networkDomain = "cs" + Long.toHexString(owner.getId()) + _ntwkMgr.getDefaultNetworkDomain();
}
- }
+ }
return createVpc(zoneId, vpcOffId, owner, vpcName, displayText, cidr, networkDomain);
}
@@ -511,6 +514,20 @@ public class VpcManagerImpl implements VpcManager, Manager{
public Vpc createVpc(long zoneId, long vpcOffId, Account vpcOwner, String vpcName, String displayText, String cidr,
String networkDomain) {
+ //the provider has to be enabled at least in one network in the zone
+ boolean providerEnabled = false;
+ for (PhysicalNetwork pNtwk : _pNtwkDao.listByZone(zoneId)) {
+ if (_ntwkMgr.isProviderEnabledInPhysicalNetwork(pNtwk.getId(), Provider.VPCVirtualRouter.getName())) {
+ providerEnabled = true;
+ break;
+ }
+ }
+
+ if (!providerEnabled) {
+ throw new InvalidParameterValueException("Provider " + Provider.VPCVirtualRouter.getName() +
+ " should be enabled in at least one physical network of the zone specified");
+ }
+
//Validate CIDR
if (!NetUtils.isValidCIDR(cidr)) {
throw new InvalidParameterValueException("Invalid CIDR specified " + cidr);