mirror of https://github.com/apache/cloudstack.git
Virtual router elements: prepare nics only when VirtualRouter is a provider for at least one service in the network
This commit is contained in:
parent
ed176cf3c9
commit
5571afa471
|
|
@ -175,8 +175,6 @@ public interface NetworkManager extends NetworkService {
|
|||
|
||||
Nic getNicInNetwork(long vmId, long networkId);
|
||||
|
||||
Nic getNicInNetworkIncludingRemoved(long vmId, long networkId);
|
||||
|
||||
List<? extends Nic> getNicsForTraffic(long vmId, TrafficType type);
|
||||
|
||||
Network getDefaultNetworkForVm(long vmId);
|
||||
|
|
@ -217,19 +215,15 @@ public interface NetworkManager extends NetworkService {
|
|||
|
||||
Long getPodIdForVlan(long vlanDbId);
|
||||
|
||||
boolean isProviderSupportedInNetwork(long networkId, Service service, Provider provider);
|
||||
|
||||
List<Long> listNetworkOfferingsForUpgrade(long networkId);
|
||||
|
||||
PhysicalNetwork translateZoneIdToPhysicalNetwork(long zoneId);
|
||||
|
||||
boolean isSecurityGroupSupportedInNetwork(Network network);
|
||||
|
||||
boolean isProviderEnabled(PhysicalNetworkServiceProvider provider);
|
||||
boolean isProviderSupportServiceInNetwork(long networkId, Service service, Provider provider);
|
||||
|
||||
boolean isProviderExistAndEnabled(long physicalNetowrkId, String providerName);
|
||||
|
||||
boolean isServiceEnabledInNetwork(long physicalNetworkId, long networkId, Service service);
|
||||
boolean isProviderEnabledInPhysicalNetwork(long physicalNetowrkId, String providerName);
|
||||
|
||||
List<String> getNetworkTags(HypervisorType hType, Network network);
|
||||
|
||||
|
|
@ -251,4 +245,6 @@ public interface NetworkManager extends NetworkService {
|
|||
Long getPhysicalNetworkId(Network network);
|
||||
|
||||
boolean getAllowSubdomainAccessGlobal();
|
||||
|
||||
boolean isProviderInNetwork(Provider provider, long networkId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1414,7 +1414,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
List<Provider> providersToImplement = getNetworkProviders(network.getId());
|
||||
for (NetworkElement element : _networkElements) {
|
||||
if (providersToImplement.contains(element.getProvider())) {
|
||||
if (!isProviderExistAndEnabled(getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
throw new CloudRuntimeException("Service provider " + element.getProvider().getName() + " either doesn't exist or not enabled in physical network id=" + network.getPhysicalNetworkId());
|
||||
}
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
|
|
@ -1440,13 +1440,13 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
element.prepare(network, profile, vmProfile, dest, context);
|
||||
if (vmProfile.getType() == Type.User && element.getProvider() != null) {
|
||||
if (areServicesSupportedInNetwork(network.getId(), Service.Dhcp) &&
|
||||
isProviderSupportedInNetwork(network.getId(), Service.Dhcp, element.getProvider()) &&
|
||||
isProviderSupportServiceInNetwork(network.getId(), Service.Dhcp, element.getProvider()) &&
|
||||
(element instanceof DhcpServiceProvider)) {
|
||||
DhcpServiceProvider sp = (DhcpServiceProvider)element;
|
||||
sp.addDhcpEntry(network, profile, vmProfile, dest, context);
|
||||
}
|
||||
if (areServicesSupportedInNetwork(network.getId(), Service.UserData) &&
|
||||
isProviderSupportedInNetwork(network.getId(), Service.UserData, element.getProvider()) &&
|
||||
isProviderSupportServiceInNetwork(network.getId(), Service.UserData, element.getProvider()) &&
|
||||
(element instanceof UserDataServiceProvider)) {
|
||||
UserDataServiceProvider sp = (UserDataServiceProvider)element;
|
||||
sp.addPasswordAndUserdata(network, profile, vmProfile, dest, context);
|
||||
|
|
@ -2417,13 +2417,13 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
}
|
||||
|
||||
//2) Shutdown all the network elements
|
||||
//get providers to implement
|
||||
List<Provider> providersToImplement = getNetworkProviders(network.getId());
|
||||
//get providers to shutdown
|
||||
List<Provider> providersToShutdown = getNetworkProviders(network.getId());
|
||||
boolean success = true;
|
||||
for (NetworkElement element : _networkElements) {
|
||||
if (providersToImplement.contains(element.getProvider())) {
|
||||
if (providersToShutdown.contains(element.getProvider())) {
|
||||
try {
|
||||
if (!isProviderExistAndEnabled(getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
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;
|
||||
}
|
||||
|
|
@ -2488,28 +2488,37 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
}
|
||||
|
||||
boolean success = true;
|
||||
|
||||
if (!cleanupNetworkResources(networkId, callerAccount, context.getCaller().getId())) {
|
||||
s_logger.warn("Unable to delete network id=" + networkId + ": failed to cleanup network resources");
|
||||
return false;
|
||||
}
|
||||
|
||||
//get providers to destroy
|
||||
List<Provider> providersToDestroy = getNetworkProviders(network.getId());
|
||||
for (NetworkElement element : _networkElements) {
|
||||
try {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Sending destroy to " + element);
|
||||
}
|
||||
element.destroy(network);
|
||||
} catch (ResourceUnavailableException e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
} catch (ConcurrentOperationException e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
}
|
||||
if (providersToDestroy.contains(element.getProvider())) {
|
||||
try {
|
||||
if (!isProviderEnabledInPhysicalNetwork(getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
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;
|
||||
}
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Sending destroy to " + element);
|
||||
}
|
||||
|
||||
element.destroy(network);
|
||||
} catch (ResourceUnavailableException e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
} catch (ConcurrentOperationException e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Unable to complete destroy of the network due to element: " + element.getName(), e);
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (success) {
|
||||
|
|
@ -2964,8 +2973,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
return guestNic.getIp4Address();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
|
||||
|
||||
private Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
|
||||
return _nicDao.findByInstanceIdAndNetworkIdIncludingRemoved(networkId, vmId);
|
||||
}
|
||||
|
||||
|
|
@ -3107,10 +3116,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
public boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId) {
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
|
||||
boolean usesJuniperForGatewayService = _ntwkSrvcDao.isProviderSupportedInNetwork(networkId, Service.Gateway, Network.Provider.JuniperSRX);
|
||||
boolean usesJuniperForFirewallService = _ntwkSrvcDao.isProviderSupportedInNetwork(networkId, Service.Firewall, Network.Provider.JuniperSRX);
|
||||
boolean usesNetscalarForLBService = _ntwkSrvcDao.isProviderSupportedInNetwork(networkId, Service.Lb, Network.Provider.Netscaler);
|
||||
boolean usesF5ForLBService = _ntwkSrvcDao.isProviderSupportedInNetwork(networkId, Service.Lb, Network.Provider.F5BigIp);
|
||||
boolean usesJuniperForGatewayService = _ntwkSrvcDao.canProviderSupportServiceInNetwork(networkId, Service.Gateway, Network.Provider.JuniperSRX);
|
||||
boolean usesJuniperForFirewallService = _ntwkSrvcDao.canProviderSupportServiceInNetwork(networkId, Service.Firewall, Network.Provider.JuniperSRX);
|
||||
boolean usesNetscalarForLBService = _ntwkSrvcDao.canProviderSupportServiceInNetwork(networkId, Service.Lb, Network.Provider.Netscaler);
|
||||
boolean usesF5ForLBService = _ntwkSrvcDao.canProviderSupportServiceInNetwork(networkId, Service.Lb, Network.Provider.F5BigIp);
|
||||
|
||||
if (zone.getNetworkType() == NetworkType.Advanced) {
|
||||
if (usesJuniperForGatewayService && usesJuniperForFirewallService) {
|
||||
|
|
@ -3639,8 +3648,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderSupportedInNetwork(long networkId, Service service, Provider provider){
|
||||
return _ntwkSrvcDao.isProviderSupportedInNetwork(networkId, service, provider);
|
||||
public boolean isProviderSupportServiceInNetwork(long networkId, Service service, Provider provider){
|
||||
return _ntwkSrvcDao.canProviderSupportServiceInNetwork(networkId, service, provider);
|
||||
}
|
||||
|
||||
protected boolean canUpgrade(long oldNetworkOfferingId, long newNetworkOfferingId) {
|
||||
|
|
@ -4864,9 +4873,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isProviderEnabled(PhysicalNetworkServiceProvider provider) {
|
||||
private boolean isProviderEnabled(PhysicalNetworkServiceProvider provider) {
|
||||
if (provider == null || provider.getState() != PhysicalNetworkServiceProvider.State.Enabled) { //TODO: check for other states: Shutdown?
|
||||
return false;
|
||||
}
|
||||
|
|
@ -4874,7 +4881,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderExistAndEnabled(long physicalNetowrkId, String providerName) {
|
||||
public boolean isProviderEnabledInPhysicalNetwork(long physicalNetowrkId, String providerName) {
|
||||
PhysicalNetworkServiceProviderVO ntwkSvcProvider = _pNSPDao.findByServiceProvider(physicalNetowrkId, providerName);
|
||||
if (ntwkSvcProvider == null) {
|
||||
s_logger.warn("Unable to find provider " + providerName + " in physical network id=" + physicalNetowrkId);
|
||||
|
|
@ -4883,8 +4890,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
return isProviderEnabled(ntwkSvcProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isServiceEnabledInNetwork(long physicalNetworkId, long networkId, Service service) {
|
||||
private boolean isServiceEnabledInNetwork(long physicalNetworkId, long networkId, Service service) {
|
||||
//check if the service is supported in the network
|
||||
if (!areServicesSupportedInNetwork(networkId, service)) {
|
||||
s_logger.debug("Service " + service.getName() + " is not supported in the network id=" + networkId);
|
||||
|
|
@ -4894,7 +4900,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
//get provider for the service and check if all of them are supported
|
||||
String provider = _ntwkSrvcDao.getProviderForServiceInNetwork(networkId, service);
|
||||
|
||||
if (!isProviderExistAndEnabled(physicalNetworkId, provider)) {
|
||||
if (!isProviderEnabledInPhysicalNetwork(physicalNetworkId, provider)) {
|
||||
s_logger.debug("Provider " + provider + " is not enabled in physical network id=" + physicalNetworkId);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -5015,7 +5021,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
return _allowSubdomainNetworkAccess;
|
||||
}
|
||||
|
||||
public List<Provider> getNetworkProviders(long networkId) {
|
||||
private List<Provider> getNetworkProviders(long networkId) {
|
||||
List<String> providerNames = _ntwkSrvcDao.getDistinctProviders(networkId);
|
||||
List<Provider> providers = new ArrayList<Provider>();
|
||||
for (String providerName : providerNames) {
|
||||
|
|
@ -5024,4 +5030,15 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
|
||||
return providers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderInNetwork(Provider provider, long networkId) {
|
||||
if (_ntwkSrvcDao.isProviderForNetwork(networkId, provider) == null) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,9 +14,10 @@ import com.cloud.utils.db.GenericDao;
|
|||
*/
|
||||
public interface NetworkServiceMapDao extends GenericDao<NetworkServiceMapVO, Long>{
|
||||
boolean areServicesSupportedInNetwork(long networkId, Service... services);
|
||||
boolean isProviderSupportedInNetwork(long networkId, Service service, Provider provider);
|
||||
boolean canProviderSupportServiceInNetwork(long networkId, Service service, Provider provider);
|
||||
List<NetworkServiceMapVO> getServicesInNetwork(long networkId);
|
||||
String getProviderForServiceInNetwork(long networkid, Service service);
|
||||
void deleteByNetworkId(long networkId);
|
||||
List<String> getDistinctProviders(long networkId);
|
||||
String isProviderForNetwork(long networkId, Provider provider);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ public class NetworkServiceMapDaoImpl extends GenericDaoBase<NetworkServiceMapVO
|
|||
|
||||
DistinctProvidersSearch = createSearchBuilder(String.class);
|
||||
DistinctProvidersSearch.and("networkId", DistinctProvidersSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
||||
DistinctProvidersSearch.and("provider", DistinctProvidersSearch.entity().getProvider(), SearchCriteria.Op.EQ);
|
||||
DistinctProvidersSearch.select(null, Func.DISTINCT, DistinctProvidersSearch.entity().getProvider());
|
||||
DistinctProvidersSearch.done();
|
||||
|
||||
|
|
@ -92,7 +93,7 @@ public class NetworkServiceMapDaoImpl extends GenericDaoBase<NetworkServiceMapVO
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderSupportedInNetwork(long networkId, Service service, Provider provider) {
|
||||
public boolean canProviderSupportServiceInNetwork(long networkId, Service service, Provider provider) {
|
||||
SearchCriteria<NetworkServiceMapVO> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
sc.setParameters("service", service.getName());
|
||||
|
|
@ -152,4 +153,17 @@ public class NetworkServiceMapDaoImpl extends GenericDaoBase<NetworkServiceMapVO
|
|||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String isProviderForNetwork(long networkId, Provider provider) {
|
||||
SearchCriteria<String> sc = DistinctProvidersSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
sc.setParameters("provider", provider.getName());
|
||||
List<String> results = customSearch(sc, null);
|
||||
if (results.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return results.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
|
|||
}
|
||||
|
||||
return (_networkManager.networkIsConfiguredForExternalNetworking(zone.getId(), config.getId()) &&
|
||||
_ntwkSrvcDao.isProviderSupportedInNetwork(config.getId(), Service.Lb, Network.Provider.F5BigIp));
|
||||
_ntwkSrvcDao.canProviderSupportServiceInNetwork(config.getId(), Service.Lb, Network.Provider.F5BigIp));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceMan
|
|||
}
|
||||
|
||||
return _networkManager.networkIsConfiguredForExternalNetworking(zone.getId(),config.getId())&&
|
||||
_ntwkSrvcDao.isProviderSupportedInNetwork(config.getId(), Service.Lb, Network.Provider.JuniperSRX);
|
||||
_ntwkSrvcDao.canProviderSupportServiceInNetwork(config.getId(), Service.Lb, Network.Provider.JuniperSRX);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ public class NetscalerExternalLoadBalancerElement extends ExternalLoadBalancerDe
|
|||
}
|
||||
|
||||
return (_networkManager.networkIsConfiguredForExternalNetworking(zone.getId(), config.getId()) &&
|
||||
_ntwkSrvcDao.isProviderSupportedInNetwork(config.getId(), Service.Lb, Network.Provider.Netscaler));
|
||||
_ntwkSrvcDao.canProviderSupportServiceInNetwork(config.getId(), Service.Lb, Network.Provider.Netscaler));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -104,14 +104,22 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
@Inject VirtualRouterProviderDao _vrProviderDao;
|
||||
|
||||
protected boolean canHandle(Network network, Service service) {
|
||||
if (!_networkMgr.isProviderExistAndEnabled(_networkMgr.getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
if (!_networkMgr.isProviderEnabledInPhysicalNetwork(_networkMgr.getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_networkMgr.isProviderSupportedInNetwork(network.getId(), service, getProvider())) {
|
||||
return false;
|
||||
if (service == null) {
|
||||
if (!_networkMgr.isProviderInNetwork(getProvider(), network.getId())) {
|
||||
s_logger.trace("Element " + getProvider().getName() + " is not a provider for the network " + network);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!_networkMgr.isProviderSupportServiceInNetwork(network.getId(), service, getProvider())) {
|
||||
s_logger.trace("Element " + getProvider().getName() + " doesn't support service " + service.getName() + " in the network " + network);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -132,11 +140,15 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
|
||||
@Override
|
||||
public boolean prepare(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
||||
NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
|
||||
if (!canHandle(network, null)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
|
||||
if (offering.isSystemOnly()) {
|
||||
return false;
|
||||
}
|
||||
if (!_networkMgr.isProviderExistAndEnabled(_networkMgr.getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
if (!_networkMgr.isProviderEnabledInPhysicalNetwork(_networkMgr.getPhysicalNetworkId(network), "VirtualRouter")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -195,13 +207,13 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
@Override
|
||||
public String[] applyVpnUsers(RemoteAccessVpn vpn, List<? extends VpnUser> users) throws ResourceUnavailableException{
|
||||
Network network = _networksDao.findById(vpn.getNetworkId());
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need to apply vpn users on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
if (canHandle(network, Service.Vpn)) {
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need to apply vpn users on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return null;
|
||||
}
|
||||
return _routerMgr.applyVpnUsers(network, users, routers);
|
||||
} else {
|
||||
s_logger.debug("Element " + this.getName() + " doesn't handle applyVpnUsers command");
|
||||
|
|
@ -211,13 +223,12 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
|
||||
@Override
|
||||
public boolean startVpn(Network network, RemoteAccessVpn vpn) throws ResourceUnavailableException {
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (canHandle(network, Service.Vpn)) {
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return true;
|
||||
}
|
||||
return _routerMgr.startRemoteAccessVpn(network, vpn, routers);
|
||||
} else {
|
||||
s_logger.debug("Element " + this.getName() + " doesn't handle createVpn command");
|
||||
|
|
@ -227,13 +238,12 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
|
||||
@Override
|
||||
public boolean stopVpn(Network network, RemoteAccessVpn vpn) throws ResourceUnavailableException {
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (canHandle(network, Service.Vpn)) {
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need stop vpn on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
return true;
|
||||
}
|
||||
return _routerMgr.deleteRemoteAccessVpn(network, vpn, routers);
|
||||
} else {
|
||||
s_logger.debug("Element " + this.getName() + " doesn't handle removeVpn command");
|
||||
|
|
@ -244,7 +254,6 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
@Override
|
||||
public boolean applyIps(Network network, List<? extends PublicIpAddress> ipAddress) throws ResourceUnavailableException {
|
||||
if (canHandle(network, Service.Firewall)) {
|
||||
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Virtual router elemnt doesn't need to associate ip addresses on the backend; virtual router doesn't exist in the network " + network.getId());
|
||||
|
|
@ -364,7 +373,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
|
||||
@Override
|
||||
public boolean savePassword(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm) throws ResourceUnavailableException{
|
||||
|
||||
if (!canHandle(network, null)) {
|
||||
return false;
|
||||
}
|
||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||
if (routers == null || routers.isEmpty()) {
|
||||
s_logger.debug("Can't find virtual router element in network " + network.getId());
|
||||
|
|
@ -486,7 +497,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
VirtualMachineProfile<UserVm> uservm = (VirtualMachineProfile<UserVm>)vm;
|
||||
|
||||
boolean publicNetwork = false;
|
||||
if (_networkMgr.isProviderSupportedInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
||||
publicNetwork = true;
|
||||
}
|
||||
boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic || _networkMgr.isSecurityGroupSupportedInNetwork(network)) &&
|
||||
|
|
@ -534,7 +545,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||
VirtualMachineProfile<UserVm> uservm = (VirtualMachineProfile<UserVm>)vm;
|
||||
|
||||
boolean publicNetwork = false;
|
||||
if (_networkMgr.isProviderSupportedInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
||||
publicNetwork = true;
|
||||
}
|
||||
boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic || _networkMgr.isSecurityGroupSupportedInNetwork(network)) &&
|
||||
|
|
|
|||
|
|
@ -1459,7 +1459,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
}
|
||||
|
||||
boolean publicNetwork = false;
|
||||
if (_networkMgr.isProviderSupportedInNetwork(network.getId(), Service.SourceNat, Provider.VirtualRouter)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, Provider.VirtualRouter)) {
|
||||
publicNetwork = true;
|
||||
}
|
||||
if (!publicNetwork) {
|
||||
|
|
@ -1696,7 +1696,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
if (!publicIps.isEmpty()) {
|
||||
|
||||
// Re-apply public ip addresses - should come before PF/LB/VPN
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.Firewall, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.Firewall, provider)) {
|
||||
createAssociateIPCommands(router, publicIps, cmds, 0);
|
||||
}
|
||||
|
||||
|
|
@ -1708,24 +1708,24 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
|
||||
//Get information about all the rules (StaticNats and StaticNatRules; PFVPN to reapply on domR start)
|
||||
for (PublicIpAddress ip : publicIps) {
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.PortForwarding, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.PortForwarding, provider)) {
|
||||
pfRules.addAll(_pfRulesDao.listForApplication(ip.getId()));
|
||||
}
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.StaticNat, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.StaticNat, provider)) {
|
||||
staticNatFirewallRules.addAll(_rulesDao.listByIpAndPurpose(ip.getId(), Purpose.StaticNat));
|
||||
}
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.Firewall, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.Firewall, provider)) {
|
||||
firewallRules.addAll(_rulesDao.listByIpAndPurpose(ip.getId(), Purpose.Firewall));
|
||||
}
|
||||
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.Vpn, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.Vpn, provider)) {
|
||||
RemoteAccessVpn vpn = _vpnDao.findById(ip.getId());
|
||||
if (vpn != null) {
|
||||
vpns.add(vpn);
|
||||
}
|
||||
}
|
||||
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.StaticNat, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.StaticNat, provider)) {
|
||||
if (ip.isOneToOneNat()) {
|
||||
String dstIp = _networkMgr.getIpInNetwork(ip.getAssociatedWithVmId(), networkId);
|
||||
StaticNatImpl staticNat = new StaticNatImpl(ip.getAccountId(), ip.getDomainId(), networkId, ip.getId(), dstIp, false);
|
||||
|
|
@ -1772,7 +1772,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
|
||||
List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkId(networkId);
|
||||
List<LoadBalancingRule> lbRules = new ArrayList<LoadBalancingRule>();
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.Lb, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.Lb, provider)) {
|
||||
// Re-apply load balancing rules
|
||||
for (LoadBalancerVO lb : lbs) {
|
||||
List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId());
|
||||
|
|
@ -1788,13 +1788,13 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
}
|
||||
}
|
||||
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.Dhcp, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.Dhcp, provider)) {
|
||||
// Resend dhcp
|
||||
s_logger.debug("Reapplying dhcp entries as a part of domR " + router + " start...");
|
||||
createDhcpEntriesCommands(router, cmds);
|
||||
}
|
||||
|
||||
if (_networkMgr.isProviderSupportedInNetwork(router.getNetworkId(), Service.UserData, provider)) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(router.getNetworkId(), Service.UserData, provider)) {
|
||||
// Resend user data
|
||||
s_logger.debug("Reapplying vm data (userData and metaData) entries as a part of domR " + router + " start...");
|
||||
createVmDataCommands(router, cmds);
|
||||
|
|
|
|||
|
|
@ -2761,7 +2761,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||
DataCenterVO dc = _dcDao.findById(vm.getDataCenterIdToDeployIn());
|
||||
UserVmVO userVm = profile.getVirtualMachine();
|
||||
//dc.getDhcpProvider().equalsIgnoreCase(Provider.ExternalDhcpServer.getName())
|
||||
if (_ntwkSrvcDao.isProviderSupportedInNetwork(guestNetwork.getId(), Service.Dhcp, Provider.ExternalDhcpServer)){
|
||||
if (_ntwkSrvcDao.canProviderSupportServiceInNetwork(guestNetwork.getId(), Service.Dhcp, Provider.ExternalDhcpServer)){
|
||||
_nicDao.update(guestNic.getId(), guestNic);
|
||||
userVm.setPrivateIpAddress(guestNic.getIp4Address());
|
||||
_vmDao.update(userVm.getId(), userVm);
|
||||
|
|
|
|||
|
|
@ -445,7 +445,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderSupportedInNetwork(long networkId, Service service, Provider provider) {
|
||||
public boolean isProviderSupportServiceInNetwork(long networkId, Service service, Provider provider) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
|
@ -626,7 +626,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isProviderExistAndEnabled(long physicalNetowrkId, String providerName) {
|
||||
public boolean isProviderEnabledInPhysicalNetwork(long physicalNetowrkId, String providerName) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue