mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 11:52:28 +01:00
Removing references to DataCenter - providers, using the networkoffering -> providers map instead.
TODO: - Still leaving the provider columns in data_center schema as-is for CloudKit and BareMetal - ExternalNetworkDeviceMgrImpl still needs to fix the dataCenter.setProviders calls and externalNetworkApplicance usage checks to see if zone has external networking.
This commit is contained in:
parent
766c898504
commit
780e0efe79
@ -74,8 +74,6 @@ public interface NetworkService {
|
||||
|
||||
NetworkProfile convertNetworkToNetworkProfile(long networkId);
|
||||
|
||||
Map<Service, Map<Capability, String>> getZoneCapabilities(long zoneId);
|
||||
|
||||
Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkId, long zoneId);
|
||||
|
||||
boolean isNetworkAvailableInDomain(long networkId, long domainId);
|
||||
|
||||
@ -165,7 +165,7 @@ public class DataCenterVO implements DataCenter {
|
||||
public void setFirewallProvider(String firewallProvider) {
|
||||
this.firewallProvider = firewallProvider;
|
||||
}
|
||||
|
||||
|
||||
public DataCenterVO(long id, String name, String description, String dns1, String dns2, String dns3, String dns4, String guestCidr, String domain, Long domainId, NetworkType zoneType, String zoneToken, String domainSuffix) {
|
||||
this(name, description, dns1, dns2, dns3, dns4, guestCidr, domain, domainId, zoneType, zoneToken, domainSuffix);
|
||||
this.id = id;
|
||||
@ -221,7 +221,7 @@ public class DataCenterVO implements DataCenter {
|
||||
public void setUserDataProvider(String userDataProvider) {
|
||||
this.userDataProvider = userDataProvider;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Long getDomainId() {
|
||||
return domainId;
|
||||
|
||||
@ -190,9 +190,9 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
return zoneId + "-" + name + "-" + ip;
|
||||
}
|
||||
|
||||
protected HostVO getExternalNetworkAppliance(long zoneId, Host.Type type) {
|
||||
protected HostVO getExternalNetworkAppliance(long zoneId, long networkOfferingId, Host.Type type) {
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
if (!_networkMgr.zoneIsConfiguredForExternalNetworking(zoneId)) {
|
||||
if (!_networkMgr.networkIsConfiguredForExternalNetworking(zoneId, networkOfferingId)) {
|
||||
s_logger.debug("Zone " + zone.getName() + " is not configured for external networking.");
|
||||
return null;
|
||||
} else {
|
||||
@ -389,7 +389,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
// Find the external load balancer in this zone
|
||||
long zoneId = guestConfig.getDataCenterId();
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zoneId, Host.Type.ExternalLoadBalancer);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zoneId, guestConfig.getNetworkOfferingId(), Host.Type.ExternalLoadBalancer);
|
||||
|
||||
if (externalLoadBalancer == null) {
|
||||
return false;
|
||||
@ -433,7 +433,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
// Find the external load balancer in this zone
|
||||
long zoneId = network.getDataCenterId();
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zoneId, Host.Type.ExternalLoadBalancer);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zoneId, network.getNetworkOfferingId(), Host.Type.ExternalLoadBalancer);
|
||||
|
||||
if (externalLoadBalancer == null) {
|
||||
return false;
|
||||
@ -443,7 +443,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
boolean externalLoadBalancerIsInline = externalLoadBalancerIsInline(externalLoadBalancer);
|
||||
HostVO externalFirewall = null;
|
||||
if (externalLoadBalancerIsInline) {
|
||||
externalFirewall = getExternalNetworkAppliance(zoneId, Host.Type.ExternalFirewall);
|
||||
externalFirewall = getExternalNetworkAppliance(zoneId, network.getNetworkOfferingId(), Host.Type.ExternalFirewall);
|
||||
if (externalFirewall == null) {
|
||||
String msg = "External load balancer in zone " + zone.getName() + " is inline, but no external firewall in this zone.";
|
||||
s_logger.error(msg);
|
||||
@ -675,7 +675,9 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
|
||||
Host externalFirewall = _agentMgr.addHost(zoneId, resource, Host.Type.ExternalFirewall, hostDetails);
|
||||
if (externalFirewall != null) {
|
||||
zone.setFirewallProvider(Network.Provider.JuniperSRX.getName());
|
||||
/* With NAAS, we no longer store default global providers with Zone.
|
||||
*
|
||||
zone.setFirewallProvider(Network.Provider.JuniperSRX.getName());
|
||||
zone.setUserDataProvider(Network.Provider.DhcpServer.getName());
|
||||
zone.setVpnProvider(null);
|
||||
|
||||
@ -695,7 +697,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
zone.setLoadBalancerProvider(Network.Provider.None.getName());
|
||||
}
|
||||
|
||||
_dcDao.update(zone.getId(), zone);
|
||||
_dcDao.update(zone.getId(), zone);*/
|
||||
return externalFirewall;
|
||||
} else {
|
||||
return null;
|
||||
@ -717,7 +719,9 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
|
||||
try {
|
||||
if (_agentMgr.maintain(hostId) && _agentMgr.deleteHost(hostId, false, false, caller)) {
|
||||
DataCenterVO zone = _dcDao.findById(externalFirewall.getDataCenterId());
|
||||
/* With NAAS, we do not have the concept of global providers stored with Zone
|
||||
*
|
||||
* DataCenterVO zone = _dcDao.findById(externalFirewall.getDataCenterId());
|
||||
zone.setFirewallProvider(Network.Provider.VirtualRouter.getName());
|
||||
zone.setUserDataProvider(Network.Provider.VirtualRouter.getName());
|
||||
zone.setVpnProvider(Network.Provider.VirtualRouter.getName());
|
||||
@ -742,7 +746,8 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
}
|
||||
}
|
||||
|
||||
return _dcDao.update(zone.getId(), zone);
|
||||
return _dcDao.update(zone.getId(), zone);*/
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@ -796,7 +801,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
// Find the external firewall in this zone
|
||||
long zoneId = network.getDataCenterId();
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zoneId, Host.Type.ExternalFirewall);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zoneId, network.getNetworkOfferingId(), Host.Type.ExternalFirewall);
|
||||
|
||||
if (externalFirewall == null) {
|
||||
return false;
|
||||
@ -877,7 +882,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
// Find the external firewall in this zone
|
||||
long zoneId = network.getDataCenterId();
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zoneId, Host.Type.ExternalFirewall);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zoneId, network.getNetworkOfferingId(), Host.Type.ExternalFirewall);
|
||||
|
||||
if (externalFirewall == null) {
|
||||
return false;
|
||||
@ -947,7 +952,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
|
||||
|
||||
public boolean manageRemoteAccessVpn(boolean create, Network network, RemoteAccessVpn vpn) throws ResourceUnavailableException {
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(network.getDataCenterId(), Host.Type.ExternalFirewall);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(network.getDataCenterId(), network.getNetworkOfferingId(), Host.Type.ExternalFirewall);
|
||||
|
||||
if (externalFirewall == null) {
|
||||
return false;
|
||||
@ -986,7 +991,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
}
|
||||
|
||||
public boolean manageRemoteAccessVpnUsers(Network network, RemoteAccessVpn vpn, List<? extends VpnUser> vpnUsers) throws ResourceUnavailableException {
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(network.getDataCenterId(), Host.Type.ExternalFirewall);
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(network.getDataCenterId(), network.getNetworkOfferingId(), Host.Type.ExternalFirewall);
|
||||
|
||||
if (externalFirewall == null) {
|
||||
return false;
|
||||
@ -1271,14 +1276,20 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
|
||||
s_logger.debug("External network stats collector is running...");
|
||||
for (DataCenterVO zone : _dcDao.listAll()) {
|
||||
// Make sure the zone is configured for external networking
|
||||
if (!_networkMgr.zoneIsConfiguredForExternalNetworking(zone.getId())) {
|
||||
|
||||
//FIXME: add another way to check if zone has external networking.
|
||||
|
||||
if (!_networkMgr.zoneIsConfiguredForExternalNetworking(zone.getId())) {
|
||||
s_logger.debug("Zone " + zone.getName() + " is not configured for external networking, so skipping usage check.");
|
||||
continue;
|
||||
}
|
||||
|
||||
// Only collect stats if there is an external firewall in this zone
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zone.getId(), Host.Type.ExternalFirewall);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zone.getId(), Host.Type.ExternalLoadBalancer);
|
||||
|
||||
//FIXME: add another way to check if zone has external networking.
|
||||
|
||||
HostVO externalFirewall = getExternalNetworkAppliance(zone.getId(), 0, Host.Type.ExternalFirewall);
|
||||
HostVO externalLoadBalancer = getExternalNetworkAppliance(zone.getId(), 0, Host.Type.ExternalLoadBalancer);
|
||||
|
||||
if (externalFirewall == null) {
|
||||
s_logger.debug("Skipping usage check for zone " + zone.getName());
|
||||
|
||||
@ -187,10 +187,13 @@ public interface NetworkManager extends NetworkService {
|
||||
Nic getDefaultNic(long vmId);
|
||||
|
||||
List<? extends PasswordServiceProvider> getPasswordResetElements();
|
||||
|
||||
|
||||
@Deprecated
|
||||
boolean zoneIsConfiguredForExternalNetworking(long zoneId);
|
||||
|
||||
boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkOfferingId);
|
||||
|
||||
Map<Capability, String> getServiceCapabilities(long zoneId, Long networkOfferingId, Service service);
|
||||
Map<Capability, String> getServiceCapabilities(Long networkOfferingId, Service service);
|
||||
|
||||
boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException;
|
||||
|
||||
|
||||
@ -28,7 +28,6 @@ import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
@ -270,6 +269,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
private static HashMap<Service, List<Provider>> s_serviceToImplementedProvidersMap = new HashMap<Service, List<Provider>>();
|
||||
private static HashMap<String, String> s_providerToNetworkElementMap = new HashMap<String, String>();
|
||||
|
||||
private NetworkElement getElementImplementingProvider(String providerName){
|
||||
String elementName = s_providerToNetworkElementMap.get(providerName);
|
||||
NetworkElement element = _networkElements.get(elementName);
|
||||
return element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PublicIp assignPublicIpAddress(long dcId, Long podId, Account owner, VlanType type, Long networkId, String requestedIp) throws InsufficientAddressCapacityException {
|
||||
return fetchNewPublicIp(dcId, podId, null, owner, type, networkId, false, true, requestedIp);
|
||||
@ -1794,7 +1799,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
|
||||
// If networkDomain is not specified, take it from the global configuration
|
||||
if (isServiceSupportedByNetworkOffering(networkOfferingId, Service.Dns)) {
|
||||
Map<Network.Capability, String> dnsCapabilities = getServiceCapabilities(zoneId, networkOfferingId, Service.Dns);
|
||||
Map<Network.Capability, String> dnsCapabilities = getServiceCapabilities(networkOfferingId, Service.Dns);
|
||||
String isUpdateDnsSupported = dnsCapabilities.get(Capability.AllowDnsSuffixModification);
|
||||
if (isUpdateDnsSupported == null || !Boolean.valueOf(isUpdateDnsSupported)) {
|
||||
if (networkDomain != null) {
|
||||
@ -2600,65 +2605,30 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
return _networksDao.getActiveNicsIn(networkId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Service, Map<Capability, String>> getZoneCapabilities(long zoneId) {
|
||||
DataCenterVO dc = _dcDao.findById(zoneId);
|
||||
if (dc == null) {
|
||||
throw new InvalidParameterValueException("Zone id=" + zoneId + " doesn't exist in the system.");
|
||||
}
|
||||
|
||||
// Get all service providers from the datacenter
|
||||
Map<Service, String> providers = new HashMap<Service, String>();
|
||||
providers.put(Service.Firewall, dc.getFirewallProvider());
|
||||
providers.put(Service.Lb, dc.getLoadBalancerProvider());
|
||||
providers.put(Service.Vpn, dc.getVpnProvider());
|
||||
providers.put(Service.Dns, dc.getDnsProvider());
|
||||
providers.put(Service.Gateway, dc.getGatewayProvider());
|
||||
providers.put(Service.UserData, dc.getUserDataProvider());
|
||||
providers.put(Service.Dhcp, dc.getDhcpProvider());
|
||||
|
||||
Map<Service, Map<Capability, String>> zoneCapabilities = new HashMap<Service, Map<Capability, String>>();
|
||||
|
||||
for (NetworkElement element : _networkElements) {
|
||||
if (providers.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
Map<Service, Map<Capability, String>> elementCapabilities = element.getCapabilities();
|
||||
if (elementCapabilities != null) {
|
||||
Iterator<Service> it = providers.keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
Service service = it.next();
|
||||
String zoneProvider = providers.get(service);
|
||||
if (zoneProvider != null) {
|
||||
if (zoneProvider.equalsIgnoreCase(element.getProvider().getName())) {
|
||||
if (elementCapabilities.containsKey(service)) {
|
||||
Map<Capability, String> capabilities = elementCapabilities.get(service);
|
||||
// Verify if Service support capability
|
||||
if (capabilities != null) {
|
||||
for (Capability capability : capabilities.keySet()) {
|
||||
assert (service.containsCapability(capability)) : "Capability " + capability.getName() + " is not supported by the service " + service.getName();
|
||||
}
|
||||
}
|
||||
zoneCapabilities.put(service, capabilities);
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return zoneCapabilities;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkOfferingId, long zoneId) {
|
||||
|
||||
Map<Service, Map<Capability, String>> zoneCapabilities = getZoneCapabilities(zoneId);
|
||||
Map<Service, Map<Capability, String>> networkCapabilities = new HashMap<Service, Map<Capability, String>>();
|
||||
|
||||
for (Service service : zoneCapabilities.keySet()) {
|
||||
if (isServiceSupportedByNetworkOffering(networkOfferingId, service)) {
|
||||
networkCapabilities.put(service, zoneCapabilities.get(service));
|
||||
//list all services of this networkOffering
|
||||
List<NetworkOfferingServiceMapVO> servicesMap = _ntwkOfferingSrvcDao.getServices(networkOfferingId);
|
||||
for(NetworkOfferingServiceMapVO instance : servicesMap ){
|
||||
Service service = Service.getService(instance.getService());
|
||||
//FIXME what if a service has multiple providers in the same networkOffering?
|
||||
if(networkCapabilities.containsKey(service)){
|
||||
if(s_logger.isDebugEnabled()){
|
||||
s_logger.debug("Network Offering: "+ networkOfferingId +" has multiple Providers associated for this Service:"+service.getName());
|
||||
s_logger.debug("Returning the capabilities of the first Provider");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
NetworkElement element = getElementImplementingProvider(instance.getProvider());
|
||||
if(element != null){
|
||||
Map<Service, Map<Capability, String>> elementCapabilities = element.getCapabilities();;
|
||||
if (elementCapabilities != null && elementCapabilities.get(service) != null) {
|
||||
networkCapabilities.put(service, elementCapabilities.get(instance.getService()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2666,18 +2636,35 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Capability, String> getServiceCapabilities(long zoneId, Long networkOfferingId, Service service) {
|
||||
public Map<Capability, String> getServiceCapabilities(Long networkOfferingId, Service service) {
|
||||
|
||||
if (!isServiceSupportedByNetworkOffering(networkOfferingId, service)) {
|
||||
throw new UnsupportedServiceException("Service " + service.getName() + " is not supported by the network offering id=" + networkOfferingId);
|
||||
}
|
||||
|
||||
Map<Capability, String> serviceCapabilities = new HashMap<Capability, String>();
|
||||
|
||||
Map<Service, Map<Capability, String>> networkCapabilities = getZoneCapabilities(zoneId);
|
||||
if (networkCapabilities.get(service) == null) {
|
||||
throw new UnsupportedServiceException("Service " + service.getName() + " is not supported in zone id=" + zoneId);
|
||||
//get the Provider for this Service for this offering
|
||||
List<String> serviceProviderNames = _ntwkOfferingSrvcDao.getProvidersForService(networkOfferingId, service);
|
||||
|
||||
//FIXME we return the capabilities of the first provider of the service - what if we have multiple providers for same Service?
|
||||
if(serviceProviderNames != null && !serviceProviderNames.isEmpty()){
|
||||
NetworkElement element = getElementImplementingProvider(serviceProviderNames.get(0));
|
||||
if(element != null){
|
||||
Map<Service, Map<Capability, String>> elementCapabilities = element.getCapabilities();;
|
||||
|
||||
if (elementCapabilities == null || elementCapabilities.get(service) == null) {
|
||||
throw new UnsupportedServiceException("Service " + service.getName() + " is not supported by the element=" + element.getName() + " implementing Provider=" + serviceProviderNames.get(0));
|
||||
}
|
||||
serviceCapabilities = elementCapabilities.get(service);
|
||||
}
|
||||
}else{
|
||||
if(s_logger.isDebugEnabled()){
|
||||
s_logger.debug("Network Offering: "+ networkOfferingId +" does not have any Providers associated for this Service:"+service.getName());
|
||||
}
|
||||
}
|
||||
|
||||
return networkCapabilities.get(service);
|
||||
|
||||
return serviceCapabilities;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -2907,6 +2894,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
// try to use the method networkIsConfiguredForExternalNetworking instead
|
||||
public boolean zoneIsConfiguredForExternalNetworking(long zoneId) {
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
|
||||
@ -2925,6 +2914,28 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkOfferingId) {
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
|
||||
boolean usesJuniperForGatewayService = _ntwkOfferingSrvcDao.isProviderSupported(networkOfferingId, Service.Gateway, Network.Provider.JuniperSRX);
|
||||
boolean usesJuniperForFirewallService = _ntwkOfferingSrvcDao.isProviderSupported(networkOfferingId, Service.Firewall, Network.Provider.JuniperSRX);
|
||||
boolean usesNetscalarForLBService = _ntwkOfferingSrvcDao.isProviderSupported(networkOfferingId, Service.Lb, Network.Provider.NetscalerMPX);
|
||||
|
||||
if (zone.getNetworkType() == NetworkType.Advanced) {
|
||||
if (usesJuniperForGatewayService && usesJuniperForFirewallService) {
|
||||
return true;
|
||||
} else if (_ntwkOfferingSrvcDao.isServiceSupported(networkOfferingId, Service.Gateway) && usesNetscalarForLBService) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return usesJuniperForFirewallService;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isServiceSupportedByNetworkOffering(long networkOfferingId, Network.Service service) {
|
||||
@ -3134,7 +3145,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
}
|
||||
|
||||
|
||||
Map<Network.Capability, String> dnsCapabilities = getServiceCapabilities(network.getDataCenterId(), network.getNetworkOfferingId(), Service.Dns);
|
||||
Map<Network.Capability, String> dnsCapabilities = getServiceCapabilities(network.getNetworkOfferingId(), Service.Dns);
|
||||
String isUpdateDnsSupported = dnsCapabilities.get(Capability.AllowDnsSuffixModification);
|
||||
if (isUpdateDnsSupported == null || !Boolean.valueOf(isUpdateDnsSupported)) {
|
||||
throw new InvalidParameterValueException("Domain name change is not supported for network id=" + network.getNetworkOfferingId() + " in zone id=" + network.getDataCenterId());
|
||||
@ -3893,8 +3904,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
|
||||
if(enabled){
|
||||
//TODO: need to check if the provider element is ready for the physical network.
|
||||
String elementName = s_providerToNetworkElementMap.get(provider.getProviderName());
|
||||
NetworkElement element = _networkElements.get(elementName);
|
||||
NetworkElement element = getElementImplementingProvider(provider.getProviderName());
|
||||
//element.isReady();
|
||||
provider.setState(PhysicalNetworkServiceProvider.State.Enabled);
|
||||
}else{
|
||||
|
||||
@ -41,10 +41,9 @@ import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.PublicIpAddress;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.StaticNat;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
|
||||
import com.cloud.utils.component.AdapterBase;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.vm.NicProfile;
|
||||
@ -60,6 +59,7 @@ public class F5ExternalLoadBalancerElement extends AdapterBase implements LoadBa
|
||||
@Inject NetworkManager _networkManager;
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkManager;
|
||||
@Inject ConfigurationManager _configMgr;
|
||||
@Inject NetworkOfferingServiceMapDao _ntwkOfferingSrvcDao;
|
||||
|
||||
private boolean canHandle(Network config) {
|
||||
DataCenter zone = _configMgr.getZone(config.getDataCenterId());
|
||||
@ -68,8 +68,8 @@ public class F5ExternalLoadBalancerElement extends AdapterBase implements LoadBa
|
||||
return false;
|
||||
}
|
||||
|
||||
return (_networkManager.zoneIsConfiguredForExternalNetworking(zone.getId()) &&
|
||||
zone.getLoadBalancerProvider() != null && zone.getLoadBalancerProvider().equals(Network.Provider.F5BigIp.getName()));
|
||||
return (_networkManager.networkIsConfiguredForExternalNetworking(zone.getId(), config.getNetworkOfferingId()) &&
|
||||
_ntwkOfferingSrvcDao.isProviderSupported(config.getNetworkOfferingId(), Service.Lb, Network.Provider.F5BigIp));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -47,7 +47,6 @@ import com.cloud.network.RemoteAccessVpn;
|
||||
import com.cloud.network.VpnUser;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.StaticNat;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
@ -79,7 +78,7 @@ public class JuniperSRXExternalFirewallElement extends AdapterBase implements So
|
||||
return false;
|
||||
}
|
||||
|
||||
return _networkManager.zoneIsConfiguredForExternalNetworking(zone.getId());
|
||||
return _networkManager.networkIsConfiguredForExternalNetworking(zone.getId(),config.getNetworkOfferingId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -41,10 +41,9 @@ import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.PublicIpAddress;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.StaticNat;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
|
||||
import com.cloud.utils.component.AdapterBase;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.vm.NicProfile;
|
||||
@ -60,6 +59,7 @@ public class NetscalerExternalLoadBalancerElement extends AdapterBase implements
|
||||
@Inject NetworkManager _networkManager;
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkManager;
|
||||
@Inject ConfigurationManager _configMgr;
|
||||
@Inject NetworkOfferingServiceMapDao _ntwkOfferingSrvcDao;
|
||||
|
||||
private boolean canHandle(Network config) {
|
||||
DataCenter zone = _configMgr.getZone(config.getDataCenterId());
|
||||
@ -68,8 +68,8 @@ public class NetscalerExternalLoadBalancerElement extends AdapterBase implements
|
||||
return false;
|
||||
}
|
||||
|
||||
return (_networkManager.zoneIsConfiguredForExternalNetworking(zone.getId()) &&
|
||||
zone.getLoadBalancerProvider() != null && zone.getLoadBalancerProvider().equals(Network.Provider.NetscalerMPX.getName()));
|
||||
return (_networkManager.networkIsConfiguredForExternalNetworking(zone.getId(), config.getNetworkOfferingId()) &&
|
||||
_ntwkOfferingSrvcDao.isProviderSupported(config.getNetworkOfferingId(), Service.Lb, Network.Provider.NetscalerMPX));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -358,10 +358,10 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
|
||||
|
||||
if (purpose == Purpose.LoadBalancing) {
|
||||
if (!_elbEnabled) {
|
||||
protocolCapabilities = _networkMgr.getServiceCapabilities(network.getDataCenterId(), network.getNetworkOfferingId(), Service.Lb);
|
||||
protocolCapabilities = _networkMgr.getServiceCapabilities(network.getNetworkOfferingId(), Service.Lb);
|
||||
}
|
||||
} else {
|
||||
protocolCapabilities = _networkMgr.getServiceCapabilities(network.getDataCenterId(), network.getNetworkOfferingId(), Service.Firewall);
|
||||
protocolCapabilities = _networkMgr.getServiceCapabilities(network.getNetworkOfferingId(), Service.Firewall);
|
||||
}
|
||||
|
||||
if (protocolCapabilities != null) {
|
||||
|
||||
@ -88,7 +88,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
NetworkVO config = (NetworkVO) super.design(offering, plan, userSpecified, owner);
|
||||
if (config == null) {
|
||||
return null;
|
||||
} else if (_networkMgr.zoneIsConfiguredForExternalNetworking(plan.getDataCenterId())) {
|
||||
} else if (_networkMgr.networkIsConfiguredForExternalNetworking(plan.getDataCenterId(), config.getNetworkOfferingId())) {
|
||||
config.setState(State.Allocated);
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!_networkMgr.zoneIsConfiguredForExternalNetworking(config.getDataCenterId())) {
|
||||
if (!_networkMgr.networkIsConfiguredForExternalNetworking(config.getDataCenterId(), config.getNetworkOfferingId())) {
|
||||
return super.implement(config, offering, dest, context);
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
public NicProfile allocate(Network config, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm) throws InsufficientVirtualNetworkCapcityException,
|
||||
InsufficientAddressCapacityException {
|
||||
|
||||
if (_networkMgr.zoneIsConfiguredForExternalNetworking(config.getDataCenterId()) && nic != null && nic.getRequestedIp() != null) {
|
||||
if (_networkMgr.networkIsConfiguredForExternalNetworking(config.getDataCenterId(), config.getNetworkOfferingId()) && nic != null && nic.getRequestedIp() != null) {
|
||||
throw new CloudRuntimeException("Does not support custom ip allocation at this time: " + nic);
|
||||
}
|
||||
|
||||
@ -204,7 +204,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_networkMgr.zoneIsConfiguredForExternalNetworking(config.getDataCenterId())) {
|
||||
if (_networkMgr.networkIsConfiguredForExternalNetworking(config.getDataCenterId(), config.getNetworkOfferingId())) {
|
||||
nic.setIp4Address(null);
|
||||
nic.setGateway(null);
|
||||
nic.setNetmask(null);
|
||||
@ -221,7 +221,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
return;
|
||||
}
|
||||
DataCenter dc = _dcDao.findById(config.getDataCenterId());
|
||||
if (_networkMgr.zoneIsConfiguredForExternalNetworking(config.getDataCenterId())) {
|
||||
if (_networkMgr.networkIsConfiguredForExternalNetworking(config.getDataCenterId(), config.getNetworkOfferingId())) {
|
||||
nic.setBroadcastUri(config.getBroadcastUri());
|
||||
nic.setIsolationUri(config.getBroadcastUri());
|
||||
nic.setDns1(dc.getDns1());
|
||||
@ -255,7 +255,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
||||
}
|
||||
|
||||
NetworkVO network = _networkDao.findById(nic.getNetworkId());
|
||||
if (network != null && _networkMgr.zoneIsConfiguredForExternalNetworking(network.getDataCenterId())) {
|
||||
if (network != null && _networkMgr.networkIsConfiguredForExternalNetworking(network.getDataCenterId(), network.getNetworkOfferingId())) {
|
||||
return true;
|
||||
} else {
|
||||
return super.release(nic, vm, reservationId);
|
||||
|
||||
@ -74,6 +74,7 @@ public class NetworkOfferingServiceMapDaoImpl extends GenericDaoBase<NetworkOffe
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> getServicesForProvider(long networkOfferingId, Provider provider) {
|
||||
List<String> services = new ArrayList<String>();
|
||||
|
||||
@ -118,6 +118,7 @@ import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao;
|
||||
import com.cloud.network.IPAddressVO;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.NetworkVO;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
@ -139,6 +140,7 @@ import com.cloud.offering.NetworkOffering.Availability;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
|
||||
import com.cloud.org.Cluster;
|
||||
import com.cloud.org.Grouping;
|
||||
import com.cloud.projects.Project;
|
||||
@ -346,6 +348,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
protected FirewallManager _firewallMgr;
|
||||
@Inject
|
||||
protected ProjectManager _projectMgr;
|
||||
@Inject
|
||||
protected NetworkOfferingServiceMapDao _ntwkOfferingSrvcDao;
|
||||
|
||||
protected ScheduledExecutorService _executor = null;
|
||||
protected int _expungeInterval;
|
||||
@ -2691,6 +2695,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
|
||||
List<NicVO> nics = _nicDao.listByVmId(vm.getId());
|
||||
NicVO guestNic = null;
|
||||
NetworkVO guestNetwork = null;
|
||||
for (NicVO nic : nics) {
|
||||
NetworkVO network = _networkDao.findById(nic.getNetworkId());
|
||||
long isDefault = (nic.isDefaultNic()) ? 1 : 0;
|
||||
@ -2699,6 +2704,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
if (network.getTrafficType() == TrafficType.Guest) {
|
||||
originalIp = nic.getIp4Address();
|
||||
guestNic = nic;
|
||||
guestNetwork = network;
|
||||
}
|
||||
}
|
||||
boolean ipChanged = false;
|
||||
@ -2717,7 +2723,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
if (ipChanged) {
|
||||
DataCenterVO dc = _dcDao.findById(vm.getDataCenterIdToDeployIn());
|
||||
UserVmVO userVm = profile.getVirtualMachine();
|
||||
if (dc.getDhcpProvider().equalsIgnoreCase(Provider.ExternalDhcpServer.getName())){
|
||||
//dc.getDhcpProvider().equalsIgnoreCase(Provider.ExternalDhcpServer.getName())
|
||||
if (_ntwkOfferingSrvcDao.isProviderSupported(guestNetwork.getNetworkOfferingId(), Service.Dhcp, Provider.ExternalDhcpServer)){
|
||||
_nicDao.update(guestNic.getId(), guestNic);
|
||||
userVm.setPrivateIpAddress(guestNic.getIp4Address());
|
||||
_vmDao.update(userVm.getId(), userVm);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user