diff --git a/api/src/com/cloud/api/commands/CreateNetworkCmd.java b/api/src/com/cloud/api/commands/CreateNetworkCmd.java index 273b23f0979..ad986bf3cec 100644 --- a/api/src/com/cloud/api/commands/CreateNetworkCmd.java +++ b/api/src/com/cloud/api/commands/CreateNetworkCmd.java @@ -30,6 +30,7 @@ import com.cloud.api.ServerApiException; import com.cloud.api.response.NetworkResponse; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; +import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; import com.cloud.user.UserContext; @@ -52,7 +53,7 @@ public class CreateNetworkCmd extends BaseCmd { @Parameter(name=ApiConstants.NETWORK_OFFERING_ID, type=CommandType.LONG, required=true, description="the network offering id") private Long networkOfferingId; - @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required=true, description="the Zone ID for the network") + @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="the Zone ID for the network") private Long zoneId; @Parameter(name=ApiConstants.GATEWAY, type=CommandType.STRING, description="the gateway of the network") @@ -90,6 +91,9 @@ public class CreateNetworkCmd extends BaseCmd { @Parameter(name=ApiConstants.TAGS, type=CommandType.LIST, collectionType=CommandType.STRING, description="Tag the network") private List tags; + + @Parameter(name=ApiConstants.PHYSICAL_NETWORK_ID, type=CommandType.LONG, description="the Physical Network ID the network belongs to") + private Long physicalNetworkId; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// @@ -102,10 +106,6 @@ public class CreateNetworkCmd extends BaseCmd { return tags; } - public Long getZoneId() { - return zoneId; - } - public String getGateway() { return gateway; } @@ -158,6 +158,16 @@ public class CreateNetworkCmd extends BaseCmd { return isShared == null ? false : isShared; } + public Long getPhysicalNetworkId() { + if (physicalNetworkId != null) { + return physicalNetworkId; + } else if (zoneId != null) { + return _networkService.translateZoneToPhysicalNetwork(zoneId); + } else { + throw new InvalidParameterValueException("Either zoneId or physicalNetworkId have to be specified"); + } + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/com/cloud/api/commands/ListNetworksCmd.java b/api/src/com/cloud/api/commands/ListNetworksCmd.java index 9f660b35f95..7ea6e9fbbd0 100644 --- a/api/src/com/cloud/api/commands/ListNetworksCmd.java +++ b/api/src/com/cloud/api/commands/ListNetworksCmd.java @@ -69,6 +69,9 @@ public class ListNetworksCmd extends BaseListCmd { @Parameter(name=ApiConstants.PROJECT_ID, type=CommandType.LONG, description="list networks by project id") private Long projectId; + + @Parameter(name=ApiConstants.PHYSICAL_NETWORK_ID, type=CommandType.LONG, description="list networks by physical network id") + private Long physicalNetworkId; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// @@ -114,6 +117,10 @@ public class ListNetworksCmd extends BaseListCmd { return projectId; } + public Long getPhysicalNetworkId() { + return physicalNetworkId; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/api/src/com/cloud/api/response/NetworkResponse.java b/api/src/com/cloud/api/response/NetworkResponse.java index f998cfc706b..f780b998ec2 100644 --- a/api/src/com/cloud/api/response/NetworkResponse.java +++ b/api/src/com/cloud/api/response/NetworkResponse.java @@ -125,6 +125,10 @@ public class NetworkResponse extends BaseResponse implements ControlledEntityRes @SerializedName(ApiConstants.TAGS) @Param(description="comma separated tag") private String tags; + + @SerializedName(ApiConstants.PHYSICAL_NETWORK_ID) @Param(description="the physical network id") + private Long physicalNetworkId; + public void setId(Long id) { this.id = id; @@ -268,7 +272,9 @@ public class NetworkResponse extends BaseResponse implements ControlledEntityRes public void setProjectName(String projectName) { this.projectName = projectName; } - - + + public void setPhysicalNetworkId(Long physicalNetworkId) { + this.physicalNetworkId = physicalNetworkId; + } } diff --git a/api/src/com/cloud/deploy/DataCenterDeployment.java b/api/src/com/cloud/deploy/DataCenterDeployment.java index 5be0247c2fc..2d65994fa4e 100644 --- a/api/src/com/cloud/deploy/DataCenterDeployment.java +++ b/api/src/com/cloud/deploy/DataCenterDeployment.java @@ -25,19 +25,21 @@ public class DataCenterDeployment implements DeploymentPlan { Long _clusterId; Long _poolId; Long _hostId; + Long _physicalNetworkId; ExcludeList _avoids = null; boolean _recreateDisks; public DataCenterDeployment(long dataCenterId) { - this(dataCenterId, null, null, null, null); + this(dataCenterId, null, null, null, null, null); } - public DataCenterDeployment(long dataCenterId, Long podId, Long clusterId, Long hostId, Long poolId) { + public DataCenterDeployment(long dataCenterId, Long podId, Long clusterId, Long hostId, Long poolId, Long physicalNetworkId) { _dcId = dataCenterId; _podId = podId; _clusterId = clusterId; _hostId = hostId; _poolId = poolId; + _physicalNetworkId = physicalNetworkId; } @Override @@ -74,4 +76,9 @@ public class DataCenterDeployment implements DeploymentPlan { public void setAvoids(ExcludeList avoids) { _avoids = avoids; } + + @Override + public Long getPhysicalNetworkId() { + return _physicalNetworkId; + } } diff --git a/api/src/com/cloud/deploy/DeploymentPlan.java b/api/src/com/cloud/deploy/DeploymentPlan.java index 0881f7bd50c..5f7144d49c3 100644 --- a/api/src/com/cloud/deploy/DeploymentPlan.java +++ b/api/src/com/cloud/deploy/DeploymentPlan.java @@ -63,4 +63,6 @@ public interface DeploymentPlan { * the ExcludeList to avoid for deployment */ public ExcludeList getAvoids(); + + Long getPhysicalNetworkId(); } diff --git a/api/src/com/cloud/network/Network.java b/api/src/com/cloud/network/Network.java index 9906d8c190e..1154efece57 100644 --- a/api/src/com/cloud/network/Network.java +++ b/api/src/com/cloud/network/Network.java @@ -39,6 +39,7 @@ import com.cloud.utils.fsm.StateMachine; */ public interface Network extends ControlledEntity { + @Deprecated public enum GuestIpType { Virtual, Direct, @@ -252,6 +253,7 @@ public interface Network extends ControlledEntity { URI getBroadcastUri(); + @Deprecated GuestIpType getGuestType(); String getDisplayText(); @@ -270,5 +272,5 @@ public interface Network extends ControlledEntity { boolean getIsShared(); - long getPhysicalNetworkId(); + Long getPhysicalNetworkId(); } diff --git a/api/src/com/cloud/network/NetworkProfile.java b/api/src/com/cloud/network/NetworkProfile.java index cef307db5ba..b6f85994440 100644 --- a/api/src/com/cloud/network/NetworkProfile.java +++ b/api/src/com/cloud/network/NetworkProfile.java @@ -50,9 +50,10 @@ public class NetworkProfile implements Network { private boolean isSecurityGroupEnabled; private List tags; private Network.Type type; + @Deprecated private GuestIpType guestIpType; private boolean isShared; - private long physicalNetworkId; + private Long physicalNetworkId; public NetworkProfile(Network network) { this.id = network.getId(); @@ -216,7 +217,7 @@ public class NetworkProfile implements Network { } @Override - public long getPhysicalNetworkId() { + public Long getPhysicalNetworkId() { return physicalNetworkId; } } diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java index db8334140e7..1faba4ccc00 100644 --- a/api/src/com/cloud/network/NetworkService.java +++ b/api/src/com/cloud/network/NetworkService.java @@ -117,4 +117,6 @@ public interface NetworkService { PhysicalNetworkServiceProvider getPhysicalNetworkServiceProvider(Long providerId); PhysicalNetworkServiceProvider getCreatedPhysicalNetworkServiceProvider(Long providerId); + + long translateZoneToPhysicalNetwork(long zoneId); } diff --git a/api/src/com/cloud/offering/NetworkOffering.java b/api/src/com/cloud/offering/NetworkOffering.java index 81c2e141c5c..530e8ac5016 100644 --- a/api/src/com/cloud/offering/NetworkOffering.java +++ b/api/src/com/cloud/offering/NetworkOffering.java @@ -18,8 +18,6 @@ package com.cloud.offering; import com.cloud.network.Network.GuestIpType; -import com.cloud.network.Network.Provider; -import com.cloud.network.Network.Service; import com.cloud.network.Network.Type; import com.cloud.network.Networks.TrafficType; @@ -91,6 +89,7 @@ public interface NetworkOffering { boolean isSharedSourceNatService(); + @Deprecated GuestIpType getGuestType(); String getUniqueName(); diff --git a/server/src/com/cloud/agent/manager/allocator/impl/RecreateHostAllocator.java b/server/src/com/cloud/agent/manager/allocator/impl/RecreateHostAllocator.java index a4db693d755..ab1765b3a62 100644 --- a/server/src/com/cloud/agent/manager/allocator/impl/RecreateHostAllocator.java +++ b/server/src/com/cloud/agent/manager/allocator/impl/RecreateHostAllocator.java @@ -130,7 +130,7 @@ public class RecreateHostAllocator extends FirstFitRoutingAllocator { } continue; } - DataCenterDeployment newPlan = new DataCenterDeployment(plan.getDataCenterId(), p.getPod().getId(), clusterId, null, null); + DataCenterDeployment newPlan = new DataCenterDeployment(plan.getDataCenterId(), p.getPod().getId(), clusterId, null, null, null); hosts = super.allocateTo(vm, newPlan, type, avoid, returnUpTo); if (hosts != null && !hosts.isEmpty()) { return hosts; diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 3dbbbc56d38..8bfd99dc72f 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -2176,6 +2176,7 @@ public class ApiResponseHelper implements ResponseGenerator { } response.setZoneId(network.getDataCenterId()); + response.setPhysicalNetworkId(network.getPhysicalNetworkId()); // populate network offering information NetworkOffering networkOffering = ApiDBUtils.findNetworkOfferingById(network.getNetworkOfferingId()); @@ -2381,17 +2382,19 @@ public class ApiResponseHelper implements ResponseGenerator { Set securityGroupResponse = new HashSet(); for (SecurityGroupData sgd: userVmData.getSecurityGroupList()){ - SecurityGroupResponse sgr = new SecurityGroupResponse(); - sgr.setId(sgd.getId()); - sgr.setName(sgd.getName()); - sgr.setDescription(sgd.getDescription()); - - Account account = ApiDBUtils.findAccountByNameDomain(sgd.getAccountName(), sgd.getDomainId()); - populateAccount(sgr, account.getId()); - populateDomain(sgr, sgd.getDomainId()); - - sgr.setObjectName(sgd.getObjectName()); - securityGroupResponse.add(sgr); + if (sgd.getId() != null) { + SecurityGroupResponse sgr = new SecurityGroupResponse(); + sgr.setId(sgd.getId()); + sgr.setName(sgd.getName()); + sgr.setDescription(sgd.getDescription()); + + Account account = ApiDBUtils.findAccountByNameDomain(sgd.getAccountName(), sgd.getDomainId()); + populateAccount(sgr, account.getId()); + populateDomain(sgr, sgd.getDomainId()); + + sgr.setObjectName(sgd.getObjectName()); + securityGroupResponse.add(sgr); + } } userVmResponse.setSecurityGroupList(new ArrayList(securityGroupResponse)); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 691ecf367b8..04972a6c241 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -956,11 +956,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura return pod; } - private boolean zoneHasVMs(long zoneId) { - List vmInstances = _vmInstanceDao.listByZoneId(zoneId); - return !vmInstances.isEmpty(); - } - + @DB protected void checkIfZoneIsDeletable(long zoneId) { List> tablesToCheck = new ArrayList>(); @@ -1001,6 +997,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura volumes.add(2, "there are storage volumes for this zone"); tablesToCheck.add(volumes); + //FIXME - move this part of verification to deletePhysicalNetwork code List vnet = new ArrayList(); vnet.add(0, "op_dc_vnet_alloc"); vnet.add(1, "data_center_id"); @@ -1142,9 +1139,6 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura txn.start(); - // Delete vNet - _zoneDao.deleteVnet(zoneId); - // delete vlans for this zone List vlans = _vlanDao.listByZone(zoneId); for (VlanVO vlan : vlans) { @@ -1152,12 +1146,16 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura } // Delete networks + //FIXME - move this part to deletePhysicalNetwork List networks = _networkDao.listByZoneIncludingRemoved(zoneId); if (networks != null && !networks.isEmpty()) { for (NetworkVO network : networks) { _networkDao.remove(network.getId()); } } + + //FIXME - Delete physical networks belonging to the zone + success = _zoneDao.remove(zoneId); if (success) { @@ -1381,7 +1379,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura List ntwkOff = _networkOfferingDao.listSystemNetworkOfferings(); for (NetworkOfferingVO offering : ntwkOff) { - DataCenterDeployment plan = new DataCenterDeployment(zone.getId(), null, null, null, null); + DataCenterDeployment plan = new DataCenterDeployment(zone.getId(), null, null, null, null, null); NetworkVO userNetwork = new NetworkVO(); Account systemAccount = _accountDao.findById(Account.ACCOUNT_ID_SYSTEM); diff --git a/server/src/com/cloud/dc/dao/DataCenterDao.java b/server/src/com/cloud/dc/dao/DataCenterDao.java index c5bed6aaa80..5ba0d5b4a07 100644 --- a/server/src/com/cloud/dc/dao/DataCenterDao.java +++ b/server/src/com/cloud/dc/dao/DataCenterDao.java @@ -51,8 +51,6 @@ public interface DataCenterDao extends GenericDao { void addLinkLocalIpAddress(long dcId,long podId, String start, String end); List findVnet(long dcId, String vnet); - - void deleteVnet(long dcId); String allocatePodVlan(long podId, long accountId); @@ -71,6 +69,6 @@ public interface DataCenterDao extends GenericDao { DataCenterVO findByTokenOrIdOrName(String tokenIdOrName); void addVnet(long dcId, long physicalNetworkId, int start, int end); - void deleteVnet(long dcId, long physicalNetworkId); - List listAllocatedVnets(long dcId, long physicalNetworkId); + void deleteVnet(long physicalNetworkId); + List listAllocatedVnets(long physicalNetworkId); } diff --git a/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java b/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java index 1e6cec93d89..7f063f516b9 100644 --- a/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java +++ b/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java @@ -111,7 +111,7 @@ public class DataCenterDaoImpl extends GenericDaoBase implem @Override public void releaseVnet(String vnet, long dcId, long physicalNetworkId, long accountId, String reservationId) { - _vnetAllocDao.release(vnet, dcId, physicalNetworkId, accountId, reservationId); + _vnetAllocDao.release(vnet, physicalNetworkId, accountId, reservationId); } @Override @@ -151,7 +151,7 @@ public class DataCenterDaoImpl extends GenericDaoBase implem @Override public String allocateVnet(long dataCenterId, long physicalNetworkId, long accountId, String reservationId) { - DataCenterVnetVO vo = _vnetAllocDao.take(dataCenterId, physicalNetworkId, accountId, reservationId); + DataCenterVnetVO vo = _vnetAllocDao.take(physicalNetworkId, accountId, reservationId); if (vo == null) { return null; } @@ -204,13 +204,6 @@ public class DataCenterDaoImpl extends GenericDaoBase implem } return vo.getIpAddress(); } - - - @Override - public void deleteVnet(long dcId) { - _vnetAllocDao.delete(dcId); - } - @Override public void addVnet(long dcId, long physicalNetworkId, int start, int end) { @@ -218,13 +211,13 @@ public class DataCenterDaoImpl extends GenericDaoBase implem } @Override - public void deleteVnet(long dcId, long physicalNetworkId) { - _vnetAllocDao.delete(dcId, physicalNetworkId); + public void deleteVnet(long physicalNetworkId) { + _vnetAllocDao.delete(physicalNetworkId); } @Override - public List listAllocatedVnets(long dcId, long physicalNetworkId) { - return _vnetAllocDao.listAllocatedVnets(dcId, physicalNetworkId); + public List listAllocatedVnets(long physicalNetworkId) { + return _vnetAllocDao.listAllocatedVnets(physicalNetworkId); } @Override diff --git a/server/src/com/cloud/dc/dao/DataCenterVnetDaoImpl.java b/server/src/com/cloud/dc/dao/DataCenterVnetDaoImpl.java index 0c833a8a9c6..3d0ef09a85f 100755 --- a/server/src/com/cloud/dc/dao/DataCenterVnetDaoImpl.java +++ b/server/src/com/cloud/dc/dao/DataCenterVnetDaoImpl.java @@ -41,16 +41,9 @@ public class DataCenterVnetDaoImpl extends GenericDaoBase VnetDcSearch; private final SearchBuilder VnetDcSearchAllocated; private final SearchBuilder DcSearchAllocated; - - public List listAllocatedVnets(long dcId) { - SearchCriteria sc = DcSearchAllocated.create(); - sc.setParameters("dc", dcId); - return listBy(sc); - } - public List listAllocatedVnets(long dcId, long physicalNetworkId) { + public List listAllocatedVnets(long physicalNetworkId) { SearchCriteria sc = DcSearchAllocated.create(); - sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); return listBy(sc); } @@ -92,24 +85,15 @@ public class DataCenterVnetDaoImpl extends GenericDaoBase sc = VnetDcSearch.create(); - sc.setParameters("dc", dcId); - remove(sc); - } - - public void delete(long dcId, long physicalNetworkId) { - SearchCriteria sc = VnetDcSearch.create(); - sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); - remove(sc); } @DB - public DataCenterVnetVO take(long dcId, long physicalNetworkId, long accountId, String reservationId) { + public DataCenterVnetVO take(long physicalNetworkId, long accountId, String reservationId) { SearchCriteria sc = FreeVnetSearch.create(); - sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); Date now = new Date(); Transaction txn = Transaction.currentTxn(); @@ -127,10 +111,9 @@ public class DataCenterVnetDaoImpl extends GenericDaoBase sc = VnetDcSearchAllocated.create(); sc.setParameters("vnet", vnet); - sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("account", accountId); sc.setParameters("reservation", reservationId); diff --git a/server/src/com/cloud/deploy/FirstFitPlanner.java b/server/src/com/cloud/deploy/FirstFitPlanner.java index bd302c05196..60ba05da82b 100755 --- a/server/src/com/cloud/deploy/FirstFitPlanner.java +++ b/server/src/com/cloud/deploy/FirstFitPlanner.java @@ -141,7 +141,7 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner { } //search for storage under the zone, pod, cluster of the host. - DataCenterDeployment lastPlan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), hostIdSpecified, plan.getPoolId()); + DataCenterDeployment lastPlan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), hostIdSpecified, plan.getPoolId(), null); Pair>, List> result = findSuitablePoolsForVolumes(vmProfile, lastPlan, avoid, HostAllocator.RETURN_UPTO_ALL); Map> suitableVolumeStoragePools = result.first(); @@ -182,7 +182,7 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner { s_logger.debug("The last host of this VM is UP and has enough capacity"); s_logger.debug("Now checking for suitable pools under zone: "+host.getDataCenterId() +", pod: "+ host.getPodId()+", cluster: "+ host.getClusterId()); //search for storage under the zone, pod, cluster of the last host. - DataCenterDeployment lastPlan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), plan.getPoolId()); + DataCenterDeployment lastPlan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), plan.getPoolId(), null); Pair>, List> result = findSuitablePoolsForVolumes(vmProfile, lastPlan, avoid, HostAllocator.RETURN_UPTO_ALL); Map> suitableVolumeStoragePools = result.first(); List readyAndReusedVolumes = result.second(); @@ -358,7 +358,7 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner { s_logger.debug("Checking resources in Cluster: "+clusterId + " under Pod: "+clusterVO.getPodId()); //search for resources(hosts and storage) under this zone, pod, cluster. - DataCenterDeployment potentialPlan = new DataCenterDeployment(plan.getDataCenterId(), clusterVO.getPodId(), clusterVO.getId(), null, plan.getPoolId()); + DataCenterDeployment potentialPlan = new DataCenterDeployment(plan.getDataCenterId(), clusterVO.getPodId(), clusterVO.getId(), null, plan.getPoolId(), null); //find suitable hosts under this cluster, need as many hosts as we get. List suitableHosts = findSuitableHosts(vmProfile, potentialPlan, avoid, HostAllocator.RETURN_UPTO_ALL); diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 13e1add9adb..9270616e3ba 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -160,8 +160,8 @@ public interface NetworkManager extends NetworkService { boolean destroyNetwork(long networkId, ReservationContext context); - Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, Long zoneId, String gateway, String cidr, String vlanId, String networkDomain, Account owner, - boolean isSecurityGroupEnabled, Long domainId, List tags, Boolean isShared) throws ConcurrentOperationException, InsufficientCapacityException; + Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, String gateway, String cidr, String vlanId, String networkDomain, Account owner, boolean isSecurityGroupEnabled, + Long domainId, List tags, Boolean isShared, PhysicalNetwork physicalNetwork) throws ConcurrentOperationException, InsufficientCapacityException; /** * @throws InsufficientCapacityException diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 973ea0a3305..a7cfb6488db 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1012,9 +1012,9 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (related == -1) { related = id; } - - NetworkVO vo = new NetworkVO(id, network, offering.getId(), plan.getDataCenterId(), guru.getName(), owner.getDomainId(), owner.getId(), related, name, displayText, isDefault, - predefined.isSecurityGroupEnabled(), (domainId != null), predefined.getNetworkDomain(), offering.getType(), isShared); + + NetworkVO vo = new NetworkVO(id, network, offering.getId(), guru.getName(), owner.getDomainId(), owner.getId(), related, name, displayText, isDefault, + predefined.isSecurityGroupEnabled(), (domainId != null), predefined.getNetworkDomain(), offering.getType(), isShared, plan.getDataCenterId(), plan.getPhysicalNetworkId()); vo.setTags(tags); networks.add(_networksDao.persist(vo, vo.getGuestType() != null)); @@ -1580,7 +1580,6 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @ActionEvent(eventType = EventTypes.EVENT_NETWORK_CREATE, eventDescription = "creating network") public Network createNetwork(CreateNetworkCmd cmd) throws InsufficientCapacityException, ConcurrentOperationException { Long networkOfferingId = cmd.getNetworkOfferingId(); - Long zoneId = cmd.getZoneId(); String gateway = cmd.getGateway(); String startIP = cmd.getStartIp(); String endIP = cmd.getEndIp(); @@ -1595,6 +1594,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag List tags = cmd.getTags(); boolean isDomainSpecific = false; Boolean isShared = cmd.getIsShared(); + long physicalNetworkId = cmd.getPhysicalNetworkId(); if (tags != null && tags.size() > 1) { throw new InvalidParameterException("Only one tag can be specified for a network at this time"); @@ -1642,18 +1642,21 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag endIP = startIP; } - // Check if zone exists - if (zoneId == null) { - throw new InvalidParameterValueException("Please specify a valid zone."); + // Check if physical network exists + PhysicalNetwork pNtwk = _physicalNetworkDao.findById(physicalNetworkId); + if (pNtwk == null) { + throw new InvalidParameterValueException("Unable to find physical network by id " + physicalNetworkId); } - - DataCenterVO zone = _dcDao.findById(zoneId); - if (zone == null) { - throw new InvalidParameterValueException("Please specify a valid zone."); + + //check that the physical network is enabled + if (pNtwk.getState() != PhysicalNetwork.State.Enabled) { + throw new InvalidParameterValueException("Physical network id " + physicalNetworkId + " is in incorrect state: " + pNtwk.getState()); } + + DataCenter zone = _dcDao.findById(pNtwk.getDataCenterId()); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType())) { - throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: " + zoneId); + throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: " + zone.getId()); } // Check if network offering is Available @@ -1716,7 +1719,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag domainId = cmd.getDomainId(); } - Network network = createNetwork(networkOfferingId, name, displayText, isDefault, zoneId, gateway, cidr, vlanId, networkDomain, owner, false, domainId, tags, isShared); + Network network = createNetwork(networkOfferingId, name, displayText, isDefault, gateway, cidr, vlanId, networkDomain, owner, false, domainId, tags, isShared, pNtwk); // Don't pass owner to create vlan when network offering is of type Shared - done to prevent accountVlanMap entry // creation when vlan is mapped to network @@ -1726,7 +1729,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (caller.getType() == Account.ACCOUNT_TYPE_ADMIN && network.getType() == Network.Type.Shared && defineNetworkConfig) { // Create vlan ip range - _configMgr.createVlanAndPublicIpRange(userId, zoneId, null, startIP, endIP, gateway, netmask, false, vlanId, owner, network.getId()); + _configMgr.createVlanAndPublicIpRange(userId, pNtwk.getDataCenterId(), null, startIP, endIP, gateway, netmask, false, vlanId, owner, network.getId()); } txn.commit(); @@ -1736,11 +1739,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag @Override @DB - public Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, Long zoneId, String gateway, String cidr, String vlanId, String networkDomain, - Account owner, boolean isSecurityGroupEnabled, Long domainId, List tags, Boolean isShared) throws ConcurrentOperationException, InsufficientCapacityException { + public Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, String gateway, String cidr, String vlanId, String networkDomain, Account owner, + boolean isSecurityGroupEnabled, Long domainId, List tags, Boolean isShared, PhysicalNetwork physicalNetwork) throws ConcurrentOperationException, InsufficientCapacityException { NetworkOfferingVO networkOffering = _networkOfferingDao.findById(networkOfferingId); - DataCenterVO zone = _dcDao.findById(zoneId); + DataCenterVO zone = _dcDao.findById(physicalNetwork.getDataCenterId()); + long zoneId = zone.getId(); // allow isDefault to be set only for Shared network if (networkOffering.getType() == Network.Type.Isolated) { @@ -1750,7 +1754,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag isDefault = true; } if (isShared != null && isShared) { - throw new InvalidParameterValueException("Can specify isShared parameter for Direct networks only"); + throw new InvalidParameterValueException("Can specify isShared parameter for " + Network.Type.Shared + " networks only"); } } else { if (isDefault == null) { @@ -1832,7 +1836,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag Transaction txn = Transaction.currentTxn(); txn.start(); - DataCenterDeployment plan = new DataCenterDeployment(zoneId, null, null, null, null); + DataCenterDeployment plan = new DataCenterDeployment(zoneId, null, null, null, null, physicalNetwork.getId()); NetworkVO userNetwork = new NetworkVO(); userNetwork.setNetworkDomain(networkDomain); userNetwork.setSecurityGroupEnabled(isSecurityGroupEnabled); @@ -1892,6 +1896,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag List permittedAccounts = new ArrayList(); String path = null; Long sharedNetworkDomainId = null; + Long physicalNetworkId = cmd.getPhysicalNetworkId(); //1) default is system to false if not specified //2) reset parameter to false if it's specified by the regular user @@ -1981,27 +1986,27 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag List networksToReturn = new ArrayList(); if (sharedNetworkDomainId != null) { - networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared), searchFilter, sharedNetworkDomainId)); + networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared, physicalNetworkId), searchFilter, sharedNetworkDomainId)); } else { SearchBuilder domainSearch = _domainDao.createSearchBuilder(); domainSearch.and("path", domainSearch.entity().getPath(), SearchCriteria.Op.LIKE); sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER); - networksToReturn.addAll(listDomainSpecificNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared), searchFilter, path)); + networksToReturn.addAll(listDomainSpecificNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared, physicalNetworkId), searchFilter, path)); } //if user requested only domain specific networks, don't return account/zone wide networks if (!permittedAccounts.isEmpty() || (domainId == null && accountName == null && projectId == null)) { - networksToReturn.addAll(listAccountSpecificAndZoneLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared), searchFilter, path, permittedAccounts)); + networksToReturn.addAll(listAccountSpecificAndZoneLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared, physicalNetworkId), searchFilter, path, permittedAccounts)); } return networksToReturn; } else { - return _networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared), searchFilter); + return _networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, type, isDefault, trafficType, isShared, physicalNetworkId), searchFilter); } } - private SearchCriteria buildNetworkSearchCriteria(SearchBuilder sb, String keyword, Long id, Boolean isSystem, Long zoneId, String type, Boolean isDefault, String trafficType, Boolean isShared) { + private SearchCriteria buildNetworkSearchCriteria(SearchBuilder sb, String keyword, Long id, Boolean isSystem, Long zoneId, String type, Boolean isDefault, String trafficType, Boolean isShared, Long physicalNetworkId) { SearchCriteria sc = sb.create(); if (isSystem != null) { @@ -2037,6 +2042,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (isShared != null) { sc.addAnd("isShared", SearchCriteria.Op.EQ, isShared); } + + if (physicalNetworkId != null) { + sc.addAnd("physicalNetworkId", SearchCriteria.Op.EQ, physicalNetworkId); + } return sc; } @@ -2772,7 +2781,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag // create new Virtual network for the user if it doesn't exist if (createNetwork) { List offerings = _configMgr.listNetworkOfferings(TrafficType.Guest, false); - network = createNetwork(offerings.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, zoneId, null, null, null, null, owner, false, null, null, false); + network = createNetwork(offerings.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, null, null, null, null, owner, false, null, null, false, null); if (network == null) { s_logger.warn("Failed to create default Virtual network for the account " + accountId + "in zone " + zoneId); @@ -3636,7 +3645,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (replaceVnet) { s_logger.debug("Deleting existing vnet range for the physicalNetwork id= "+id +" and zone id=" + network.getDataCenterId() + " as a part of updatePhysicalNetwork call"); - _dcDao.deleteVnet(network.getDataCenterId(), network.getId()); + _dcDao.deleteVnet(network.getId()); } for (Pair vnetToAdd : vnetsToAdd) { @@ -3648,7 +3657,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } private boolean physicalNetworkHasAllocatedVnets(long zoneId, long physicalNetworkId) { - return !_dcDao.listAllocatedVnets(zoneId, physicalNetworkId).isEmpty(); + return !_dcDao.listAllocatedVnets(physicalNetworkId).isEmpty(); } @Override @@ -3669,7 +3678,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return false; } - List allocatedVnets = _dcDao.listAllocatedVnets(network.getDataCenterId(), physicalNetworkId); + List allocatedVnets = _dcDao.listAllocatedVnets(physicalNetworkId); if(allocatedVnets != null && !allocatedVnets.isEmpty()){ s_logger.debug("Unable to remove the physical network id=" + physicalNetworkId + " as it has active vnets associated."); @@ -3909,4 +3918,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return getPhysicalNetworkServiceProvider(providerId); } + + @Override + public long translateZoneToPhysicalNetwork(long zoneId) { + List pNtwks = _physicalNetworkDao.listByZone(zoneId); + if (pNtwks.isEmpty()) { + throw new InvalidParameterValueException("Unable to find physical network in zone id=" + zoneId); + } + + if (pNtwks.size() > 1) { + throw new InvalidParameterValueException("More than one physical networks exist in zone id=" + zoneId); + } + + return pNtwks.get(0).getId(); + } + } diff --git a/server/src/com/cloud/network/NetworkVO.java b/server/src/com/cloud/network/NetworkVO.java index 875b9b5eb95..2af1f1a555e 100644 --- a/server/src/com/cloud/network/NetworkVO.java +++ b/server/src/com/cloud/network/NetworkVO.java @@ -66,6 +66,7 @@ public class NetworkVO implements Network { @Enumerated(value=EnumType.STRING) TrafficType trafficType; + @Deprecated @Column(name="guest_type") GuestIpType guestType; @@ -88,7 +89,7 @@ public class NetworkVO implements Network { long networkOfferingId; @Column(name="physical_network_id") - long physicalNetworkId; + Long physicalNetworkId; @Column(name="data_center_id") long dataCenterId; @@ -167,15 +168,17 @@ public class NetworkVO implements Network { * @param mode * @param broadcastDomainType * @param networkOfferingId - * @param dataCenterId * @param state TODO + * @param dataCenterId + * @param physicalNetworkId TODO */ - public NetworkVO(TrafficType trafficType, GuestIpType guestType, Mode mode, BroadcastDomainType broadcastDomainType, long networkOfferingId, long dataCenterId, State state) { + public NetworkVO(TrafficType trafficType, GuestIpType guestType, Mode mode, BroadcastDomainType broadcastDomainType, long networkOfferingId, State state, long dataCenterId, Long physicalNetworkId) { this.trafficType = trafficType; this.mode = mode; this.broadcastDomainType = broadcastDomainType; this.networkOfferingId = networkOfferingId; this.dataCenterId = dataCenterId; + this.physicalNetworkId = physicalNetworkId; if (state == null) { state = State.Allocated; } else { @@ -184,23 +187,9 @@ public class NetworkVO implements Network { this.id = -1; this.guestType = guestType; } - /** - * Constructor to be used for the adapters because it only initializes what's needed. - * @param trafficType - * @param mode - * @param broadcastDomainType - * @param networkOfferingId - * @param dataCenterId - * @param state TODO - * @param physicalNetworkId - */ - public NetworkVO(TrafficType trafficType, GuestIpType guestType, Mode mode, BroadcastDomainType broadcastDomainType, long networkOfferingId, long dataCenterId, State state, long physicalNetworkId) { - this(trafficType, guestType, mode, broadcastDomainType, networkOfferingId, dataCenterId, state); - this.physicalNetworkId = physicalNetworkId; - } - public NetworkVO(long id, Network that, long offeringId, long dataCenterId, String guruName, long domainId, long accountId, long related, String name, String displayText, boolean isDefault, boolean isSecurityGroupEnabled, boolean isDomainSpecific, String networkDomain, Type type, boolean isShared) { - this(id, that.getTrafficType(), that.getGuestType(), that.getMode(), that.getBroadcastDomainType(), offeringId, dataCenterId, domainId, accountId, related, name, displayText,isDefault, isDomainSpecific, networkDomain, type, isShared); + public NetworkVO(long id, Network that, long offeringId, String guruName, long domainId, long accountId, long related, String name, String displayText, boolean isDefault, boolean isSecurityGroupEnabled, boolean isDomainSpecific, String networkDomain, Type type, boolean isShared, long dcId, Long physicalNetworkId) { + this(id, that.getTrafficType(), that.getGuestType(), that.getMode(), that.getBroadcastDomainType(), offeringId, domainId, accountId, related, name, displayText,isDefault, isDomainSpecific, networkDomain, type, isShared, dcId, physicalNetworkId); this.gateway = that.getGateway(); this.cidr = that.getCidr(); this.broadcastUri = that.getBroadcastUri(); @@ -213,11 +202,6 @@ public class NetworkVO implements Network { } } - public NetworkVO(long id, Network that, long offeringId, long dataCenterId, String guruName, long domainId, long accountId, long related, String name, String displayText, boolean isDefault, boolean isSecurityGroupEnabled, boolean isDomainSpecific, String networkDomain, Type type, boolean isShared, long physicalNetworkId) { - this(id, that, offeringId, dataCenterId, guruName, domainId, accountId, related, name, displayText, isDefault, isSecurityGroupEnabled, isDomainSpecific, networkDomain, type, isShared); - this.physicalNetworkId = physicalNetworkId; - } - /** * Constructor for the actual DAO object. * @param trafficType @@ -236,8 +220,8 @@ public class NetworkVO implements Network { * @param isShared TODO * @param isShared */ - public NetworkVO(long id, TrafficType trafficType, GuestIpType guestType, Mode mode, BroadcastDomainType broadcastDomainType, long networkOfferingId, long dataCenterId, long domainId, long accountId, long related, String name, String displayText, boolean isDefault, boolean isDomainSpecific, String networkDomain, Type type, boolean isShared) { - this(trafficType, guestType, mode, broadcastDomainType, networkOfferingId, dataCenterId, State.Allocated); + public NetworkVO(long id, TrafficType trafficType, GuestIpType guestType, Mode mode, BroadcastDomainType broadcastDomainType, long networkOfferingId, long domainId, long accountId, long related, String name, String displayText, boolean isDefault, boolean isDomainSpecific, String networkDomain, Type type, boolean isShared, long dcId, Long physicalNetworkId) { + this(trafficType, guestType, mode, broadcastDomainType, networkOfferingId, State.Allocated, dcId, physicalNetworkId); this.domainId = domainId; this.accountId = accountId; this.related = related; @@ -404,7 +388,7 @@ public class NetworkVO implements Network { } @Override - public long getPhysicalNetworkId() { + public Long getPhysicalNetworkId() { return physicalNetworkId; } diff --git a/server/src/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/com/cloud/network/guru/ControlNetworkGuru.java index 32a3ba772db..6d40fe00016 100644 --- a/server/src/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ControlNetworkGuru.java @@ -77,7 +77,7 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu return null; } - NetworkVO config = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Static, BroadcastDomainType.LinkLocal, offering.getId(), plan.getDataCenterId(), Network.State.Setup); + NetworkVO config = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Static, BroadcastDomainType.LinkLocal, offering.getId(), Network.State.Setup, plan.getDataCenterId(), plan.getPhysicalNetworkId()); config.setCidr(_cidr); config.setGateway(_gateway); diff --git a/server/src/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/com/cloud/network/guru/DirectNetworkGuru.java index e6f31cdb5b1..72c5e6ba6a5 100644 --- a/server/src/com/cloud/network/guru/DirectNetworkGuru.java +++ b/server/src/com/cloud/network/guru/DirectNetworkGuru.java @@ -102,7 +102,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru { state = State.Setup; } - NetworkVO config = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Dhcp, BroadcastDomainType.Vlan, offering.getId(), plan.getDataCenterId(), state); + NetworkVO config = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Dhcp, BroadcastDomainType.Vlan, offering.getId(), state, plan.getDataCenterId(), plan.getPhysicalNetworkId()); if (userSpecified != null) { if ((userSpecified.getCidr() == null && userSpecified.getGateway() != null) || (userSpecified.getCidr() != null && userSpecified.getGateway() == null)) { diff --git a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java index c468666f1e9..2130c22f562 100644 --- a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -109,7 +109,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { DataCenter zone = dest.getDataCenter(); NetworkVO implemented = new NetworkVO(config.getTrafficType(), config.getGuestType(), config.getMode(), config.getBroadcastDomainType(), config.getNetworkOfferingId(), - config.getDataCenterId(), State.Allocated); + State.Allocated, config.getDataCenterId(), config.getPhysicalNetworkId()); // Get a vlan tag int vlanTag; diff --git a/server/src/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/com/cloud/network/guru/GuestNetworkGuru.java index 1bb13ffaacd..ad5fc13cd1b 100644 --- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java @@ -95,7 +95,7 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { return null; } - NetworkVO network = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Dhcp, BroadcastDomainType.Vlan, offering.getId(), plan.getDataCenterId(), State.Allocated); + NetworkVO network = new NetworkVO(offering.getTrafficType(), offering.getGuestType(), Mode.Dhcp, BroadcastDomainType.Vlan, offering.getId(), State.Allocated, plan.getDataCenterId(), plan.getPhysicalNetworkId()); if (userSpecified != null) { if ((userSpecified.getCidr() == null && userSpecified.getGateway() != null) || (userSpecified.getCidr() != null && userSpecified.getGateway() == null)) { throw new InvalidParameterValueException("cidr and gateway must be specified together."); @@ -141,7 +141,7 @@ public class GuestNetworkGuru extends AdapterBase implements NetworkGuru { long dcId = dest.getDataCenter().getId(); NetworkVO implemented = new NetworkVO(network.getTrafficType(), network.getGuestType(), network.getMode(), network.getBroadcastDomainType(), network.getNetworkOfferingId(), - network.getDataCenterId(), State.Allocated); + State.Allocated, network.getDataCenterId(), network.getPhysicalNetworkId()); if (network.getBroadcastUri() == null) { String vnet = _dcDao.allocateVnet(dcId, network.getPhysicalNetworkId(), network.getAccountId(), context.getReservationId()); diff --git a/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java b/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java index 7dbf6653009..c7505c1d969 100644 --- a/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PodBasedNetworkGuru.java @@ -69,7 +69,7 @@ public class PodBasedNetworkGuru extends AdapterBase implements NetworkGuru { return null; } - NetworkVO config = new NetworkVO(type, null, Mode.Static, BroadcastDomainType.Native, offering.getId(), plan.getDataCenterId(), Network.State.Setup); + NetworkVO config = new NetworkVO(type, null, Mode.Static, BroadcastDomainType.Native, offering.getId(), Network.State.Setup, plan.getDataCenterId(), plan.getPhysicalNetworkId()); return config; } diff --git a/server/src/com/cloud/network/guru/PublicNetworkGuru.java b/server/src/com/cloud/network/guru/PublicNetworkGuru.java index 150be147b98..0c175dee09a 100644 --- a/server/src/com/cloud/network/guru/PublicNetworkGuru.java +++ b/server/src/com/cloud/network/guru/PublicNetworkGuru.java @@ -94,7 +94,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru { } if (offering.getTrafficType() == TrafficType.Public) { - NetworkVO ntwk = new NetworkVO(offering.getTrafficType(), null, Mode.Static, BroadcastDomainType.Vlan, offering.getId(), plan.getDataCenterId(), State.Setup); + NetworkVO ntwk = new NetworkVO(offering.getTrafficType(), null, Mode.Static, BroadcastDomainType.Vlan, offering.getId(), State.Setup, plan.getDataCenterId(), plan.getPhysicalNetworkId()); return ntwk; } else { return null; diff --git a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java index 0fefd4de425..7efb0b1da92 100644 --- a/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java +++ b/server/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java @@ -476,7 +476,7 @@ public class ElasticLoadBalancerManagerImpl implements DataCenterDeployment plan = null; DomainRouterVO elbVm = null; - plan = new DataCenterDeployment(dcId, dest.getPod().getId(), null, null, null); + plan = new DataCenterDeployment(dcId, dest.getPod().getId(), null, null, null, null); if (elbVm == null) { long id = _routerDao.getNextInSequence(Long.class, "id"); diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index cd30210133b..311a1ced2b4 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1123,7 +1123,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian return router; } - DataCenterDeployment plan = new DataCenterDeployment(0, null, null, null, null); + DataCenterDeployment plan = new DataCenterDeployment(0, null, null, null, null, null); DomainRouterVO result = null; assert router.getIsRedundantRouter(); List routerList = _routerDao.findBy(router.getAccountId(), router.getDataCenterIdToDeployIn()); @@ -1236,7 +1236,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian // In Basic zone and Guest network we have to start domR per pod, not per network if (isPodBased) { routers = _routerDao.listByNetworkAndPodAndRole(guestNetwork.getId(), podId, Role.DHCP_USERDATA); - plan = new DataCenterDeployment(dcId, podId, null, null, null); + plan = new DataCenterDeployment(dcId, podId, null, null, null, null); } else { routers = _routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.DHCP_USERDATA); plan = new DataCenterDeployment(dcId); diff --git a/server/src/com/cloud/offerings/NetworkOfferingVO.java b/server/src/com/cloud/offerings/NetworkOfferingVO.java index ff6b75111f2..ae4ede64c55 100644 --- a/server/src/com/cloud/offerings/NetworkOfferingVO.java +++ b/server/src/com/cloud/offerings/NetworkOfferingVO.java @@ -82,6 +82,7 @@ public class NetworkOfferingVO implements NetworkOffering { @Enumerated(value=EnumType.STRING) Availability availability; + @Deprecated @Column(name="guest_type") GuestIpType guestType; diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 1bfbcd07017..15e02578067 100644 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -954,7 +954,7 @@ public class ConfigurationServerImpl implements ConfigurationServer { } if (broadcastDomainType != null) { - NetworkVO network = new NetworkVO(id, trafficType, null, mode, broadcastDomainType, networkOfferingId, zoneId, domainId, accountId, related, null, null, isNetworkDefault, false, networkDomain, Network.Type.Shared, true); + NetworkVO network = new NetworkVO(id, trafficType, null, mode, broadcastDomainType, networkOfferingId, domainId, accountId, related, null, null, isNetworkDefault, false, networkDomain, Network.Type.Shared, true, zoneId, null); network.setGuruName(guruNames.get(network.getTrafficType())); network.setDns1(zone.getDns1()); network.setDns2(zone.getDns2()); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 70bdca07858..59793e77eef 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1022,7 +1022,7 @@ public class ManagementServerImpl implements ManagementServer { VirtualMachineProfile vmProfile = new VirtualMachineProfileImpl(vm); - DataCenterDeployment plan = new DataCenterDeployment(srcHost.getDataCenterId(), srcHost.getPodId(), srcHost.getClusterId(), null, null); + DataCenterDeployment plan = new DataCenterDeployment(srcHost.getDataCenterId(), srcHost.getPodId(), srcHost.getClusterId(), null, null, null); ExcludeList excludes = new ExcludeList(); excludes.addHost(srcHostId); while (enHost.hasMoreElements()) { diff --git a/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java index 29c6647e726..2713fd82ddd 100755 --- a/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java +++ b/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java @@ -278,7 +278,7 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement avoid.addPool(pool.getId()); } - DataCenterDeployment plan = new DataCenterDeployment(dcId, podId, clusterId, null, null); + DataCenterDeployment plan = new DataCenterDeployment(dcId, podId, clusterId, null, null, null); return allocateToPool(dskCh, VMtemplate, plan, avoid, returnUpTo); } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 0da715ac0ff..7eef0305235 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -2177,8 +2177,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager if (virtualNetworks.isEmpty()) { s_logger.debug("Creating default Virtual network for account " + owner + " as a part of deployVM process"); - Network newNetwork = _networkMgr.createNetwork(defaultVirtualOffering.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, zone.getId(), - null, null, null, null, owner, false, null, null, false); + Network newNetwork = _networkMgr.createNetwork(defaultVirtualOffering.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, null, + null, null, null, owner, false, null, null, false, null); defaultNetwork = _networkDao.findById(newNetwork.getId()); } else if (virtualNetworks.size() > 1) { throw new InvalidParameterValueException("More than 1 default Virtaul networks are found for account " + owner + "; please specify networkIds"); @@ -2190,8 +2190,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager if (defaultNetworks.isEmpty()) { if (defaultVirtualOffering.get(0).getAvailability() == Availability.Optional) { s_logger.debug("Creating default Virtual network for account " + owner + " as a part of deployVM process"); - Network newNetwork = _networkMgr.createNetwork(defaultVirtualOffering.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, zone.getId(), - null, null, null, null, owner, false, null, null, false); + Network newNetwork = _networkMgr.createNetwork(defaultVirtualOffering.get(0).getId(), owner.getAccountName() + "-network", owner.getAccountName() + "-network", null, null, + null, null, null, owner, false, null, null, false, null); defaultNetwork = _networkDao.findById(newNetwork.getId()); } else { throw new InvalidParameterValueException("Unable to find default networks for account " + owner); @@ -2574,7 +2574,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager DataCenterDeployment plan = null; if (destinationHost != null) { s_logger.debug("Destination Host to deploy the VM is specified, specifying a deployment plan to deploy the VM"); - plan = new DataCenterDeployment(vm.getDataCenterIdToDeployIn(), destinationHost.getPodId(), destinationHost.getClusterId(), destinationHost.getId(), null); + plan = new DataCenterDeployment(vm.getDataCenterIdToDeployIn(), destinationHost.getPodId(), destinationHost.getClusterId(), destinationHost.getId(), null, null); } vm = _itMgr.start(vm, params, caller, owner, plan); @@ -3335,8 +3335,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager long networkOffering = oldNet.getNetworkOfferingId(); List virtualNetworks = _networkMgr.listNetworksForAccount(newAccount.getId(), zone.getId(), GuestIpType.Virtual, true); if (virtualNetworks.isEmpty()) { - Network newNetwork = _networkMgr.createNetwork(networkOffering, newAccount.getAccountName() + "-network", newAccount.getAccountName() + "-network", null, vm.getDataCenterIdToDeployIn(), - null, null, null, null, newAccount, false, null, null, false); + Network newNetwork = _networkMgr.createNetwork(networkOffering, newAccount.getAccountName() + "-network", newAccount.getAccountName() + "-network", null, null, + null, null, null, newAccount, false, null, null, false, null); defaultNetwork = _networkDao.findById(newNetwork.getId()); } else if (virtualNetworks.size() > 1) { throw new InvalidParameterValueException("More than 1 default Virtaul networks are found for account " + newAccount + "; please specify networkIds"); diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 87944f14db6..b42747555c0 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -607,7 +607,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene if (s_logger.isDebugEnabled()) { s_logger.debug("Trying to deploy VM, vm has dcId: "+vm.getDataCenterIdToDeployIn()+" and podId: "+vm.getPodIdToDeployIn() ); } - DataCenterDeployment plan = new DataCenterDeployment(vm.getDataCenterIdToDeployIn(), vm.getPodIdToDeployIn(), null, null, null); + DataCenterDeployment plan = new DataCenterDeployment(vm.getDataCenterIdToDeployIn(), vm.getPodIdToDeployIn(), null, null, null, null); if(planToDeploy != null && planToDeploy.getDataCenterId() != 0){ if (s_logger.isDebugEnabled()) { s_logger.debug("advanceStart: DeploymentPlan is provided, using dcId:"+planToDeploy.getDataCenterId() + ", podId: "+ planToDeploy.getPodId() @@ -670,9 +670,9 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene throw new ResourceUnavailableException("Root volume is ready in different cluster, Deployment plan provided cannot be satisfied, unable to create a deployment for " + vm, Cluster.class, clusterIdSpecified); } } - plan = new DataCenterDeployment(planToDeploy.getDataCenterId(), planToDeploy.getPodId(), planToDeploy.getClusterId(), planToDeploy.getHostId(), vol.getPoolId()); + plan = new DataCenterDeployment(planToDeploy.getDataCenterId(), planToDeploy.getPodId(), planToDeploy.getClusterId(), planToDeploy.getHostId(), vol.getPoolId(), null); }else{ - plan = new DataCenterDeployment(rootVolDcId, rootVolPodId, rootVolClusterId, null, vol.getPoolId()); + plan = new DataCenterDeployment(rootVolDcId, rootVolPodId, rootVolClusterId, null, vol.getPoolId(), null); if (s_logger.isDebugEnabled()) { s_logger.debug(vol + " is READY, changing deployment plan to use this pool's dcId: " + rootVolDcId + " , podId: " + rootVolPodId + " , and clusterId: " + rootVolClusterId); } @@ -1378,7 +1378,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager, Listene Host host = _hostDao.findById(hostId); - DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), null, null); + DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), null, null, null); ExcludeList excludes = new ExcludeList(); excludes.addHost(hostId); diff --git a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java index 691839d9903..5323aa5e181 100755 --- a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java +++ b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java @@ -77,7 +77,7 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use private static final int VM_DETAILS_BATCH_SIZE=100; private static final String VM_DETAILS = "select vm_instance.id, " + "account.id, account.account_name, account.type, domain.name, instance_group.id, instance_group.name," + - "data_center.id, data_center.name, data_center.is_security_group_enabled, host.id, host.name, " + + "data_center.id, data_center.name, host.id, host.name, " + "vm_template.id, vm_template.name, vm_template.display_text, iso.id, iso.name, " + "vm_template.enable_password, service_offering.id, disk_offering.name, storage_pool.id, storage_pool.pool_type, " + "service_offering.cpu, service_offering.speed, service_offering.ram_size, volumes.id, volumes.device_id, volumes.volume_type, security_group.id, security_group.name, " + @@ -482,9 +482,8 @@ public class UserVmDaoImpl extends GenericDaoBase implements Use } - boolean is_data_center_security_group_enabled = rs.getBoolean("data_center.is_security_group_enabled"); - //security_group.id, security_group.name, security_group.description, , data_center.is_security_group_enabled - if (is_data_center_security_group_enabled){ + Long securityGroupId = rs.getLong("security_group.id"); + if (securityGroupId != null && securityGroupId.longValue() != 0){ SecurityGroupData resp = userVmData.newSecurityGroupData(); resp.setId(rs.getLong("security_group.id")); resp.setName(rs.getString("security_group.name")); diff --git a/server/test/com/cloud/network/MockNetworkManagerImpl.java b/server/test/com/cloud/network/MockNetworkManagerImpl.java index a9127b6ab20..6db0ad752fc 100644 --- a/server/test/com/cloud/network/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/network/MockNetworkManagerImpl.java @@ -340,8 +340,8 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS } @Override - public Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, Long zoneId, String gateway, String cidr, String vlanId, String networkDomain, - Account owner, boolean isSecurityGroupEnabled, Long domainId, List tags, Boolean isShared) throws ConcurrentOperationException, InsufficientCapacityException { + public Network createNetwork(long networkOfferingId, String name, String displayText, Boolean isDefault, String gateway, String cidr, String vlanId, String networkDomain, Account owner, + boolean isSecurityGroupEnabled, Long domainId, List tags, Boolean isShared, PhysicalNetwork physicalNetwork) throws ConcurrentOperationException, InsufficientCapacityException { // TODO Auto-generated method stub return null; }