From 549c7d2ef99bc4175d88c190310f79555ab80a88 Mon Sep 17 00:00:00 2001 From: prachi Date: Mon, 31 Oct 2011 13:09:54 -0700 Subject: [PATCH] Added NetworkElement API's isReady() and shutdownProviderInstances() called by NetworkMgr while enabling/shutdown the service provider. --- .../UpdateNetworkServiceProviderCmd.java | 40 +++++++++----- api/src/com/cloud/network/NetworkService.java | 2 +- .../PhysicalNetworkServiceProvider.java | 3 +- .../cloud/network/element/NetworkElement.java | 19 +++++++ .../com/cloud/network/NetworkManagerImpl.java | 54 +++++++++++++++---- .../network/element/BareMetalElement.java | 11 ++++ .../element/CloudZonesNetworkElement.java | 13 +++++ .../cloud/network/element/DhcpElement.java | 16 +++++- .../element/ElasticLoadBalancerElement.java | 15 +++++- .../network/element/ExternalDhcpElement.java | 15 +++++- .../F5ExternalLoadBalancerElement.java | 16 +++++- .../JuniperSRXExternalFirewallElement.java | 16 +++++- .../NetscalerExternalLoadBalancerElement.java | 15 +++++- .../com/cloud/network/element/OvsElement.java | 19 ++++--- .../network/element/SecurityGroupElement.java | 11 ++++ .../network/element/VirtualRouterElement.java | 16 +++++- 16 files changed, 242 insertions(+), 39 deletions(-) diff --git a/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java b/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java index 47dc2373099..bb17b19cdd3 100644 --- a/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java +++ b/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java @@ -28,6 +28,8 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ProviderResponse; import com.cloud.event.EventTypes; +import com.cloud.exception.ConcurrentOperationException; +import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.user.Account; @@ -40,24 +42,29 @@ public class UpdateNetworkServiceProviderCmd extends BaseAsyncCmd { ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// - @Parameter(name=ApiConstants.ENABLED, type=CommandType.BOOLEAN, description="true/false enable/disable the physical network service provider") - private Boolean enabled; + @Parameter(name=ApiConstants.STATE, type=CommandType.STRING, description="Enabled/Disabled/Shutdown the physical network service provider") + private String state; @Parameter(name=ApiConstants.ID, type=CommandType.LONG, required=true, description="network service provider id") private Long id; + @Parameter(name=ApiConstants.FORCED, type=CommandType.BOOLEAN, required=false, description="Force shutdown the service provider.") + private Boolean forcedShutdown; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// - public Boolean isEnabled() { - return enabled; + public String getState() { + return state; } private Long getId() { return id; } + public boolean isForcedShutdown() { + return (forcedShutdown != null) ? forcedShutdown : false; + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// @@ -74,14 +81,23 @@ public class UpdateNetworkServiceProviderCmd extends BaseAsyncCmd { @Override public void execute(){ - PhysicalNetworkServiceProvider result = _networkService.updateNetworkServiceProvider(getId(), isEnabled()); - if (result != null) { - ProviderResponse response = _responseGenerator.createNetworkServiceProviderResponse(result); - response.setResponseName(getCommandName()); - this.setResponseObject(response); - }else { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add service provider to physical network"); - } + PhysicalNetworkServiceProvider result; + try { + result = _networkService.updateNetworkServiceProvider(getId(), getState(), isForcedShutdown()); + if (result != null) { + ProviderResponse response = _responseGenerator.createNetworkServiceProviderResponse(result); + response.setResponseName(getCommandName()); + this.setResponseObject(response); + }else { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add service provider to physical network"); + } + } catch (ResourceUnavailableException ex) { + s_logger.warn("Exception: ", ex); + throw new ServerApiException(BaseCmd.RESOURCE_UNAVAILABLE_ERROR, ex.getMessage()); + } catch (ConcurrentOperationException ex) { + s_logger.warn("Exception: ", ex); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, ex.getMessage()); + } } @Override diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java index 1892ced500e..4921616f8d8 100644 --- a/api/src/com/cloud/network/NetworkService.java +++ b/api/src/com/cloud/network/NetworkService.java @@ -101,7 +101,7 @@ public interface NetworkService { List listNetworkServiceProviders(Long physicalNetworkId); - PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, Boolean enabled); + PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, String state, boolean forcedShutdown) throws ConcurrentOperationException, ResourceUnavailableException; boolean deleteNetworkServiceProvider(Long id); diff --git a/api/src/com/cloud/network/PhysicalNetworkServiceProvider.java b/api/src/com/cloud/network/PhysicalNetworkServiceProvider.java index 6eb4458c2fc..b687e5a2b1d 100644 --- a/api/src/com/cloud/network/PhysicalNetworkServiceProvider.java +++ b/api/src/com/cloud/network/PhysicalNetworkServiceProvider.java @@ -31,7 +31,8 @@ public interface PhysicalNetworkServiceProvider { public enum State { Disabled, - Enabled; + Enabled, + Shutdown; } long getId(); diff --git a/api/src/com/cloud/network/element/NetworkElement.java b/api/src/com/cloud/network/element/NetworkElement.java index edd0042f590..3ddf02056ca 100644 --- a/api/src/com/cloud/network/element/NetworkElement.java +++ b/api/src/com/cloud/network/element/NetworkElement.java @@ -32,6 +32,7 @@ import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.Adapter; import com.cloud.vm.NicProfile; @@ -105,4 +106,22 @@ public interface NetworkElement extends Adapter { * @throws ConcurrentOperationException */ boolean destroy(Network network) throws ConcurrentOperationException, ResourceUnavailableException; + + /** + * Check if the instances of this Element are configured to be used on the physical network referred by this provider. + * @param provider + * @return boolean true/false + */ + boolean isReady(PhysicalNetworkServiceProvider provider); + + /** + * The network service provider is being shutdown. This should shutdown all instances of this element deployed for this provider. + * @param networkServiceProvider + * @param context + * @param forceShutdown + * @return boolean success/failure + * @throws ConcurrentOperationException + * @throws ResourceUnavailableException + */ + boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, ResourceUnavailableException; } diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index f1ba716315e..dabb9233c31 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -3910,7 +3910,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override @ActionEvent(eventType = EventTypes.EVENT_SERVICE_PROVIDER_UPDATE, eventDescription = "Updating physical network ServiceProvider", async = true) - public PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, Boolean enabled) { + public PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, String stateStr, boolean forcedShutdown) throws ConcurrentOperationException, ResourceUnavailableException { PhysicalNetworkServiceProviderVO provider = _pNSPDao.findById(id); @@ -3918,17 +3918,51 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag throw new InvalidParameterValueException("Network Service Provider id=" + id + "doesn't exist in the system"); } - if(enabled){ - //TODO: need to check if the provider element is ready for the physical network. - NetworkElement element = getElementImplementingProvider(provider.getProviderName()); - //element.isReady(); - provider.setState(PhysicalNetworkServiceProvider.State.Enabled); - }else{ - //do we need to do anything for the provider instances before disabling? - provider.setState(PhysicalNetworkServiceProvider.State.Disabled); + PhysicalNetworkServiceProvider.State state = null; + if (stateStr != null && !stateStr.isEmpty()) { + try { + state = PhysicalNetworkServiceProvider.State.valueOf(stateStr); + } catch (IllegalArgumentException ex) { + throw new InvalidParameterValueException("Unable to resolve state '" + stateStr + "' to a supported value {Enabled or Disabled or Shutdown}"); + } + } + + if(state != null){ + if(s_logger.isDebugEnabled()){ + s_logger.debug("updating state of the service provider id=" + id + " on physical network: "+provider.getPhysicalNetworkId() + " to state: "+stateStr); + } + NetworkElement element = getElementImplementingProvider(provider.getProviderName()); + if(element == null){ + throw new InvalidParameterValueException("Unable to find the Network Element implementing the Service Provider '" + provider.getProviderName() + "'"); + } + switch(state) { + case Enabled: + if(element != null && element.isReady(provider)){ + provider.setState(PhysicalNetworkServiceProvider.State.Enabled); + _pNSPDao.update(id, provider); + } + break; + case Disabled: + //do we need to do anything for the provider instances before disabling? + provider.setState(PhysicalNetworkServiceProvider.State.Disabled); + _pNSPDao.update(id, provider); + break; + case Shutdown: + User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + Account callerAccount = _accountMgr.getActiveAccountById(callerUser.getAccountId()); + //shutdown the network + ReservationContext context = new ReservationContextImpl(null, null, callerUser, callerAccount); + if(s_logger.isDebugEnabled()){ + s_logger.debug("Shutting down the service provider id=" + id + " on physical network: "+provider.getPhysicalNetworkId()); + } + if(element != null && element.shutdownProviderInstances(provider, context, forcedShutdown)){ + provider.setState(PhysicalNetworkServiceProvider.State.Shutdown); + _pNSPDao.update(id, provider); + } + break; + } } - _pNSPDao.update(id, provider); return provider; } diff --git a/server/src/com/cloud/network/element/BareMetalElement.java b/server/src/com/cloud/network/element/BareMetalElement.java index f92e87985ed..a8d2c4c3f50 100644 --- a/server/src/com/cloud/network/element/BareMetalElement.java +++ b/server/src/com/cloud/network/element/BareMetalElement.java @@ -36,6 +36,7 @@ import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; @@ -106,4 +107,14 @@ public class BareMetalElement extends AdapterBase implements NetworkElement { public boolean destroy(Network network) throws ConcurrentOperationException, ResourceUnavailableException { return true; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, ResourceUnavailableException { + return true; + } } diff --git a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java index b0ed1b8f3ca..1cac85b6dd7 100644 --- a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java +++ b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java @@ -60,6 +60,7 @@ 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.PhysicalNetworkServiceProvider; import com.cloud.network.dao.NetworkDao; import com.cloud.network.router.VirtualNetworkApplianceManager; import com.cloud.offering.NetworkOffering; @@ -212,4 +213,16 @@ public class CloudZonesNetworkElement extends AdapterBase implements NetworkElem return cmd; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/DhcpElement.java b/server/src/com/cloud/network/element/DhcpElement.java index 2986afc3469..b068df08c1c 100644 --- a/server/src/com/cloud/network/element/DhcpElement.java +++ b/server/src/com/cloud/network/element/DhcpElement.java @@ -37,11 +37,12 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.dao.HostDao; import com.cloud.network.Network; import com.cloud.network.Network.Capability; +import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; -import com.cloud.network.Network.GuestType; import com.cloud.network.NetworkManager; import com.cloud.network.Networks.TrafficType; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.VirtualRouterElementsDao; import com.cloud.network.element.VirtualRouterElements.VirtualRouterElementsType; @@ -262,4 +263,17 @@ public class DhcpElement extends AdapterBase implements DhcpElementService, User } return element.getIsReady(); } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java b/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java index ceffce76477..030072478f0 100644 --- a/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java @@ -38,10 +38,10 @@ 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.PhysicalNetworkServiceProvider; import com.cloud.network.dao.NetworkDao; import com.cloud.network.lb.ElasticLoadBalancerManager; import com.cloud.network.lb.LoadBalancingRule; -import com.cloud.network.rules.FirewallRule; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.utils.component.AdapterBase; @@ -155,4 +155,17 @@ public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalan } return true; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/ExternalDhcpElement.java b/server/src/com/cloud/network/element/ExternalDhcpElement.java index 58047f93f8e..72f6db22b98 100644 --- a/server/src/com/cloud/network/element/ExternalDhcpElement.java +++ b/server/src/com/cloud/network/element/ExternalDhcpElement.java @@ -38,10 +38,11 @@ import com.cloud.host.Host; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.network.Network; import com.cloud.network.Network.Capability; +import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; -import com.cloud.network.Network.GuestType; import com.cloud.network.Networks.TrafficType; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; @@ -122,4 +123,16 @@ public class ExternalDhcpElement extends AdapterBase implements NetworkElement { public boolean destroy(Network network) throws ConcurrentOperationException, ResourceUnavailableException { return true; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java b/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java index e33720fe6a6..eabb3c37af0 100644 --- a/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java @@ -31,7 +31,6 @@ import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; -import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientNetworkCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.ExternalNetworkDeviceManager; @@ -41,8 +40,8 @@ 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.PhysicalNetworkServiceProvider; import com.cloud.network.lb.LoadBalancingRule; -import com.cloud.network.rules.FirewallRule; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.utils.component.AdapterBase; @@ -144,5 +143,18 @@ public class F5ExternalLoadBalancerElement extends AdapterBase implements LoadBa public Provider getProvider() { return Provider.F5BigIp; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java b/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java index 7df767f13fa..7fa471fc37c 100644 --- a/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java +++ b/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java @@ -32,7 +32,6 @@ import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; -import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InsufficientNetworkCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.dao.HostDao; @@ -42,13 +41,13 @@ import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.NetworkManager; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.PublicIpAddress; 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.PortForwardingRule; -import com.cloud.network.rules.StaticNat; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.dao.NetworkOfferingDao; @@ -244,6 +243,19 @@ public class JuniperSRXExternalFirewallElement extends AdapterBase implements So return _externalNetworkManager.applyFirewallRules(network, rules); } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java b/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java index fb30663a992..aaa941c4a31 100644 --- a/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java @@ -40,8 +40,8 @@ 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.PhysicalNetworkServiceProvider; import com.cloud.network.lb.LoadBalancingRule; -import com.cloud.network.rules.FirewallRule; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.utils.component.AdapterBase; @@ -143,4 +143,17 @@ public class NetscalerExternalLoadBalancerElement extends AdapterBase implements public Provider getProvider() { return Provider.Netscaler; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } } diff --git a/server/src/com/cloud/network/element/OvsElement.java b/server/src/com/cloud/network/element/OvsElement.java index da3c9eca230..00e95a60234 100644 --- a/server/src/com/cloud/network/element/OvsElement.java +++ b/server/src/com/cloud/network/element/OvsElement.java @@ -18,7 +18,6 @@ package com.cloud.network.element; -import java.util.List; import java.util.Map; import javax.ejb.Local; @@ -28,17 +27,14 @@ import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; -import com.cloud.network.Networks; -import com.cloud.network.PublicIpAddress; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.Networks; import com.cloud.network.Networks.BroadcastDomainType; -import com.cloud.network.element.NetworkElement; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.ovs.OvsNetworkManager; import com.cloud.network.ovs.OvsTunnelManager; -import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.StaticNat; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.Inject; @@ -123,4 +119,15 @@ public class OvsElement extends AdapterBase implements NetworkElement { throws ConcurrentOperationException, ResourceUnavailableException { return true; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) + throws ConcurrentOperationException, ResourceUnavailableException { + return true; + } } diff --git a/server/src/com/cloud/network/element/SecurityGroupElement.java b/server/src/com/cloud/network/element/SecurityGroupElement.java index 93c66da2914..18bd3db09bb 100644 --- a/server/src/com/cloud/network/element/SecurityGroupElement.java +++ b/server/src/com/cloud/network/element/SecurityGroupElement.java @@ -32,6 +32,7 @@ import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.db.DB; @@ -89,4 +90,14 @@ public class SecurityGroupElement extends AdapterBase implements NetworkElement public boolean destroy(Network network) throws ConcurrentOperationException, ResourceUnavailableException { return true; } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, ResourceUnavailableException { + return true; + } } diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 2118debe0e0..e17c18ab895 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -36,10 +36,11 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.dao.HostDao; import com.cloud.network.Network; import com.cloud.network.Network.Capability; +import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; -import com.cloud.network.Network.GuestType; import com.cloud.network.NetworkManager; +import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.network.PublicIpAddress; import com.cloud.network.RemoteAccessVpn; import com.cloud.network.VpnUser; @@ -455,4 +456,17 @@ public class VirtualRouterElement extends DhcpElement implements VirtualRouterEl return true; } } + + @Override + public boolean isReady(PhysicalNetworkServiceProvider provider) { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context, boolean forceShutdown) throws ConcurrentOperationException, + ResourceUnavailableException { + // TODO Auto-generated method stub + return true; + } }