diff --git a/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java b/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java index 82567ff8993..a7260d0c7d2 100644 --- a/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java +++ b/api/src/com/cloud/api/commands/CreatePhysicalNetworkCmd.java @@ -30,6 +30,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.PhysicalNetworkResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.PhysicalNetwork; @@ -60,7 +61,7 @@ public class CreatePhysicalNetworkCmd extends BaseAsyncCreateCmd { @Parameter(name=ApiConstants.DOMAIN_ID, type=CommandType.LONG, description="domain ID of the account owning a physical network") private Long domainId; - @Parameter(name=ApiConstants.BROADCAST_DOMAIN_RANGE, type=CommandType.STRING, description="the broadcast domain range for the physical network[Pod or Zone]") + @Parameter(name=ApiConstants.BROADCAST_DOMAIN_RANGE, type=CommandType.STRING, description="the broadcast domain range for the physical network[Pod or Zone]. In Acton release it can be Zone only in Advance zone, and Pod in Basic") private String broadcastDomainRange; @Parameter(name=ApiConstants.TAGS, type=CommandType.LIST, collectionType=CommandType.STRING, description="Tag the physical network") diff --git a/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java b/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java index 4c60e9d441b..1b0dc152136 100644 --- a/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java +++ b/api/src/com/cloud/api/commands/UpdatePhysicalNetworkCmd.java @@ -118,5 +118,4 @@ public class UpdatePhysicalNetworkCmd extends BaseAsyncCmd { public String getEventType() { return EventTypes.EVENT_PHYSICAL_NETWORK_UPDATE; } - } diff --git a/api/src/com/cloud/api/response/AsyncJobResponse.java b/api/src/com/cloud/api/response/AsyncJobResponse.java index a1a618739b1..40d9a2c4548 100644 --- a/api/src/com/cloud/api/response/AsyncJobResponse.java +++ b/api/src/com/cloud/api/response/AsyncJobResponse.java @@ -19,6 +19,8 @@ package com.cloud.api.response; import java.util.Date; +import org.apache.log4j.Logger; + import com.cloud.api.ApiConstants; import com.cloud.api.IdentityProxy; import com.cloud.api.ResponseObject; @@ -115,7 +117,9 @@ public class AsyncJobResponse extends BaseResponse { this.jobInstanceId.setTableName("user_ip_address"); } else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.SecurityGroup.toString())) { this.jobInstanceId.setTableName("security_group"); - } else if (!jobInstanceType.equalsIgnoreCase(AsyncJob.Type.None.toString())){ + } else if (jobInstanceType.equalsIgnoreCase(AsyncJob.Type.PhysicalNetwork.toString())) { + this.jobInstanceId.setTableName("physical_network"); + }else if (!jobInstanceType.equalsIgnoreCase(AsyncJob.Type.None.toString())){ // TODO : when we hit here, we need to add instanceType -> UUID entity table mapping assert(false); } diff --git a/api/src/com/cloud/api/response/TrafficTypeResponse.java b/api/src/com/cloud/api/response/TrafficTypeResponse.java index 80e5598d09c..53867cef694 100644 --- a/api/src/com/cloud/api/response/TrafficTypeResponse.java +++ b/api/src/com/cloud/api/response/TrafficTypeResponse.java @@ -22,7 +22,6 @@ import com.cloud.api.IdentityProxy; import com.cloud.serializer.Param; import com.google.gson.annotations.SerializedName; -@SuppressWarnings("unused") public class TrafficTypeResponse extends BaseResponse { @SerializedName(ApiConstants.ID) @Param(description="id of the network provider") diff --git a/api/src/com/cloud/async/AsyncJob.java b/api/src/com/cloud/async/AsyncJob.java index b6d09031311..4fdfee60681 100644 --- a/api/src/com/cloud/async/AsyncJob.java +++ b/api/src/com/cloud/async/AsyncJob.java @@ -36,6 +36,7 @@ public interface AsyncJob extends Identity{ StoragePool, IpAddress, SecurityGroup, + PhysicalNetwork } Long getId(); diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 0194b3905d0..d724f8b007d 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -84,7 +84,6 @@ import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.host.Status.Event; import com.cloud.host.dao.HostDao; -import com.cloud.host.dao.HostDetailsDao; import com.cloud.host.dao.HostTagsDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.HypervisorGuruManager; diff --git a/server/src/com/cloud/api/response/ApiResponseSerializer.java b/server/src/com/cloud/api/response/ApiResponseSerializer.java index b7646847be8..622b77e923a 100644 --- a/server/src/com/cloud/api/response/ApiResponseSerializer.java +++ b/server/src/com/cloud/api/response/ApiResponseSerializer.java @@ -19,7 +19,6 @@ package com.cloud.api.response; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; @@ -38,10 +37,6 @@ import com.cloud.api.ApiServer; import com.cloud.api.BaseCmd; import com.cloud.api.IdentityProxy; import com.cloud.api.ResponseObject; -import com.cloud.api.ResponseObjectTypeAdapter; -import com.cloud.configuration.Config; -import com.cloud.configuration.dao.ConfigurationDao; -import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.encoding.URLEncoder; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.uuididentity.dao.IdentityDao; diff --git a/server/src/com/cloud/configuration/ConfigurationManager.java b/server/src/com/cloud/configuration/ConfigurationManager.java index 2e9bffd597d..87706ce509e 100644 --- a/server/src/com/cloud/configuration/ConfigurationManager.java +++ b/server/src/com/cloud/configuration/ConfigurationManager.java @@ -190,7 +190,7 @@ public interface ConfigurationManager extends ConfigurationService, Manager { Vlan createVlanAndPublicIpRange(Long userId, Long zoneId, Long podId, String startIP, String endIP, String vlanGateway, String vlanNetmask, boolean forVirtualNetwork, String vlanId, Account account, Long networkId, Long physicalNetworkId) throws InsufficientCapacityException, ConcurrentOperationException, InvalidParameterValueException; - void createDefaultNetworks(long zoneId, boolean isSecurityGroupEnabled, long physicalNetworkId) throws ConcurrentOperationException; + void createDefaultSystemNetworks(long zoneId) throws ConcurrentOperationException; HostPodVO getPod(long id); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index f034fb0059a..efc5db3b0d1 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -1486,19 +1486,10 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura //Zone will be disabled since 3.0. Admin shoul enable it after physical network and providers setup. zone.setAllocationState(Grouping.AllocationState.Disabled); } - zone = _zoneDao.persist(zone); - - // Create default Physical Network - long physicalNetworkId = createDefaultPhysicalNetwork(zone, domainId); + zone = _zoneDao.persist(zone); - //add VirtualRouter as the default network service provider - _networkMgr.addDefaultVirtualRouterToPhysicalNetwork(physicalNetworkId); - - //add security group provider to the physical network - _networkMgr.addDefaultSecurityGroupProviderToPhysicalNetwork(physicalNetworkId); - - // Create deafult networks - createDefaultNetworks(zone.getId(), isSecurityGroupEnabled, physicalNetworkId); + // Create default system networks + createDefaultSystemNetworks(zone.getId()); _swiftMgr.propagateSwiftTmplteOnZone(zone.getId()); txn.commit(); @@ -1512,31 +1503,9 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura } } - private long createDefaultPhysicalNetwork(DataCenter zone, Long domainId){ - //create entry - String broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.POD.toString(); - if(zone.getNetworkType() == NetworkType.Basic){ - broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.POD.toString(); - }else{ - broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.ZONE.toString(); - } - - String pNtwkName = zone.getName() + "-pNtwk"; - PhysicalNetwork defaultNetwork = _networkMgr.createPhysicalNetwork(zone.getId(), null, null, null, broadcastDomainRange, domainId, null, pNtwkName); - - //String defaultXenLabel = "cloud-private"; - - //add default Traffic types to the physical network - _networkMgr.addTrafficTypeToPhysicalNetwork(defaultNetwork.getId(), TrafficType.Guest.toString(), null, null, null, null, null); - _networkMgr.addTrafficTypeToPhysicalNetwork(defaultNetwork.getId(), TrafficType.Public.toString(), null, null, null, null, null); - _networkMgr.addTrafficTypeToPhysicalNetwork(defaultNetwork.getId(), TrafficType.Management.toString(), null, null, null, null, null); - _networkMgr.addTrafficTypeToPhysicalNetwork(defaultNetwork.getId(), TrafficType.Storage.toString(), null, null, null, null, null); - - return defaultNetwork.getId(); - } @Override - public void createDefaultNetworks(long zoneId, boolean isSecurityGroupEnabled, long physicalNetworkId) throws ConcurrentOperationException { + public void createDefaultSystemNetworks(long zoneId) throws ConcurrentOperationException { DataCenterVO zone = _zoneDao.findById(zoneId); String networkDomain = null; // Create public, management, control and storage networks as a part of @@ -1551,7 +1520,6 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura Account systemAccount = _accountDao.findById(Account.ACCOUNT_ID_SYSTEM); BroadcastDomainType broadcastDomainType = null; - boolean isNetworkDefault = false; if (offering.getTrafficType() == TrafficType.Management) { broadcastDomainType = BroadcastDomainType.Native; } else if (offering.getTrafficType() == TrafficType.Control) { diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index c76f126d5cc..b4747d357e0 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -4226,7 +4226,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @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, String name) { - // Check if zone exists + + // Check if zone exists if (zoneId == null) { throw new InvalidParameterValueException("Please specify a valid zone."); } @@ -4235,8 +4236,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (zone == null) { throw new InvalidParameterValueException("Please specify a valid zone."); } + + NetworkType zoneType = zone.getNetworkType(); - if(zone.getNetworkType() == NetworkType.Basic){ + if(zoneType == NetworkType.Basic){ if(!_physicalNetworkDao.listByZone(zoneId).isEmpty()){ throw new CloudRuntimeException("Cannot add the physical network to basic zone id: "+zoneId+", there is a physical network already existing in this basic Zone"); } @@ -4252,11 +4255,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag int vnetStart = 0; int vnetEnd = 0; if (vnetRange != null) { - //Verify zone type - if (zone.getNetworkType() == NetworkType.Basic - || (zone.getNetworkType() == NetworkType.Advanced && zone.isSecurityGroupEnabled())) { - throw new InvalidParameterValueException("Can't add vnet range to the physical network in the zone that supports " + zone.getNetworkType() + " network, Security Group enabled: "+ zone.isSecurityGroupEnabled()); + if (zoneType == NetworkType.Basic + || (zoneType == NetworkType.Advanced && zone.isSecurityGroupEnabled())) { + throw new InvalidParameterValueException("Can't add vnet range to the physical network in the zone that supports " + zoneType + " network, Security Group enabled: "+ zone.isSecurityGroupEnabled()); } String[] tokens = vnetRange.split("-"); @@ -4284,10 +4286,17 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } catch (IllegalArgumentException ex) { throw new InvalidParameterValueException("Unable to resolve broadcastDomainRange '" + broadcastDomainRangeStr + "' to a supported value {Pod or Zone}"); } + + //in Acton release you can specify only Zone broadcastdomain type in Advance zone, and Pod in Basic + if (zoneType == NetworkType.Basic && broadcastDomainRange != null && broadcastDomainRange != BroadcastDomainRange.POD) { + throw new InvalidParameterValueException("Basic zone can have broadcast domain type of value " + BroadcastDomainRange.POD + " only"); + } else if (zoneType == NetworkType.Advanced && broadcastDomainRange != null && broadcastDomainRange != BroadcastDomainRange.ZONE) { + throw new InvalidParameterValueException("Advance zone can have broadcast domain type of value " + BroadcastDomainRange.ZONE + " only"); + } } if(broadcastDomainRange == null){ - if(zone.getNetworkType() == NetworkType.Basic){ + if(zoneType == NetworkType.Basic){ broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.POD; }else{ broadcastDomainRange = PhysicalNetwork.BroadcastDomainRange.ZONE; @@ -4308,6 +4317,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (vnetRange != null) { _dcDao.addVnet(zone.getId(), pNetwork.getId(), vnetStart, vnetEnd); } + + //add VirtualRouter as the default network service provider + addDefaultVirtualRouterToPhysicalNetwork(pNetwork.getId()); + + //add security group provider to the physical network + addDefaultSecurityGroupProviderToPhysicalNetwork(pNetwork.getId()); txn.commit(); return pNetwork;