CLOUDSTACK-2285: [GSLB] addNetscalerLoadBalancer with GSLB functionality shouldn't be

exposed in basic zone

imposing restriction that NetScaler can only be added when EIP/ELB
service are available in basic zone.
This commit is contained in:
Murali Reddy 2013-05-29 18:50:06 +05:30
parent c8a0c40a2f
commit ee317287b3
1 changed files with 13 additions and 0 deletions

View File

@ -138,6 +138,8 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
@Inject
NetworkManager _networkMgr;
@Inject
NetworkDao _networksDao = null;
@Inject
InlineLoadBalancerNicMapDao _inlineLoadBalancerNicMapDao;
@Inject
NicDao _nicDao;
@ -208,6 +210,17 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
}
zoneId = pNetwork.getDataCenterId();
DataCenter dc = _dcDao.findById(zoneId);
if (dc.getNetworkType() == DataCenter.NetworkType.Basic) {
List<com.cloud.network.dao.NetworkVO> guestNetworks = _networksDao.listByZoneAndTrafficType(dc.getId(), TrafficType.Guest);
com.cloud.network.dao.NetworkVO basicZoneNetwork = guestNetworks.get(0);
NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(basicZoneNetwork.getNetworkOfferingId());
if (!ntwkOff.getElasticIp() && !ntwkOff.getElasticLb()) {
throw new InvalidParameterValueException("Could not add external load balancer device in to basic zone "
+ " with no Elastic IP and Elastic LB services.");
}
}
PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), ntwkDevice.getNetworkServiceProvder());
if (gslbProvider) {