From 0d7ddb5d5857b7e4af4d68fa4677655b4434eaac Mon Sep 17 00:00:00 2001 From: prachi Date: Thu, 20 Oct 2011 17:10:00 -0700 Subject: [PATCH] Changes: - Make all API commands Async and add events - Make BroadcatsDomainRange case insensitive - Process all _networkElements to build the Service -> Provider map during NetworkMgr::configure() --- .../AddNetworkServiceProviderCmd.java | 29 ++++++- .../commands/CreatePhysicalNetworkCmd.java | 40 ++++++++- .../DeleteNetworkServiceProviderCmd.java | 16 +++- .../commands/DeletePhysicalNetworkCmd.java | 17 +++- .../UpdateNetworkServiceProviderCmd.java | 14 +++- .../commands/UpdatePhysicalNetworkCmd.java | 16 +++- api/src/com/cloud/event/EventTypes.java | 11 +++ api/src/com/cloud/network/NetworkService.java | 8 ++ .../com/cloud/network/PhysicalNetwork.java | 4 +- .../com/cloud/network/NetworkManagerImpl.java | 82 ++++++++++++++----- .../com/cloud/network/PhysicalNetworkVO.java | 2 +- .../network/element/ExternalDhcpElement.java | 12 ++- setup/db/create-schema.sql | 2 +- 13 files changed, 214 insertions(+), 39 deletions(-) diff --git a/api/src/com/cloud/api/commands/AddNetworkServiceProviderCmd.java b/api/src/com/cloud/api/commands/AddNetworkServiceProviderCmd.java index fd27e0ca3cc..0b78f9c83e0 100644 --- a/api/src/com/cloud/api/commands/AddNetworkServiceProviderCmd.java +++ b/api/src/com/cloud/api/commands/AddNetworkServiceProviderCmd.java @@ -21,16 +21,20 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; 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.ResourceAllocationException; import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Adds a network serviceProvider to a physical network", responseObject=ProviderResponse.class) -public class AddNetworkServiceProviderCmd extends BaseCmd { +public class AddNetworkServiceProviderCmd extends BaseAsyncCreateCmd { public static final Logger s_logger = Logger.getLogger(AddNetworkServiceProviderCmd.class.getName()); private static final String s_name = "addnetworkserviceproviderresponse"; @@ -80,7 +84,8 @@ public class AddNetworkServiceProviderCmd extends BaseCmd { @Override public void execute(){ - PhysicalNetworkServiceProvider result = _networkService.addProviderToPhysicalNetwork(getPhysicalNetworkId(), getProviderName(), getDestinationPhysicalNetworkId()); + UserContext.current().setEventDetails("Network ServiceProvider Id: "+getEntityId()); + PhysicalNetworkServiceProvider result = _networkService.getCreatedPhysicalNetworkServiceProvider(getEntityId()); if (result != null) { ProviderResponse response = _responseGenerator.createNetworkServiceProviderResponse(result); response.setResponseName(getCommandName()); @@ -89,4 +94,24 @@ public class AddNetworkServiceProviderCmd extends BaseCmd { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add service provider to physical network"); } } + + @Override + public void create() throws ResourceAllocationException { + PhysicalNetworkServiceProvider result = _networkService.addProviderToPhysicalNetwork(getPhysicalNetworkId(), getProviderName(), getDestinationPhysicalNetworkId()); + if (result != null) { + setEntityId(result.getId()); + } else { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add service provider entity to physical network"); + } + } + + @Override + public String getEventType() { + return EventTypes.EVENT_SERVICE_PROVIDER_CREATE; + } + + @Override + public String getEventDescription() { + return "Adding physical network ServiceProvider: " + getEntityId(); + } } diff --git a/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java b/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java index 47e2b8dc2f3..908e61df151 100644 --- a/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java +++ b/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java @@ -23,16 +23,20 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCreateCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.PhysicalNetworkResponse; +import com.cloud.event.EventTypes; +import com.cloud.exception.ResourceAllocationException; import com.cloud.network.PhysicalNetwork; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Creates a physical network", responseObject=PhysicalNetworkResponse.class) -public class CreatePhysicalNetworkCmd extends BaseCmd { +public class CreatePhysicalNetworkCmd extends BaseAsyncCreateCmd { public static final Logger s_logger = Logger.getLogger(CreatePhysicalNetworkCmd.class.getName()); private static final String s_name = "createphysicalnetworkresponse"; @@ -107,9 +111,30 @@ public class CreatePhysicalNetworkCmd extends BaseCmd { return Account.ACCOUNT_ID_SYSTEM; } + @Override + public String getEventType() { + return EventTypes.EVENT_PHYSICAL_NETWORK_CREATE; + } + + @Override + public String getCreateEventType() { + return EventTypes.EVENT_PHYSICAL_NETWORK_CREATE; + } + + @Override + public String getCreateEventDescription() { + return "creating Physical Network"; + } + + @Override + public String getEventDescription() { + return "creating Physical Network. Id: "+getEntityId(); + } + @Override public void execute(){ - PhysicalNetwork result = _networkService.createPhysicalNetwork(getZoneId(),getVlan(),getNetworkSpeed(), getIsolationMethods(),getBroadcastDomainRange(),getDomainId(), getTags()); + UserContext.current().setEventDetails("Physical Network Id: "+getEntityId()); + PhysicalNetwork result = _networkService.getCreatedPhysicalNetwork(getEntityId()); if (result != null) { PhysicalNetworkResponse response = _responseGenerator.createPhysicalNetworkResponse(result); response.setResponseName(getCommandName()); @@ -118,4 +143,15 @@ public class CreatePhysicalNetworkCmd extends BaseCmd { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create physical network"); } } + + @Override + public void create() throws ResourceAllocationException { + PhysicalNetwork result = _networkService.createPhysicalNetwork(getZoneId(),getVlan(),getNetworkSpeed(), getIsolationMethods(),getBroadcastDomainRange(),getDomainId(), getTags()); + if (result != null) { + setEntityId(result.getId()); + } else { + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create physical network entity"); + } + } + } diff --git a/api/src/com/cloud/api/commands/DeleteNetworkServiceProviderCmd.java b/api/src/com/cloud/api/commands/DeleteNetworkServiceProviderCmd.java index 2de6acac328..98b719b6756 100644 --- a/api/src/com/cloud/api/commands/DeleteNetworkServiceProviderCmd.java +++ b/api/src/com/cloud/api/commands/DeleteNetworkServiceProviderCmd.java @@ -21,15 +21,17 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.event.EventTypes; import com.cloud.user.Account; @Implementation(description="Deletes a Network Service Provider.", responseObject=SuccessResponse.class) -public class DeleteNetworkServiceProviderCmd extends BaseCmd { +public class DeleteNetworkServiceProviderCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(DeleteNetworkServiceProviderCmd.class.getName()); private static final String s_name = "deletenetworkserviceproviderresponse"; @@ -75,4 +77,16 @@ public class DeleteNetworkServiceProviderCmd extends BaseCmd { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete network service provider"); } } + + + @Override + public String getEventType() { + return EventTypes.EVENT_SERVICE_PROVIDER_DELETE; + } + + + @Override + public String getEventDescription() { + return "Deleting Physical network ServiceProvider: " + getId(); + } } diff --git a/api/src/com/cloud/api/commands/DeletePhysicalNetworkCmd.java b/api/src/com/cloud/api/commands/DeletePhysicalNetworkCmd.java index 4477d279a1e..ad671f66ee6 100644 --- a/api/src/com/cloud/api/commands/DeletePhysicalNetworkCmd.java +++ b/api/src/com/cloud/api/commands/DeletePhysicalNetworkCmd.java @@ -21,15 +21,18 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.event.EventTypes; import com.cloud.user.Account; +import com.cloud.user.UserContext; @Implementation(description="Deletes a Physical Network.", responseObject=SuccessResponse.class) -public class DeletePhysicalNetworkCmd extends BaseCmd { +public class DeletePhysicalNetworkCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(DeletePhysicalNetworkCmd.class.getName()); private static final String s_name = "deletephysicalnetworkresponse"; @@ -67,6 +70,7 @@ public class DeletePhysicalNetworkCmd extends BaseCmd { @Override public void execute(){ + UserContext.current().setEventDetails("Physical Network Id: " + id); boolean result = _networkService.deletePhysicalNetwork(getId()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); @@ -75,4 +79,15 @@ public class DeletePhysicalNetworkCmd extends BaseCmd { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to delete physical network"); } } + + + @Override + public String getEventDescription() { + return "Deleting Physical network: " + getId(); + } + + @Override + public String getEventType() { + return EventTypes.EVENT_PHYSICAL_NETWORK_DELETE; + } } diff --git a/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java b/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java index 10f2bed556b..47dc2373099 100644 --- a/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java +++ b/api/src/com/cloud/api/commands/UpdateNetworkServiceProviderCmd.java @@ -21,16 +21,18 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ProviderResponse; +import com.cloud.event.EventTypes; import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.user.Account; @Implementation(description="Updates a network serviceProvider of a physical network", responseObject=ProviderResponse.class) -public class UpdateNetworkServiceProviderCmd extends BaseCmd { +public class UpdateNetworkServiceProviderCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(UpdateNetworkServiceProviderCmd.class.getName()); private static final String s_name = "updatenetworkserviceproviderresponse"; @@ -82,8 +84,14 @@ public class UpdateNetworkServiceProviderCmd extends BaseCmd { } } + @Override + public String getEventType() { + return EventTypes.EVENT_SERVICE_PROVIDER_UPDATE; + } - - + @Override + public String getEventDescription() { + return "Updating physical network ServiceProvider: " + getId(); + } } diff --git a/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java b/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java index 5fedbb8e667..9bf826d4fcd 100644 --- a/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java +++ b/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java @@ -23,16 +23,18 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.PhysicalNetworkResponse; +import com.cloud.event.EventTypes; import com.cloud.network.PhysicalNetwork; import com.cloud.user.Account; @Implementation(description="Updates a physical network", responseObject=PhysicalNetworkResponse.class) -public class UpdatePhysicalNetworkCmd extends BaseCmd { +public class UpdatePhysicalNetworkCmd extends BaseAsyncCmd { public static final Logger s_logger = Logger.getLogger(UpdatePhysicalNetworkCmd.class.getName()); private static final String s_name = "updatephysicalnetworkresponse"; @@ -109,8 +111,18 @@ public class UpdatePhysicalNetworkCmd extends BaseCmd { response.setResponseName(getCommandName()); this.setResponseObject(response); }else { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create physical network"); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update physical network"); } } + @Override + public String getEventDescription() { + return "Updating Physical network: " + getId(); + } + + @Override + public String getEventType() { + return EventTypes.EVENT_PHYSICAL_NETWORK_UPDATE; + } + } diff --git a/api/src/com/cloud/event/EventTypes.java b/api/src/com/cloud/event/EventTypes.java index d928806c946..5840842a594 100755 --- a/api/src/com/cloud/event/EventTypes.java +++ b/api/src/com/cloud/event/EventTypes.java @@ -214,4 +214,15 @@ public class EventTypes { //Network as a Service public static final String EVENT_NETWORK_ELEMENT_CONFIGURE = "NETWORK.ELEMENT.CONFIGURE"; + + //Physical Network Events + public static final String EVENT_PHYSICAL_NETWORK_CREATE = "PHYSICAL.NETWORK.CREATE"; + public static final String EVENT_PHYSICAL_NETWORK_DELETE = "PHYSICAL.NETWORK.DELETE"; + public static final String EVENT_PHYSICAL_NETWORK_UPDATE = "PHYSICAL.NETWORK.UPDATE"; + + //Physical Network Service Provider Events + public static final String EVENT_SERVICE_PROVIDER_CREATE = "SERVICE.PROVIDER.CREATE"; + public static final String EVENT_SERVICE_PROVIDER_DELETE = "SERVICE.PROVIDER.DELETE"; + public static final String EVENT_SERVICE_PROVIDER_UPDATE = "SERVICE.PROVIDER.UPDATE"; + } diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java index c72e5a2678b..db8334140e7 100644 --- a/api/src/com/cloud/network/NetworkService.java +++ b/api/src/com/cloud/network/NetworkService.java @@ -109,4 +109,12 @@ public interface NetworkService { PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, Boolean enabled); boolean deleteNetworkServiceProvider(Long id); + + PhysicalNetwork getPhysicalNetwork(Long physicalNetworkId); + + PhysicalNetwork getCreatedPhysicalNetwork(Long physicalNetworkId); + + PhysicalNetworkServiceProvider getPhysicalNetworkServiceProvider(Long providerId); + + PhysicalNetworkServiceProvider getCreatedPhysicalNetworkServiceProvider(Long providerId); } diff --git a/api/src/com/cloud/network/PhysicalNetwork.java b/api/src/com/cloud/network/PhysicalNetwork.java index f9307f5c1da..b2e17cd94f1 100644 --- a/api/src/com/cloud/network/PhysicalNetwork.java +++ b/api/src/com/cloud/network/PhysicalNetwork.java @@ -41,8 +41,8 @@ public interface PhysicalNetwork { } public enum BroadcastDomainRange { - Pod, - Zone; + POD, + ZONE; } long getId(); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 4caf7244ce6..973ea0a3305 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -267,6 +267,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag HashMap _lastNetworkIdsToFree = new HashMap(); + + private static HashMap> s_serviceToImplementedProvidersMap = new HashMap>(); @Override public PublicIp assignPublicIpAddress(long dcId, Long podId, Account owner, VlanType type, Long networkId, String requestedIp) throws InsufficientAddressCapacityException { @@ -883,6 +885,24 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("Network-Scavenger")); _allowSubdomainNetworkAccess = Boolean.valueOf(_configs.get(Config.SubDomainNetworkAccess.key())); + + //populate s_serviceToImplementedProvidersMap with current _networkElements + for (NetworkElement element : _networkElements) { + Map> capabilities = element.getCapabilities(); + Provider implementedProvider = element.getProvider(); + if(capabilities != null && implementedProvider != null){ + for(Service service : capabilities.keySet()){ + if(s_serviceToImplementedProvidersMap.containsKey(service)){ + List providers = s_serviceToImplementedProvidersMap.get(service); + providers.add(implementedProvider); + }else{ + List providers = new ArrayList(); + providers.add(implementedProvider); + s_serviceToImplementedProvidersMap.put(service, providers); + } + } + } + } s_logger.info("Network Manager is configured."); @@ -3403,6 +3423,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override @DB + @ActionEvent(eventType = EventTypes.EVENT_PHYSICAL_NETWORK_CREATE, eventDescription = "Creating Physical Network", create = true) public PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed, List isolationMethods, String broadcastDomainRangeStr, Long domainId, List tags) { // Check if zone exists if (zoneId == null) { @@ -3446,7 +3467,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag BroadcastDomainRange broadcastDomainRange = null; if (broadcastDomainRangeStr != null && !broadcastDomainRangeStr.isEmpty()) { try { - broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.valueOf(broadcastDomainRangeStr); + broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.valueOf(broadcastDomainRangeStr.toUpperCase()); } catch (IllegalArgumentException ex) { throw new InvalidParameterValueException("Unable to resolve broadcastDomainRange '" + broadcastDomainRangeStr + "' to a supported value {Pod or Zone}"); } @@ -3496,6 +3517,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override @DB + @ActionEvent(eventType = EventTypes.EVENT_PHYSICAL_NETWORK_UPDATE, eventDescription = "updating physical network", async = true) public PhysicalNetwork updatePhysicalNetwork(Long id, String networkSpeed, List isolationMethods, List tags, String newVnetRangeString, String state) { // verify input parameters @@ -3534,7 +3556,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag PhysicalNetwork.IsolationMethod isolationMethodVal = null; if (isMethod != null && !isMethod.isEmpty()) { try { - isolationMethodVal = PhysicalNetwork.IsolationMethod.valueOf(isMethod); + isolationMethodVal = PhysicalNetwork.IsolationMethod.valueOf(isMethod.toUpperCase()); } catch (IllegalArgumentException ex) { throw new InvalidParameterValueException("Unable to resolve IsolationMethod '" + isMethod + "' to a supported value {VLAN or L3 or GRE}"); } @@ -3630,6 +3652,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } @Override + @ActionEvent(eventType = EventTypes.EVENT_PHYSICAL_NETWORK_DELETE, eventDescription = "deleting physical network", async = true) public boolean deletePhysicalNetwork(Long physicalNetworkId) { // verify input parameters @@ -3637,7 +3660,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (network == null) { throw new InvalidParameterValueException("Network id=" + physicalNetworkId + "doesn't exist in the system"); } - + //for all networks associated, check if they can be deleted. //delete physical network only if no network is associated to it List networks = _networksDao.listByPhysicalNetwork(physicalNetworkId); @@ -3756,31 +3779,22 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } } - List supportedProviders = new ArrayList(); - for (NetworkElement element : _networkElements) { - if(element.getProvider() != null){ - if(service != null){ - //chk if this serviceprovider supports this service - if(isServiceProvided(element, service)){ - supportedProviders.add(element.getProvider()); - } - }else{ - supportedProviders.add(element.getProvider()); - } + Set supportedProviders = new HashSet(); + + if(service != null){ + supportedProviders.addAll(s_serviceToImplementedProvidersMap.get(service)); + }else{ + for(List pList : s_serviceToImplementedProvidersMap.values()){ + supportedProviders.addAll(pList); } } - return supportedProviders; + + return new ArrayList(supportedProviders); } - private boolean isServiceProvided(NetworkElement element, Service service){ - if(element.getCapabilities() != null){ - return element.getCapabilities().containsKey(service); - } - return false; - } - @Override @DB + @ActionEvent(eventType = EventTypes.EVENT_SERVICE_PROVIDER_CREATE, eventDescription = "Creating Physical Network ServiceProvider", create = true) public PhysicalNetworkServiceProvider addProviderToPhysicalNetwork(Long physicalNetworkId, String providerName, Long destinationPhysicalNetworkId) { // verify input parameters @@ -3837,6 +3851,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) { PhysicalNetworkServiceProviderVO provider = _pNSPDao.findById(id); @@ -3859,6 +3874,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } @Override + @ActionEvent(eventType = EventTypes.EVENT_SERVICE_PROVIDER_DELETE, eventDescription = "Deleting physical network ServiceProvider", async = true) public boolean deleteNetworkServiceProvider(Long id) { PhysicalNetworkServiceProviderVO provider = _pNSPDao.findById(id); @@ -3870,5 +3886,27 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return _pNSPDao.remove(id); } + + @Override + public PhysicalNetwork getPhysicalNetwork(Long physicalNetworkId){ + return _physicalNetworkDao.findById(physicalNetworkId); + } + + @Override + @ActionEvent(eventType = EventTypes.EVENT_PHYSICAL_NETWORK_CREATE, eventDescription = "Creating Physical Network", async = true) + public PhysicalNetwork getCreatedPhysicalNetwork(Long physicalNetworkId) { + return getPhysicalNetwork(physicalNetworkId); + } + + @Override + public PhysicalNetworkServiceProvider getPhysicalNetworkServiceProvider(Long providerId) { + return _pNSPDao.findById(providerId); + } + + @Override + @ActionEvent(eventType = EventTypes.EVENT_SERVICE_PROVIDER_CREATE, eventDescription = "Creating Physical Network ServiceProvider", async = true) + public PhysicalNetworkServiceProvider getCreatedPhysicalNetworkServiceProvider(Long providerId) { + return getPhysicalNetworkServiceProvider(providerId); + } } diff --git a/server/src/com/cloud/network/PhysicalNetworkVO.java b/server/src/com/cloud/network/PhysicalNetworkVO.java index 921f9c9c646..178f68c1f74 100644 --- a/server/src/com/cloud/network/PhysicalNetworkVO.java +++ b/server/src/com/cloud/network/PhysicalNetworkVO.java @@ -96,7 +96,7 @@ public class PhysicalNetworkVO implements PhysicalNetwork { if(broadcastDomainRange != null){ this.broadcastDomainRange = broadcastDomainRange; }else{ - this.broadcastDomainRange = BroadcastDomainRange.Pod; + this.broadcastDomainRange = BroadcastDomainRange.ZONE; } this.state = State.Disabled; } diff --git a/server/src/com/cloud/network/element/ExternalDhcpElement.java b/server/src/com/cloud/network/element/ExternalDhcpElement.java index 3524c04cb66..e5ebf8731b5 100644 --- a/server/src/com/cloud/network/element/ExternalDhcpElement.java +++ b/server/src/com/cloud/network/element/ExternalDhcpElement.java @@ -19,6 +19,7 @@ package com.cloud.network.element; +import java.util.HashMap; import java.util.Map; import javax.ejb.Local; @@ -37,7 +38,6 @@ 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.GuestIpType; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.Network.Type; @@ -54,6 +54,8 @@ import com.cloud.vm.VirtualMachineProfile; public class ExternalDhcpElement extends AdapterBase implements NetworkElement { private static final Logger s_logger = Logger.getLogger(ExternalDhcpElement.class); @Inject ExternalDhcpManager _dhcpMgr; + private static final Map> capabilities = setCapabilities(); + private boolean canHandle(DeployDestination dest, TrafficType trafficType, Type networkType) { DataCenter dc = dest.getDataCenter(); Pod pod = dest.getPod(); @@ -67,9 +69,15 @@ public class ExternalDhcpElement extends AdapterBase implements NetworkElement { return false; } + private static Map> setCapabilities() { + Map> capabilities = new HashMap>(); + capabilities.put(Service.Dhcp, null); + return capabilities; + } + @Override public Map> getCapabilities() { - return null; + return capabilities; } @Override diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql index ad6f682b1f1..077819b9da2 100755 --- a/setup/db/create-schema.sql +++ b/setup/db/create-schema.sql @@ -1771,7 +1771,7 @@ CREATE TABLE `cloud`.`physical_network` ( `vnet` varchar(255), `speed` varchar(32), `domain_id` bigint unsigned COMMENT 'foreign key to domain id', - `broadcast_domain_range` varchar(32) NOT NULL DEFAULT 'Pod' COMMENT 'range of broadcast domain : Pod/Zone', + `broadcast_domain_range` varchar(32) NOT NULL DEFAULT 'ZONE' COMMENT 'range of broadcast domain : POD/ZONE', `state` varchar(32) NOT NULL DEFAULT 'Disabled' COMMENT 'what state is this configuration in', `created` datetime COMMENT 'date created', `removed` datetime COMMENT 'date removed if not null',