mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-6198: use List DS for storing NicProfiles as public network can have more than one nic
Conflicts: engine/api/src/com/cloud/vm/VirtualMachineManager.java engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java engine/orchestration/src/org/apache/cloudstack/engine/orchestration/CloudOrchestrator.java engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ServiceManagerImpl.java server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java server/test/com/cloud/vpc/MockNetworkManagerImpl.java services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
This commit is contained in:
parent
339c4f4c3f
commit
5a8d165afa
@ -18,6 +18,7 @@ package com.cloud.vm;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
@ -76,11 +77,11 @@ public interface VirtualMachineManager extends Manager {
|
||||
* @throws InsufficientCapacityException If there are insufficient capacity to deploy this vm.
|
||||
*/
|
||||
void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOffering serviceOffering, Pair<? extends DiskOffering, Long> rootDiskOffering,
|
||||
LinkedHashMap<? extends DiskOffering, Long> dataDiskOfferings, LinkedHashMap<? extends Network, ? extends NicProfile> auxiliaryNetworks, DeploymentPlan plan,
|
||||
LinkedHashMap<? extends DiskOffering, Long> dataDiskOfferings, LinkedHashMap<? extends Network, List<? extends NicProfile>> auxiliaryNetworks, DeploymentPlan plan,
|
||||
HypervisorType hyperType) throws InsufficientCapacityException;
|
||||
|
||||
void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOffering serviceOffering,
|
||||
LinkedHashMap<? extends Network, ? extends NicProfile> networkProfiles, DeploymentPlan plan, HypervisorType hyperType) throws InsufficientCapacityException;
|
||||
LinkedHashMap<? extends Network, List<? extends NicProfile>> networkProfiles, DeploymentPlan plan, HypervisorType hyperType) throws InsufficientCapacityException;
|
||||
|
||||
void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params);
|
||||
|
||||
|
||||
@ -77,7 +77,7 @@ public interface NetworkOrchestrationService {
|
||||
boolean errorIfAlreadySetup, Long domainId, ACLType aclType, Boolean subdomainAccess, Long vpcId, Boolean isDisplayNetworkEnabled)
|
||||
throws ConcurrentOperationException;
|
||||
|
||||
void allocate(VirtualMachineProfile vm, LinkedHashMap<? extends Network, ? extends NicProfile> networks) throws InsufficientCapacityException,
|
||||
void allocate(VirtualMachineProfile vm, LinkedHashMap<? extends Network, List<? extends NicProfile>> networks) throws InsufficientCapacityException,
|
||||
ConcurrentOperationException;
|
||||
|
||||
void prepare(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException,
|
||||
|
||||
@ -369,7 +369,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
@DB
|
||||
public void allocate(String vmInstanceName, final VirtualMachineTemplate template, ServiceOffering serviceOffering,
|
||||
final Pair<? extends DiskOffering, Long> rootDiskOffering, LinkedHashMap<? extends DiskOffering, Long> dataDiskOfferings,
|
||||
final LinkedHashMap<? extends Network, ? extends NicProfile> auxiliaryNetworks, DeploymentPlan plan, HypervisorType hyperType)
|
||||
final LinkedHashMap<? extends Network, List<? extends NicProfile>> auxiliaryNetworks, DeploymentPlan plan, HypervisorType hyperType)
|
||||
throws InsufficientCapacityException {
|
||||
|
||||
VMInstanceVO vm = _vmDao.findVMByInstanceName(vmInstanceName);
|
||||
@ -428,7 +428,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
|
||||
@Override
|
||||
public void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOffering serviceOffering,
|
||||
LinkedHashMap<? extends Network, ? extends NicProfile> networks, DeploymentPlan plan, HypervisorType hyperType) throws InsufficientCapacityException {
|
||||
LinkedHashMap<? extends Network, List<? extends NicProfile>> networks, DeploymentPlan plan, HypervisorType hyperType) throws InsufficientCapacityException {
|
||||
allocate(vmInstanceName, template, serviceOffering, new Pair<DiskOffering, Long>(serviceOffering, null), null, networks, plan, hyperType);
|
||||
}
|
||||
|
||||
|
||||
@ -20,14 +20,13 @@ package org.apache.cloudstack.engine.orchestration;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.NetworkEntity;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.TemplateEntity;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.VMEntityManager;
|
||||
@ -36,6 +35,7 @@ import org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntityImpl;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.VolumeEntity;
|
||||
import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
|
||||
import org.apache.cloudstack.engine.service.api.OrchestrationService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.deploy.DeploymentPlan;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
@ -157,11 +157,11 @@ public class CloudOrchestrator implements OrchestrationService {
|
||||
// VirtualMachineEntityImpl vmEntity = new VirtualMachineEntityImpl(id, owner, hostName, displayName, cpu, speed, memory, computeTags, rootDiskTags, networks,
|
||||
// vmEntityManager);
|
||||
|
||||
LinkedHashMap<NetworkVO, NicProfile> networkIpMap = new LinkedHashMap<NetworkVO, NicProfile>();
|
||||
LinkedHashMap<NetworkVO, List<? extends NicProfile>> networkIpMap = new LinkedHashMap<NetworkVO, List<? extends NicProfile>>();
|
||||
for (String uuid : networkNicMap.keySet()) {
|
||||
NetworkVO network = _networkDao.findByUuid(uuid);
|
||||
if (network != null) {
|
||||
networkIpMap.put(network, networkNicMap.get(uuid));
|
||||
if(network != null){
|
||||
networkIpMap.put(network, new ArrayList<NicProfile>(Arrays.asList(networkNicMap.get(uuid))));
|
||||
}
|
||||
}
|
||||
|
||||
@ -241,11 +241,11 @@ public class CloudOrchestrator implements OrchestrationService {
|
||||
rootDiskOffering.first(diskOffering);
|
||||
rootDiskOffering.second(size);
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networkIpMap = new LinkedHashMap<Network, NicProfile>();
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networkIpMap = new LinkedHashMap<Network, List<? extends NicProfile>>();
|
||||
for (String uuid : networkNicMap.keySet()) {
|
||||
NetworkVO network = _networkDao.findByUuid(uuid);
|
||||
if (network != null) {
|
||||
networkIpMap.put(network, networkNicMap.get(uuid));
|
||||
if(network != null){
|
||||
networkIpMap.put(network, new ArrayList<NicProfile>(Arrays.asList(networkNicMap.get(uuid))));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -685,67 +685,82 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
||||
|
||||
@Override
|
||||
@DB
|
||||
public void allocate(final VirtualMachineProfile vm, final LinkedHashMap<? extends Network, ? extends NicProfile> networks) throws InsufficientCapacityException,
|
||||
public void allocate(final VirtualMachineProfile vm, final LinkedHashMap<? extends Network, List<? extends NicProfile>> networks) throws InsufficientCapacityException,
|
||||
ConcurrentOperationException {
|
||||
|
||||
Transaction.execute(new TransactionCallbackWithExceptionNoReturn<InsufficientCapacityException>() {
|
||||
@Override
|
||||
public void doInTransactionWithoutResult(TransactionStatus status) throws InsufficientCapacityException {
|
||||
int deviceId = 0;
|
||||
|
||||
boolean[] deviceIds = new boolean[networks.size()];
|
||||
Arrays.fill(deviceIds, false);
|
||||
|
||||
List<NicProfile> nics = new ArrayList<NicProfile>(networks.size());
|
||||
NicProfile defaultNic = null;
|
||||
|
||||
for (Map.Entry<? extends Network, ? extends NicProfile> network : networks.entrySet()) {
|
||||
Network config = network.getKey();
|
||||
NicProfile requested = network.getValue();
|
||||
|
||||
Boolean isDefaultNic = false;
|
||||
if (vm != null && (requested != null && requested.isDefaultNic())) {
|
||||
isDefaultNic = true;
|
||||
int size = 0;
|
||||
for (Network ntwk : networks.keySet()) {
|
||||
List<? extends NicProfile> profiles = networks.get(ntwk);
|
||||
if (profiles != null && !profiles.isEmpty()) {
|
||||
size = size + profiles.size();
|
||||
} else {
|
||||
size = size + 1;
|
||||
}
|
||||
|
||||
while (deviceIds[deviceId] && deviceId < deviceIds.length) {
|
||||
deviceId++;
|
||||
}
|
||||
|
||||
Pair<NicProfile, Integer> vmNicPair = allocateNic(requested, config, isDefaultNic, deviceId, vm);
|
||||
|
||||
NicProfile vmNic = vmNicPair.first();
|
||||
if (vmNic == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
deviceId = vmNicPair.second();
|
||||
|
||||
int devId = vmNic.getDeviceId();
|
||||
if (devId > deviceIds.length) {
|
||||
throw new IllegalArgumentException("Device id for nic is too large: " + vmNic);
|
||||
}
|
||||
if (deviceIds[devId]) {
|
||||
throw new IllegalArgumentException("Conflicting device id for two different nics: " + vmNic);
|
||||
}
|
||||
|
||||
deviceIds[devId] = true;
|
||||
|
||||
if (vmNic.isDefaultNic()) {
|
||||
if (defaultNic != null) {
|
||||
throw new IllegalArgumentException("You cannot specify two nics as default nics: nic 1 = " + defaultNic + "; nic 2 = " + vmNic);
|
||||
}
|
||||
defaultNic = vmNic;
|
||||
}
|
||||
|
||||
nics.add(vmNic);
|
||||
vm.addNic(vmNic);
|
||||
|
||||
}
|
||||
|
||||
if (nics.size() != networks.size()) {
|
||||
s_logger.warn("Number of nics " + nics.size() + " doesn't match number of requested networks " + networks.size());
|
||||
throw new CloudRuntimeException("Number of nics " + nics.size() + " doesn't match number of requested networks " + networks.size());
|
||||
boolean[] deviceIds = new boolean[size];
|
||||
Arrays.fill(deviceIds, false);
|
||||
|
||||
List<NicProfile> nics = new ArrayList<NicProfile>(size);
|
||||
NicProfile defaultNic = null;
|
||||
|
||||
for (Map.Entry<? extends Network, List<? extends NicProfile>> network : networks.entrySet()) {
|
||||
Network config = network.getKey();
|
||||
List<? extends NicProfile> requestedProfiles = network.getValue();
|
||||
if (requestedProfiles == null) {
|
||||
requestedProfiles = new ArrayList<NicProfile>();
|
||||
}
|
||||
if (requestedProfiles.isEmpty()) {
|
||||
requestedProfiles.add(null);
|
||||
}
|
||||
|
||||
for (NicProfile requested : requestedProfiles) {
|
||||
Boolean isDefaultNic = false;
|
||||
if (vm != null && (requested != null && requested.isDefaultNic())) {
|
||||
isDefaultNic = true;
|
||||
}
|
||||
|
||||
while (deviceIds[deviceId] && deviceId < deviceIds.length) {
|
||||
deviceId++;
|
||||
}
|
||||
|
||||
Pair<NicProfile, Integer> vmNicPair = allocateNic(requested, config, isDefaultNic, deviceId, vm);
|
||||
|
||||
NicProfile vmNic = vmNicPair.first();
|
||||
if (vmNic == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
deviceId = vmNicPair.second();
|
||||
|
||||
int devId = vmNic.getDeviceId();
|
||||
if (devId > deviceIds.length) {
|
||||
throw new IllegalArgumentException("Device id for nic is too large: " + vmNic);
|
||||
}
|
||||
if (deviceIds[devId]) {
|
||||
throw new IllegalArgumentException("Conflicting device id for two different nics: " + vmNic);
|
||||
}
|
||||
|
||||
deviceIds[devId] = true;
|
||||
|
||||
if (vmNic.isDefaultNic()) {
|
||||
if (defaultNic != null) {
|
||||
throw new IllegalArgumentException("You cannot specify two nics as default nics: nic 1 = " + defaultNic + "; nic 2 = " + vmNic);
|
||||
}
|
||||
defaultNic = vmNic;
|
||||
}
|
||||
|
||||
nics.add(vmNic);
|
||||
vm.addNic(vmNic);
|
||||
}
|
||||
}
|
||||
if (nics.size() != size) {
|
||||
s_logger.warn("Number of nics " + nics.size() + " doesn't match number of requested nics " + size);
|
||||
throw new CloudRuntimeException("Number of nics " + nics.size() + " doesn't match number of requested networks " + size);
|
||||
}
|
||||
|
||||
if (nics.size() == 1) {
|
||||
@ -768,14 +783,14 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
||||
requested.setMode(network.getMode());
|
||||
}
|
||||
NicProfile profile = guru.allocate(network, requested, vm);
|
||||
if (isDefaultNic != null) {
|
||||
profile.setDefaultNic(isDefaultNic);
|
||||
}
|
||||
|
||||
if (profile == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isDefaultNic != null) {
|
||||
profile.setDefaultNic(isDefaultNic);
|
||||
}
|
||||
|
||||
if (requested != null && requested.getMode() == null) {
|
||||
profile.setMode(requested.getMode());
|
||||
} else {
|
||||
@ -2478,8 +2493,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
||||
if (dc.getNetworkType() == NetworkType.Basic) {
|
||||
List<NicVO> nics = _nicDao.listByVmId(vmInstance.getId());
|
||||
NetworkVO network = _networksDao.findById(nics.get(0).getNetworkId());
|
||||
final LinkedHashMap<Network, NicProfile> profiles = new LinkedHashMap<Network, NicProfile>();
|
||||
profiles.put(network, null);
|
||||
final LinkedHashMap<Network, List<? extends NicProfile>> profiles = new LinkedHashMap<Network, List<? extends NicProfile>>();
|
||||
profiles.put(network, new ArrayList<NicProfile>());
|
||||
|
||||
Transaction.execute(new TransactionCallbackWithExceptionNoReturn<InsufficientCapacityException>() {
|
||||
@Override
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
package com.cloud.network.lb;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
@ -252,11 +253,11 @@ public class LoadBalanceRuleHandler {
|
||||
NetworkOffering controlOffering = offerings.get(0);
|
||||
Network controlConfig = _networkMgr.setupNetwork(_systemAcct, controlOffering, plan, null, null, false).get(0);
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(2);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(2);
|
||||
NicProfile guestNic = new NicProfile();
|
||||
guestNic.setDefaultNic(true);
|
||||
networks.put(controlConfig, null);
|
||||
networks.put(guestNetwork, guestNic);
|
||||
networks.put(controlConfig, new ArrayList<NicProfile>());
|
||||
networks.put(guestNetwork, new ArrayList<NicProfile>(Arrays.asList(guestNic)));
|
||||
|
||||
VMTemplateVO template = _templateDao.findSystemVMTemplate(dcId);
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package org.apache.cloudstack.network.lb;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
@ -26,12 +27,11 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
|
||||
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -613,7 +613,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
||||
return internalLbVms;
|
||||
}
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networks = createInternalLbVmNetworks(guestNetwork, plan, requestedGuestIp);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = createInternalLbVmNetworks(guestNetwork, plan, requestedGuestIp);
|
||||
//Pass startVm=false as we are holding the network lock that needs to be released at the end of vm allocation
|
||||
DomainRouterVO internalLbVm =
|
||||
deployInternalLbVm(owner, dest, plan, params, internalLbProviderId, _internalLbVmOfferingId, guestNetwork.getVpcId(), networks, false);
|
||||
@ -649,11 +649,11 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
||||
return internalLbProvider.getId();
|
||||
}
|
||||
|
||||
protected LinkedHashMap<Network, NicProfile> createInternalLbVmNetworks(Network guestNetwork, DeploymentPlan plan, Ip guestIp) throws ConcurrentOperationException,
|
||||
InsufficientAddressCapacityException {
|
||||
protected LinkedHashMap<Network, List<? extends NicProfile>> createInternalLbVmNetworks(Network guestNetwork, DeploymentPlan plan, Ip guestIp) throws ConcurrentOperationException,
|
||||
InsufficientAddressCapacityException {
|
||||
|
||||
//Form networks
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(3);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(3);
|
||||
|
||||
//1) Guest network - default
|
||||
if (guestNetwork != null) {
|
||||
@ -672,7 +672,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
||||
String gatewayCidr = guestNetwork.getCidr();
|
||||
guestNic.setNetmask(NetUtils.getCidrNetmask(gatewayCidr));
|
||||
guestNic.setDefaultNic(true);
|
||||
networks.put(guestNetwork, guestNic);
|
||||
networks.put(guestNetwork, new ArrayList<NicProfile>(Arrays.asList(guestNic)));
|
||||
}
|
||||
|
||||
//2) Control network
|
||||
@ -680,7 +680,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
||||
List<? extends NetworkOffering> offerings = _ntwkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
|
||||
NetworkOffering controlOffering = offerings.get(0);
|
||||
Network controlConfig = _ntwkMgr.setupNetwork(_accountMgr.getSystemAccount(), controlOffering, plan, null, null, false).get(0);
|
||||
networks.put(controlConfig, null);
|
||||
networks.put(controlConfig, new ArrayList<NicProfile>());
|
||||
|
||||
return networks;
|
||||
}
|
||||
@ -711,7 +711,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
||||
}
|
||||
|
||||
protected DomainRouterVO deployInternalLbVm(Account owner, DeployDestination dest, DeploymentPlan plan, Map<Param, Object> params, long internalLbProviderId,
|
||||
long svcOffId, Long vpcId, LinkedHashMap<Network, NicProfile> networks, boolean startVm) throws ConcurrentOperationException,
|
||||
long svcOffId, Long vpcId, LinkedHashMap<Network, List<? extends NicProfile>> networks, boolean startVm) throws ConcurrentOperationException,
|
||||
InsufficientAddressCapacityException, InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException,
|
||||
ResourceUnavailableException {
|
||||
|
||||
|
||||
@ -18,8 +18,10 @@
|
||||
package org.apache.cloudstack.network.contrail.management;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
@ -33,7 +35,6 @@ import org.apache.cloudstack.network.contrail.api.response.ServiceInstanceRespon
|
||||
import org.apache.cloudstack.network.contrail.model.ServiceInstanceModel;
|
||||
import org.apache.cloudstack.network.contrail.model.VirtualMachineModel;
|
||||
import org.apache.cloudstack.network.contrail.model.VirtualNetworkModel;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.api.ApiDBUtils;
|
||||
@ -101,13 +102,12 @@ public class ServiceManagerImpl implements ServiceManager {
|
||||
long id = _vmDao.getNextInSequence(Long.class, "id");
|
||||
|
||||
DataCenterDeployment plan = new DataCenterDeployment(zone.getId());
|
||||
|
||||
LinkedHashMap<NetworkVO, NicProfile> networks = new LinkedHashMap<NetworkVO, NicProfile>();
|
||||
NetworkVO linklocal = (NetworkVO)_networkModel.getSystemNetworkByZoneAndTrafficType(zone.getId(), TrafficType.Management);
|
||||
networks.put(linklocal, null);
|
||||
networks.put((NetworkVO)left, null);
|
||||
networks.put((NetworkVO)right, null);
|
||||
|
||||
LinkedHashMap<NetworkVO, List<? extends NicProfile>> networks = new LinkedHashMap<NetworkVO, List<? extends NicProfile>>();
|
||||
NetworkVO linklocal = (NetworkVO) _networkModel.getSystemNetworkByZoneAndTrafficType(zone.getId(),
|
||||
TrafficType.Management);
|
||||
networks.put(linklocal, new ArrayList<NicProfile>());
|
||||
networks.put((NetworkVO)left, new ArrayList<NicProfile>());
|
||||
networks.put((NetworkVO)right, new ArrayList<NicProfile>());
|
||||
String instanceName = VirtualMachineName.getVmName(id, owner.getId(), "SRV");
|
||||
ServiceVirtualMachine svm =
|
||||
new ServiceVirtualMachine(id, instanceName, name, template.getId(), serviceOffering.getId(), template.getHypervisorType(), template.getGuestOSId(),
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.consoleproxy;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -703,16 +704,16 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
|
||||
List<? extends NetworkOffering> offerings =
|
||||
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork, NetworkOffering.SystemManagementNetwork);
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(offerings.size() + 1);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(offerings.size() + 1);
|
||||
NicProfile defaultNic = new NicProfile();
|
||||
defaultNic.setDefaultNic(true);
|
||||
defaultNic.setDeviceId(2);
|
||||
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, _networkOfferingDao.findById(defaultNetwork.getNetworkOfferingId()), plan, null, null, false).get(0),
|
||||
defaultNic);
|
||||
new ArrayList<NicProfile>(Arrays.asList(defaultNic)));
|
||||
|
||||
for (NetworkOffering offering : offerings) {
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, offering, plan, null, null, false).get(0), null);
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, offering, plan, null, null, false).get(0), new ArrayList<NicProfile>());
|
||||
}
|
||||
|
||||
ConsoleProxyVO proxy =
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
package com.cloud.network.router;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
@ -41,8 +42,6 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.api.command.admin.router.RebootRouterCmd;
|
||||
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
|
||||
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterTemplateCmd;
|
||||
@ -57,6 +56,7 @@ import org.apache.cloudstack.framework.jobs.AsyncJobManager;
|
||||
import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
|
||||
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
|
||||
import org.apache.cloudstack.utils.identity.ManagementServerNode;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.Listener;
|
||||
@ -1569,10 +1569,10 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
final int count = routerCount - routers.size();
|
||||
final DeploymentPlan plan = planAndRouters.first();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final LinkedHashMap<Network, NicProfile> networks =
|
||||
createRouterNetworks(owner, isRedundant, plan, guestNetwork, new Pair<Boolean, PublicIp>(publicNetwork, sourceNatIp));
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = createRouterNetworks(owner, isRedundant, plan, guestNetwork, new Pair<Boolean, PublicIp>(
|
||||
publicNetwork, sourceNatIp));
|
||||
//don't start the router as we are holding the network lock that needs to be released at the end of router allocation
|
||||
final DomainRouterVO router = deployRouter(owner, destination, plan, params, isRedundant, vrProvider, offeringId, null, networks, false, null);
|
||||
DomainRouterVO router = deployRouter(owner, destination, plan, params, isRedundant, vrProvider, offeringId, null, networks, false, null);
|
||||
|
||||
if (router != null) {
|
||||
_routerDao.addRouterToGuestNetwork(router, guestNetwork);
|
||||
@ -1610,7 +1610,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
}
|
||||
|
||||
protected DomainRouterVO deployRouter(final Account owner, final DeployDestination dest, final DeploymentPlan plan, final Map<Param, Object> params, final boolean isRedundant,
|
||||
final VirtualRouterProvider vrProvider, final long svcOffId, final Long vpcId, final LinkedHashMap<Network, NicProfile> networks, final boolean startRouter,
|
||||
final VirtualRouterProvider vrProvider, final long svcOffId, final Long vpcId, final LinkedHashMap<Network, List<? extends NicProfile>> networks, final boolean startRouter,
|
||||
final List<HypervisorType> supportedHypervisors) throws ConcurrentOperationException, InsufficientAddressCapacityException, InsufficientServerCapacityException,
|
||||
InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException {
|
||||
|
||||
@ -1750,7 +1750,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
return hypervisors;
|
||||
}
|
||||
|
||||
protected LinkedHashMap<Network, NicProfile> createRouterNetworks(final Account owner, final boolean isRedundant, final DeploymentPlan plan, final Network guestNetwork,
|
||||
protected LinkedHashMap<Network, List<? extends NicProfile>> createRouterNetworks(final Account owner, final boolean isRedundant, final DeploymentPlan plan, final Network guestNetwork,
|
||||
final Pair<Boolean, PublicIp> publicNetwork) throws ConcurrentOperationException, InsufficientAddressCapacityException {
|
||||
|
||||
boolean setupPublicNetwork = false;
|
||||
@ -1759,8 +1759,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
}
|
||||
|
||||
//Form networks
|
||||
final LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(3);
|
||||
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(3);
|
||||
//1) Guest network
|
||||
boolean hasGuestNetwork = false;
|
||||
if (guestNetwork != null) {
|
||||
@ -1816,17 +1815,16 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
gatewayNic.setDefaultNic(true);
|
||||
}
|
||||
|
||||
networks.put(guestNetwork, gatewayNic);
|
||||
networks.put(guestNetwork, new ArrayList<NicProfile>(Arrays.asList(gatewayNic)));
|
||||
hasGuestNetwork = true;
|
||||
}
|
||||
|
||||
//2) Control network
|
||||
s_logger.debug("Adding nic for Virtual Router in Control network ");
|
||||
final List<? extends NetworkOffering> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
|
||||
final NetworkOffering controlOffering = offerings.get(0);
|
||||
final Network controlConfig = _networkMgr.setupNetwork(_systemAcct, controlOffering, plan, null, null, false).get(0);
|
||||
networks.put(controlConfig, null);
|
||||
|
||||
List<? extends NetworkOffering> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
|
||||
NetworkOffering controlOffering = offerings.get(0);
|
||||
Network controlConfig = _networkMgr.setupNetwork(_systemAcct, controlOffering, plan, null, null, false).get(0);
|
||||
networks.put(controlConfig, new ArrayList<NicProfile>());
|
||||
//3) Public network
|
||||
if (setupPublicNetwork) {
|
||||
final PublicIp sourceNatIp = publicNetwork.second();
|
||||
@ -1861,7 +1859,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
s_logger.info("Use same MAC as previous RvR, the MAC is " + peerNic.getMacAddress());
|
||||
defaultNic.setMacAddress(peerNic.getMacAddress());
|
||||
}
|
||||
networks.put(publicNetworks.get(0), defaultNic);
|
||||
networks.put(publicNetworks.get(0), new ArrayList<NicProfile>(Arrays.asList(defaultNic)));
|
||||
}
|
||||
|
||||
return networks;
|
||||
|
||||
@ -16,6 +16,24 @@
|
||||
// under the License.
|
||||
package com.cloud.network.router;
|
||||
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.NetworkUsageCommand;
|
||||
@ -109,20 +127,6 @@ import com.cloud.vm.VirtualMachine.State;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.VirtualMachineProfile.Param;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
|
||||
@Component
|
||||
@Local(value = {VpcVirtualNetworkApplianceManager.class, VpcVirtualNetworkApplianceService.class})
|
||||
@ -318,7 +322,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
VirtualRouterProvider vrProvider, long svcOffId, Long vpcId, PublicIp sourceNatIp) throws ConcurrentOperationException, InsufficientAddressCapacityException,
|
||||
InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException {
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networks = createVpcRouterNetworks(owner, isRedundant, plan, new Pair<Boolean, PublicIp>(true, sourceNatIp), vpcId);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = createVpcRouterNetworks(owner, isRedundant, plan, new Pair<Boolean, PublicIp>(true, sourceNatIp),vpcId);
|
||||
DomainRouterVO router =
|
||||
super.deployRouter(owner, dest, plan, params, isRedundant, vrProvider, svcOffId, vpcId, networks, true, _vpcMgr.getSupportedVpcHypervisors());
|
||||
|
||||
@ -1150,10 +1154,10 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
}
|
||||
}
|
||||
|
||||
protected LinkedHashMap<Network, NicProfile> createVpcRouterNetworks(Account owner, boolean isRedundant, DeploymentPlan plan, Pair<Boolean, PublicIp> sourceNatIp,
|
||||
protected LinkedHashMap<Network, List<? extends NicProfile>> createVpcRouterNetworks(Account owner, boolean isRedundant, DeploymentPlan plan, Pair<Boolean, PublicIp> sourceNatIp,
|
||||
long vpcId) throws ConcurrentOperationException, InsufficientAddressCapacityException {
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(4);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(4);
|
||||
|
||||
TreeSet<String> publicVlans = new TreeSet<String>();
|
||||
publicVlans.add(sourceNatIp.second().getVlanTag());
|
||||
@ -1167,7 +1171,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
for (PrivateGateway privateGateway : privateGateways) {
|
||||
NicProfile privateNic = createPrivateNicProfileForGateway(privateGateway);
|
||||
Network privateNetwork = _networkModel.getNetwork(privateGateway.getNetworkId());
|
||||
networks.put(privateNetwork, privateNic);
|
||||
networks.put(privateNetwork, new ArrayList<NicProfile>(Arrays.asList(privateNic)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1176,12 +1180,14 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
for (Network guestNetwork : guestNetworks) {
|
||||
if (guestNetwork.getState() == Network.State.Implemented) {
|
||||
NicProfile guestNic = createGuestNicProfileForVpcRouter(guestNetwork);
|
||||
networks.put(guestNetwork, guestNic);
|
||||
networks.put(guestNetwork, new ArrayList<NicProfile>(Arrays.asList(guestNic)));
|
||||
}
|
||||
}
|
||||
|
||||
//4) allocate nic for additional public network(s)
|
||||
List<IPAddressVO> ips = _ipAddressDao.listByAssociatedVpc(vpcId, false);
|
||||
List<NicProfile> publicNics = new ArrayList<NicProfile>();
|
||||
Network publicNetwork = null;
|
||||
for (IPAddressVO ip : ips) {
|
||||
PublicIp publicIp = PublicIp.createFromAddrAndVlan(ip, _vlanDao.findById(ip.getVlanId()));
|
||||
if ((ip.getState() == IpAddress.State.Allocated || ip.getState() == IpAddress.State.Allocating) && _vpcMgr.isIpAllocatedToVpc(ip) &&
|
||||
@ -1197,11 +1203,23 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
publicNic.setBroadcastUri(BroadcastDomainType.Vlan.toUri(publicIp.getVlanTag()));
|
||||
publicNic.setIsolationUri(IsolationType.Vlan.toUri(publicIp.getVlanTag()));
|
||||
NetworkOffering publicOffering = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
|
||||
List<? extends Network> publicNetworks = _networkMgr.setupNetwork(_systemAcct, publicOffering, plan, null, null, false);
|
||||
networks.put(publicNetworks.get(0), publicNic);
|
||||
if (publicNetwork == null) {
|
||||
List<? extends Network> publicNetworks = _networkMgr.setupNetwork(_systemAcct, publicOffering, plan, null, null, false);
|
||||
publicNetwork = publicNetworks.get(0);
|
||||
}
|
||||
publicNics.add(publicNic);
|
||||
publicVlans.add(publicIp.getVlanTag());
|
||||
}
|
||||
}
|
||||
if (publicNetwork != null) {
|
||||
if (networks.get(publicNetwork) != null) {
|
||||
List<NicProfile> publicNicProfiles = (List<NicProfile>)networks.get(publicNetwork);
|
||||
publicNicProfiles.addAll(publicNics);
|
||||
networks.put(publicNetwork, publicNicProfiles);
|
||||
} else {
|
||||
networks.put(publicNetwork, publicNics);
|
||||
}
|
||||
}
|
||||
|
||||
return networks;
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
package com.cloud.vm;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@ -4464,10 +4465,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
||||
}
|
||||
}
|
||||
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>();
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>();
|
||||
NicProfile profile = new NicProfile();
|
||||
profile.setDefaultNic(true);
|
||||
networks.put(networkList.get(0), profile);
|
||||
networks.put(networkList.get(0), new ArrayList<NicProfile>(Arrays.asList(profile)));
|
||||
|
||||
VirtualMachine vmi = _itMgr.findById(vm.getId());
|
||||
VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vmi);
|
||||
@ -4571,7 +4572,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
||||
}
|
||||
|
||||
// add the new nics
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>();
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>();
|
||||
int toggle = 0;
|
||||
for (NetworkVO appNet : applicableNetworks) {
|
||||
NicProfile defaultNic = new NicProfile();
|
||||
@ -4579,7 +4580,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
||||
defaultNic.setDefaultNic(true);
|
||||
toggle++;
|
||||
}
|
||||
networks.put(appNet, defaultNic);
|
||||
networks.put(appNet, new ArrayList<NicProfile>(Arrays.asList(defaultNic)));
|
||||
}
|
||||
VirtualMachine vmi = _itMgr.findById(vm.getId());
|
||||
VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vmi);
|
||||
|
||||
@ -521,10 +521,9 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
|
||||
* @see com.cloud.network.NetworkManager#allocate(com.cloud.vm.VirtualMachineProfile, java.util.List)
|
||||
*/
|
||||
@Override
|
||||
public void allocate(VirtualMachineProfile vm, LinkedHashMap<? extends Network, ? extends NicProfile> networks) throws InsufficientCapacityException,
|
||||
ConcurrentOperationException {
|
||||
public void allocate(VirtualMachineProfile vm, LinkedHashMap<? extends Network, List<? extends NicProfile>> networks)
|
||||
throws InsufficientCapacityException, ConcurrentOperationException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@ -19,6 +19,7 @@ package org.apache.cloudstack.secondarystorage;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -30,8 +31,6 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.config.ApiServiceConfiguration;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
@ -44,6 +43,7 @@ import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.utils.identity.ManagementServerNode;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -547,15 +547,15 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
List<? extends NetworkOffering> offerings =
|
||||
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork, NetworkOffering.SystemManagementNetwork,
|
||||
NetworkOffering.SystemStorageNetwork);
|
||||
LinkedHashMap<Network, NicProfile> networks = new LinkedHashMap<Network, NicProfile>(offerings.size() + 1);
|
||||
LinkedHashMap<Network, List<? extends NicProfile>> networks = new LinkedHashMap<Network, List<? extends NicProfile>>(offerings.size() + 1);
|
||||
NicProfile defaultNic = new NicProfile();
|
||||
defaultNic.setDefaultNic(true);
|
||||
defaultNic.setDeviceId(2);
|
||||
try {
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, _networkOfferingDao.findById(defaultNetwork.getNetworkOfferingId()), plan, null, null, false).get(0),
|
||||
defaultNic);
|
||||
new ArrayList<NicProfile>(Arrays.asList(defaultNic)));
|
||||
for (NetworkOffering offering : offerings) {
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, offering, plan, null, null, false).get(0), null);
|
||||
networks.put(_networkMgr.setupNetwork(systemAcct, offering, plan, null, null, false).get(0), new ArrayList<NicProfile>());
|
||||
}
|
||||
} catch (ConcurrentOperationException e) {
|
||||
s_logger.info("Unable to setup due to concurrent operation. " + e);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user