mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Removed the plug and unplug method from VMGuru. Why should VMGuru understand how to plug and unplug nics? Part of componentizing the vmsync work
This commit is contained in:
parent
e52cde5878
commit
17984a3f8c
@ -33,10 +33,11 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -46,8 +47,6 @@ import com.cloud.agent.api.check.CheckSshCommand;
|
||||
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
|
||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.configuration.Config;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
@ -985,21 +984,6 @@ ElasticLoadBalancerManager, VirtualMachineGuru<DomainRouterVO> {
|
||||
return VirtualMachineName.getSystemVmId(vmName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<DomainRouterVO> profile) {
|
||||
}
|
||||
|
||||
@ -25,11 +25,12 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
|
||||
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
|
||||
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -41,8 +42,6 @@ import com.cloud.agent.api.check.CheckSshCommand;
|
||||
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
|
||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.configuration.Config;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
@ -366,19 +365,6 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
|
||||
return VirtualMachineName.getRouterId(vmName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<DomainRouterVO> profile) {
|
||||
}
|
||||
@ -568,7 +554,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
|
||||
protected VirtualRouter stopInternalLbVm(DomainRouterVO internalLbVm, boolean forced, Account caller, long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException {
|
||||
s_logger.debug("Stopping internal lb vm " + internalLbVm);
|
||||
try {
|
||||
if (_itMgr.advanceStop((DomainRouterVO) internalLbVm, forced, _accountMgr.getActiveUser(callerUserId), caller)) {
|
||||
if (_itMgr.advanceStop(internalLbVm, forced, _accountMgr.getActiveUser(callerUserId), caller)) {
|
||||
return _internalLbVmDao.findById(internalLbVm.getId());
|
||||
} else {
|
||||
return null;
|
||||
|
||||
@ -28,11 +28,15 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -44,8 +48,6 @@ import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.check.CheckSshAnswer;
|
||||
import com.cloud.agent.api.check.CheckSshCommand;
|
||||
import com.cloud.agent.api.proxy.ConsoleProxyLoadAnswer;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.certificate.dao.CertificateDao;
|
||||
import com.cloud.cluster.ClusterManager;
|
||||
@ -79,7 +81,6 @@ import com.cloud.info.RunningHostInfoAgregator.ZoneHostInfo;
|
||||
import com.cloud.keystore.KeystoreDao;
|
||||
import com.cloud.keystore.KeystoreManager;
|
||||
import com.cloud.keystore.KeystoreVO;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
@ -139,8 +140,6 @@ import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.dao.ConsoleProxyDao;
|
||||
import com.cloud.vm.dao.UserVmDetailsDao;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
//
|
||||
// Possible console proxy state transition cases
|
||||
@ -809,7 +808,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
return;
|
||||
}
|
||||
|
||||
final ConsoleProxyVO proxy = this._consoleProxyDao.findById(proxyVmId);
|
||||
final ConsoleProxyVO proxy = _consoleProxyDao.findById(proxyVmId);
|
||||
if (proxy != null) {
|
||||
|
||||
// Disable this feature for now, as it conflicts with
|
||||
@ -938,7 +937,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
ZoneHostInfo zoneHostInfo = zoneHostInfoMap.get(dataCenterId);
|
||||
if (zoneHostInfo != null && isZoneHostReady(zoneHostInfo)) {
|
||||
VMTemplateVO template = _templateDao.findSystemVMTemplate(dataCenterId);
|
||||
TemplateDataStoreVO templateHostRef = this._vmTemplateStoreDao.findByTemplateZoneDownloadStatus(template.getId(), dataCenterId,
|
||||
TemplateDataStoreVO templateHostRef = _vmTemplateStoreDao.findByTemplateZoneDownloadStatus(template.getId(), dataCenterId,
|
||||
Status.DOWNLOADED);
|
||||
|
||||
if (templateHostRef != null) {
|
||||
@ -1003,7 +1002,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
s_logger.info("Stop console proxy manager");
|
||||
}
|
||||
|
||||
this._loadScanner.stop();
|
||||
_loadScanner.stop();
|
||||
_allocProxyLock.releaseRef();
|
||||
_resourceMgr.unregisterResourceStateAdapter(this.getClass().getSimpleName());
|
||||
return true;
|
||||
@ -1561,14 +1560,14 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
List<ConsoleProxyVO> runningProxies = _consoleProxyDao.getProxyListInStates(State.Running);
|
||||
for (ConsoleProxyVO proxy : runningProxies) {
|
||||
s_logger.info("Stop console proxy " + proxy.getId() + " because of we are currently in ResetSuspending management mode");
|
||||
this.stopProxy(proxy.getId());
|
||||
stopProxy(proxy.getId());
|
||||
}
|
||||
|
||||
// check if it is time to resume
|
||||
List<ConsoleProxyVO> proxiesInTransition = _consoleProxyDao.getProxyListInStates(State.Running, State.Starting, State.Stopping);
|
||||
if (proxiesInTransition.size() == 0) {
|
||||
s_logger.info("All previous console proxy VMs in transition mode ceased the mode, we will now resume to last management state");
|
||||
this.resumeLastManagementState();
|
||||
resumeLastManagementState();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1637,12 +1636,12 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
public Pair<AfterScanAction, Object> scanPool(Long pool) {
|
||||
long dataCenterId = pool.longValue();
|
||||
|
||||
ConsoleProxyLoadInfo proxyInfo = this._zoneProxyCountMap.get(dataCenterId);
|
||||
ConsoleProxyLoadInfo proxyInfo = _zoneProxyCountMap.get(dataCenterId);
|
||||
if (proxyInfo == null) {
|
||||
return new Pair<AfterScanAction, Object>(AfterScanAction.nop, null);
|
||||
}
|
||||
|
||||
ConsoleProxyLoadInfo vmInfo = this._zoneVmCountMap.get(dataCenterId);
|
||||
ConsoleProxyLoadInfo vmInfo = _zoneVmCountMap.get(dataCenterId);
|
||||
if (vmInfo == null) {
|
||||
vmInfo = new ConsoleProxyLoadInfo();
|
||||
}
|
||||
@ -1702,22 +1701,6 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
||||
return sc.find();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<ConsoleProxyVO> profile) {
|
||||
}
|
||||
|
||||
@ -17,6 +17,34 @@
|
||||
|
||||
package com.cloud.network.router;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.Listener;
|
||||
@ -59,10 +87,8 @@ import com.cloud.agent.api.to.DnsmasqTO;
|
||||
import com.cloud.agent.api.to.FirewallRuleTO;
|
||||
import com.cloud.agent.api.to.IpAddressTO;
|
||||
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.PortForwardingRuleTO;
|
||||
import com.cloud.agent.api.to.StaticNatRuleTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.alert.AlertManager;
|
||||
import com.cloud.cluster.ManagementServerHostVO;
|
||||
@ -168,10 +194,8 @@ import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.resource.ResourceManager;
|
||||
import com.cloud.server.ConfigurationServer;
|
||||
import com.cloud.server.ManagementServer;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.storage.GuestOSVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.Volume.Type;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
@ -229,31 +253,6 @@ import com.cloud.vm.dao.NicIpAliasVO;
|
||||
import com.cloud.vm.dao.UserVmDao;
|
||||
import com.cloud.vm.dao.UserVmDetailsDao;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TimeZone;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* VirtualNetworkApplianceManagerImpl manages the different types of virtual network appliances available in the Cloud Stack.
|
||||
@ -371,7 +370,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
int _rvrStatusUpdatePoolSize = 10;
|
||||
protected ServiceOfferingVO _offering;
|
||||
private String _dnsBasicZoneUpdates = "all";
|
||||
private Set<String> _guestOSNeedGatewayOnNonDefaultNetwork = new HashSet<String>();
|
||||
private final Set<String> _guestOSNeedGatewayOnNonDefaultNetwork = new HashSet<String>();
|
||||
|
||||
private boolean _disable_rp_filter = false;
|
||||
int _routerExtraPublicNics = 2;
|
||||
@ -3973,21 +3972,6 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<DomainRouterVO> profile){
|
||||
//Collect network usage before stopping Vm
|
||||
|
||||
@ -33,13 +33,10 @@ import org.springframework.stereotype.Component;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.NetworkUsageCommand;
|
||||
import com.cloud.agent.api.PlugNicAnswer;
|
||||
import com.cloud.agent.api.PlugNicCommand;
|
||||
import com.cloud.agent.api.SetupGuestNetworkAnswer;
|
||||
import com.cloud.agent.api.SetupGuestNetworkCommand;
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicCommand;
|
||||
import com.cloud.agent.api.routing.DnsMasqConfigCommand;
|
||||
import com.cloud.agent.api.routing.IpAssocVpcCommand;
|
||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||
@ -51,19 +48,16 @@ import com.cloud.agent.api.to.DnsmasqTO;
|
||||
import com.cloud.agent.api.to.IpAddressTO;
|
||||
import com.cloud.agent.api.to.NetworkACLTO;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.dc.DataCenter;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.deploy.DataCenterDeployment;
|
||||
import com.cloud.deploy.DeployDestination;
|
||||
import com.cloud.deploy.DeploymentPlan;
|
||||
import com.cloud.exception.AgentUnavailableException;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.InsufficientServerCapacityException;
|
||||
import com.cloud.exception.OperationTimedoutException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.exception.StorageUnavailableException;
|
||||
import com.cloud.network.IpAddress;
|
||||
@ -339,75 +333,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
return router;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
boolean result = true;
|
||||
|
||||
DomainRouterVO router = _routerDao.findById(vm.getId());
|
||||
if (router.getState() == State.Running) {
|
||||
try {
|
||||
PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName(), vm.getType());
|
||||
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("plugnic", plugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
PlugNicAnswer plugNicAnswer = cmds.getAnswer(PlugNicAnswer.class);
|
||||
if (!(plugNicAnswer != null && plugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to plug nic for vm " + vm.getName());
|
||||
result = false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to plug nic for router " + vm.getName() + " in network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
}
|
||||
} else {
|
||||
s_logger.warn("Unable to apply PlugNic, vm " + router + " is not in the right state " + router.getState());
|
||||
|
||||
throw new ResourceUnavailableException("Unable to apply PlugNic on the backend," +
|
||||
" vm " + vm + " is not in the right state", DataCenter.class, router.getDataCenterId());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
|
||||
boolean result = true;
|
||||
DomainRouterVO router = _routerDao.findById(vm.getId());
|
||||
|
||||
if (router.getState() == State.Running) {
|
||||
try {
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(nic, vm.getName());
|
||||
cmds.addCommand("unplugnic", unplugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
|
||||
UnPlugNicAnswer unplugNicAnswer = cmds.getAnswer(UnPlugNicAnswer.class);
|
||||
if (!(unplugNicAnswer != null && unplugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to unplug nic from router " + router);
|
||||
result = false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to unplug nic from rotuer " + router + " from network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
}
|
||||
} else if (router.getState() == State.Stopped || router.getState() == State.Stopping) {
|
||||
s_logger.debug("Vm " + router.getInstanceName() + " is in " + router.getState() +
|
||||
", so not sending unplug nic command to the backend");
|
||||
} else {
|
||||
s_logger.warn("Unable to apply unplug nic, Vm " + router + " is not in the right state " + router.getState());
|
||||
|
||||
throw new ResourceUnavailableException("Unable to apply unplug nic on the backend," +
|
||||
" vm " + router +" is not in the right state", DataCenter.class, router.getDataCenterId());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
protected boolean setupVpcGuestNetwork(Network network, VirtualRouter router, boolean add, NicProfile guestNic)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException{
|
||||
|
||||
|
||||
@ -29,12 +29,13 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
|
||||
import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -51,8 +52,6 @@ import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.check.CheckSshAnswer;
|
||||
import com.cloud.agent.api.check.CheckSshCommand;
|
||||
import com.cloud.agent.api.to.NfsTO;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.capacity.dao.CapacityDao;
|
||||
import com.cloud.cluster.ClusterManager;
|
||||
@ -79,7 +78,6 @@ import com.cloud.info.RunningHostCountInfo;
|
||||
import com.cloud.info.RunningHostInfoAgregator;
|
||||
import com.cloud.info.RunningHostInfoAgregator.ZoneHostInfo;
|
||||
import com.cloud.keystore.KeystoreManager;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.NetworkManager;
|
||||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
@ -116,7 +114,6 @@ import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
import com.cloud.utils.db.GlobalLock;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.SearchCriteria2;
|
||||
import com.cloud.utils.db.SearchCriteriaService;
|
||||
import com.cloud.utils.events.SubscriptionMgr;
|
||||
@ -297,7 +294,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
return false;
|
||||
}
|
||||
|
||||
List<DataStore> ssStores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(zoneId));
|
||||
List<DataStore> ssStores = _dataStoreMgr.getImageStoresByScope(new ZoneScope(zoneId));
|
||||
for( DataStore ssStore : ssStores ) {
|
||||
if (!(ssStore.getTO() instanceof NfsTO ))
|
||||
continue; // only do this for Nfs
|
||||
@ -315,7 +312,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
SecStorageSetupAnswer an = (SecStorageSetupAnswer) answer;
|
||||
if (an.get_dir() != null){
|
||||
// update the parent path in image_store table for this image store
|
||||
ImageStoreVO svo = this._imageStoreDao.findById(ssStore.getId());
|
||||
ImageStoreVO svo = _imageStoreDao.findById(ssStore.getId());
|
||||
svo.setParent(an.get_dir());
|
||||
_imageStoreDao.update(ssStore.getId(), svo);
|
||||
}
|
||||
@ -517,7 +514,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
}
|
||||
|
||||
protected Map<String, Object> createSecStorageVmInstance(long dataCenterId, SecondaryStorageVm.Role role) {
|
||||
DataStore secStore = this._dataStoreMgr.getImageStore(dataCenterId);
|
||||
DataStore secStore = _dataStoreMgr.getImageStore(dataCenterId);
|
||||
if (secStore == null) {
|
||||
String msg = "No secondary storage available in zone " + dataCenterId + ", cannot create secondary storage vm";
|
||||
s_logger.warn(msg);
|
||||
@ -726,7 +723,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
return false;
|
||||
}
|
||||
|
||||
List<DataStore> stores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
|
||||
List<DataStore> stores = _dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
|
||||
if (stores.size() < 1) {
|
||||
s_logger.debug("No image store added in zone " + dataCenterId + ", wait until it is ready to launch secondary storage vm");
|
||||
return false;
|
||||
@ -1038,7 +1035,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
Map<String, String> details = _vmDetailsDao.findDetails(vm.getId());
|
||||
vm.setDetails(details);
|
||||
|
||||
DataStore secStore = this._dataStoreMgr.getImageStore(dest.getDataCenter().getId());
|
||||
DataStore secStore = _dataStoreMgr.getImageStore(dest.getDataCenter().getId());
|
||||
assert (secStore != null);
|
||||
|
||||
StringBuilder buf = profile.getBootArgsBuilder();
|
||||
@ -1281,7 +1278,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
List<SecondaryStorageVmVO> ssVms = _secStorageVmDao.getSecStorageVmListInStates(SecondaryStorageVm.Role.templateProcessor, dataCenterId, State.Running, State.Migrating,
|
||||
State.Starting, State.Stopped, State.Stopping );
|
||||
int vmSize = (ssVms == null)? 0 : ssVms.size();
|
||||
List<DataStore> ssStores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
|
||||
List<DataStore> ssStores = _dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId));
|
||||
int storeSize = (ssStores == null)? 0 : ssStores.size();
|
||||
if ( storeSize > vmSize ) {
|
||||
s_logger.info("No secondary storage vms found in datacenter id=" + dataCenterId + ", starting a new one");
|
||||
@ -1401,23 +1398,6 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
//not supported
|
||||
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<SecondaryStorageVmVO> profile) {
|
||||
|
||||
|
||||
@ -35,7 +35,6 @@ import javax.naming.ConfigurationException;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.server.ConfigurationServer;
|
||||
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
||||
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
|
||||
import org.apache.cloudstack.affinity.AffinityGroupVO;
|
||||
@ -68,19 +67,14 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.GetVmDiskStatsAnswer;
|
||||
import com.cloud.agent.api.GetVmDiskStatsCommand;
|
||||
import com.cloud.agent.api.GetVmStatsAnswer;
|
||||
import com.cloud.agent.api.GetVmStatsCommand;
|
||||
import com.cloud.agent.api.PlugNicAnswer;
|
||||
import com.cloud.agent.api.PlugNicCommand;
|
||||
import com.cloud.agent.api.PvlanSetupCommand;
|
||||
import com.cloud.agent.api.StartAnswer;
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicCommand;
|
||||
import com.cloud.agent.api.VmDiskStatsEntry;
|
||||
import com.cloud.agent.api.VmStatsEntry;
|
||||
import com.cloud.agent.api.to.DiskTO;
|
||||
@ -176,6 +170,7 @@ import com.cloud.projects.Project.ListProjectResourcesCriteria;
|
||||
import com.cloud.projects.ProjectManager;
|
||||
import com.cloud.resource.ResourceManager;
|
||||
import com.cloud.resource.ResourceState;
|
||||
import com.cloud.server.ConfigurationServer;
|
||||
import com.cloud.server.Criteria;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
@ -2903,7 +2898,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
||||
vm.setDetails(details);
|
||||
|
||||
if (vm.getIsoId() != null) {
|
||||
TemplateInfo template = this.templateMgr.prepareIso(vm.getIsoId(), vm.getDataCenterId());
|
||||
TemplateInfo template = templateMgr.prepareIso(vm.getIsoId(), vm.getDataCenterId());
|
||||
if (template == null){
|
||||
s_logger.error("Failed to prepare ISO on secondary or cache storage");
|
||||
throw new CloudRuntimeException("Failed to prepare ISO on secondary or cache storage");
|
||||
@ -4624,64 +4619,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest)
|
||||
throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
UserVmVO vmVO = _vmDao.findById(vm.getId());
|
||||
if (vmVO.getState() == State.Running) {
|
||||
try {
|
||||
PlugNicCommand plugNicCmd = new PlugNicCommand(nic,vm.getName(), vm.getType());
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("plugnic",plugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(),cmds);
|
||||
PlugNicAnswer plugNicAnswer = cmds.getAnswer(PlugNicAnswer.class);
|
||||
if (!(plugNicAnswer != null && plugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to plug nic for " + vmVO + " due to: " + " due to: " + plugNicAnswer.getDetails());
|
||||
return false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to plug nic for " + vmVO + " in network " + network, dest.getHost().getId(), e);
|
||||
}
|
||||
} else if (vmVO.getState() == State.Stopped || vmVO.getState() == State.Stopping) {
|
||||
s_logger.warn(vmVO + " is Stopped, not sending PlugNicCommand. Currently " + vmVO.getState());
|
||||
} else {
|
||||
s_logger.warn("Unable to plug nic, " + vmVO + " is not in the right state " + vmVO.getState());
|
||||
throw new ResourceUnavailableException("Unable to plug nic on the backend," +
|
||||
vmVO + " is not in the right state", DataCenter.class, vmVO.getDataCenterId());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
UserVmVO vmVO = _vmDao.findById(vm.getId());
|
||||
if (vmVO.getState() == State.Running) {
|
||||
try {
|
||||
UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(nic,vm.getName());
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("unplugnic",unplugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(),cmds);
|
||||
UnPlugNicAnswer unplugNicAnswer = cmds.getAnswer(UnPlugNicAnswer.class);
|
||||
if (!(unplugNicAnswer != null && unplugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to unplug nic for " + vmVO + " due to: " + unplugNicAnswer.getDetails());
|
||||
return false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to unplug nic for " + vmVO + " in network " + network, dest.getHost().getId(), e);
|
||||
}
|
||||
} else if (vmVO.getState() == State.Stopped || vmVO.getState() == State.Stopping) {
|
||||
s_logger.warn(vmVO + " is Stopped, not sending UnPlugNicCommand. Currently " + vmVO.getState());
|
||||
} else {
|
||||
s_logger.warn("Unable to unplug nic, " + vmVO + " is not in the right state " + vmVO.getState());
|
||||
throw new ResourceUnavailableException("Unable to unplug nic on the backend," +
|
||||
vmVO + " is not in the right state", DataCenter.class, vmVO.getDataCenterId());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareStop(VirtualMachineProfile<UserVmVO> profile) {
|
||||
UserVmVO vm = _vmDao.findById(profile.getId());
|
||||
|
||||
@ -17,15 +17,9 @@
|
||||
package com.cloud.vm;
|
||||
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.deploy.DeployDestination;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.InsufficientNetworkCapacityException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.Network;
|
||||
|
||||
/**
|
||||
* A VirtualMachineGuru knows how to process a certain type of virtual machine.
|
||||
@ -79,36 +73,6 @@ public interface VirtualMachineGuru<T extends VirtualMachine> {
|
||||
*/
|
||||
Long convertToId(String vmName);
|
||||
|
||||
/**
|
||||
* Prepare for a nic to be plugged into the network.
|
||||
* @param network
|
||||
* @param nic
|
||||
* @param vm
|
||||
* @param context
|
||||
* @param dest TODO
|
||||
* @return
|
||||
* @throws ConcurrentOperationException
|
||||
* @throws ResourceUnavailableException
|
||||
* @throws InsufficientNetworkCapacityException
|
||||
*/
|
||||
boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException,
|
||||
ResourceUnavailableException, InsufficientCapacityException;
|
||||
|
||||
/**
|
||||
* A nic is unplugged from this network.
|
||||
* @param network
|
||||
* @param nic
|
||||
* @param vm
|
||||
* @param context
|
||||
* @param dest TODO
|
||||
* @return
|
||||
* @throws ConcurrentOperationException
|
||||
* @throws ResourceUnavailableException
|
||||
*/
|
||||
boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException;
|
||||
|
||||
/**
|
||||
* Prepare Vm for Stop
|
||||
* @param profile
|
||||
|
||||
@ -38,6 +38,13 @@ import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.AgentManager.OnError;
|
||||
import com.cloud.agent.Listener;
|
||||
@ -52,6 +59,8 @@ import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.MigrateAnswer;
|
||||
import com.cloud.agent.api.MigrateCommand;
|
||||
import com.cloud.agent.api.PingRoutingCommand;
|
||||
import com.cloud.agent.api.PlugNicAnswer;
|
||||
import com.cloud.agent.api.PlugNicCommand;
|
||||
import com.cloud.agent.api.PrepareForMigrationAnswer;
|
||||
import com.cloud.agent.api.PrepareForMigrationCommand;
|
||||
import com.cloud.agent.api.RebootAnswer;
|
||||
@ -64,6 +73,8 @@ import com.cloud.agent.api.StartupRoutingCommand;
|
||||
import com.cloud.agent.api.StartupRoutingCommand.VmState;
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.StopCommand;
|
||||
import com.cloud.agent.api.UnPlugNicAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicCommand;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
@ -174,13 +185,6 @@ import com.cloud.vm.snapshot.VMSnapshotManager;
|
||||
import com.cloud.vm.snapshot.VMSnapshotVO;
|
||||
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
|
||||
|
||||
import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
|
||||
@Local(value = VirtualMachineManager.class)
|
||||
public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMachineManager, Listener {
|
||||
private static final Logger s_logger = Logger.getLogger(VirtualMachineManagerImpl.class);
|
||||
@ -2858,7 +2862,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
|
||||
boolean result = false;
|
||||
try{
|
||||
result = vmGuru.plugNic(network, nicTO, vmTO, context, dest);
|
||||
result = plugNic(network, nicTO, vmTO, context, dest);
|
||||
if (result) {
|
||||
s_logger.debug("Nic is plugged successfully for vm " + vm + " in network " + network + ". Vm is a part of network now");
|
||||
long isDefault = (nic.isDefaultNic()) ? 1 : 0;
|
||||
@ -2932,7 +2936,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
if (vm.getState() == State.Running) {
|
||||
NicTO nicTO = toNicTO(nicProfile, vmProfile.getVirtualMachine().getHypervisorType());
|
||||
s_logger.debug("Un-plugging nic " + nic + " for vm " + vm + " from network " + network);
|
||||
boolean result = vmGuru.unplugNic(network, nicTO, vmTO, context, dest);
|
||||
boolean result = unplugNic(network, nicTO, vmTO, context, dest);
|
||||
if (result) {
|
||||
s_logger.debug("Nic is unplugged successfully for vm " + vm + " in network " + network );
|
||||
long isDefault = (nic.isDefaultNic()) ? 1 : 0;
|
||||
@ -3003,7 +3007,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
if (vm.getState() == State.Running) {
|
||||
NicTO nicTO = toNicTO(nicProfile, vmProfile.getVirtualMachine().getHypervisorType());
|
||||
s_logger.debug("Un-plugging nic for vm " + vm + " from network " + network);
|
||||
boolean result = vmGuru.unplugNic(network, nicTO, vmTO, context, dest);
|
||||
boolean result = unplugNic(network, nicTO, vmTO, context, dest);
|
||||
if (result) {
|
||||
s_logger.debug("Nic is unplugged successfully for vm " + vm + " in network " + network );
|
||||
} else {
|
||||
@ -3244,6 +3248,74 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
_workDao.update(work.getId(), work);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException,
|
||||
ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
boolean result = true;
|
||||
|
||||
VMInstanceVO router = _vmDao.findById(vm.getId());
|
||||
if (router.getState() == State.Running) {
|
||||
try {
|
||||
PlugNicCommand plugNicCmd = new PlugNicCommand(nic, vm.getName(), vm.getType());
|
||||
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
cmds.addCommand("plugnic", plugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
PlugNicAnswer plugNicAnswer = cmds.getAnswer(PlugNicAnswer.class);
|
||||
if (!(plugNicAnswer != null && plugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to plug nic for vm " + vm.getName());
|
||||
result = false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to plug nic for router " + vm.getName() + " in network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
}
|
||||
} else {
|
||||
s_logger.warn("Unable to apply PlugNic, vm " + router + " is not in the right state " + router.getState());
|
||||
|
||||
throw new ResourceUnavailableException("Unable to apply PlugNic on the backend," +
|
||||
" vm " + vm + " is not in the right state", DataCenter.class, router.getDataCenterId());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm,
|
||||
ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
|
||||
boolean result = true;
|
||||
VMInstanceVO router = _vmDao.findById(vm.getId());
|
||||
|
||||
if (router.getState() == State.Running) {
|
||||
try {
|
||||
Commands cmds = new Commands(OnError.Stop);
|
||||
UnPlugNicCommand unplugNicCmd = new UnPlugNicCommand(nic, vm.getName());
|
||||
cmds.addCommand("unplugnic", unplugNicCmd);
|
||||
_agentMgr.send(dest.getHost().getId(), cmds);
|
||||
|
||||
UnPlugNicAnswer unplugNicAnswer = cmds.getAnswer(UnPlugNicAnswer.class);
|
||||
if (!(unplugNicAnswer != null && unplugNicAnswer.getResult())) {
|
||||
s_logger.warn("Unable to unplug nic from router " + router);
|
||||
result = false;
|
||||
}
|
||||
} catch (OperationTimedoutException e) {
|
||||
throw new AgentUnavailableException("Unable to unplug nic from rotuer " + router + " from network " + network,
|
||||
dest.getHost().getId(), e);
|
||||
}
|
||||
} else if (router.getState() == State.Stopped || router.getState() == State.Stopping) {
|
||||
s_logger.debug("Vm " + router.getInstanceName() + " is in " + router.getState() +
|
||||
", so not sending unplug nic command to the backend");
|
||||
} else {
|
||||
s_logger.warn("Unable to apply unplug nic, Vm " + router + " is not in the right state " + router.getState());
|
||||
|
||||
throw new ResourceUnavailableException("Unable to apply unplug nic on the backend," +
|
||||
" vm " + router + " is not in the right state", DataCenter.class, router.getDataCenterId());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMInstanceVO reConfigureVm(VMInstanceVO vm , ServiceOffering oldServiceOffering, boolean reconfiguringOnExistingHost) throws ResourceUnavailableException, ConcurrentOperationException {
|
||||
|
||||
|
||||
@ -23,10 +23,9 @@ import java.util.Map;
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.api.BaseCmd.HTTPMethod;
|
||||
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd;
|
||||
import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.AddNicToVMCmd;
|
||||
@ -44,13 +43,10 @@ import org.apache.cloudstack.api.command.user.vm.UpdateVMCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd;
|
||||
import org.apache.cloudstack.api.command.user.vmgroup.CreateVMGroupCmd;
|
||||
import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.api.StopAnswer;
|
||||
import com.cloud.agent.api.VmDiskStatsEntry;
|
||||
import com.cloud.agent.api.VmStatsEntry;
|
||||
import com.cloud.agent.api.to.NicTO;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.api.query.vo.UserVmJoinVO;
|
||||
import com.cloud.dc.DataCenter;
|
||||
@ -66,7 +62,6 @@ import com.cloud.exception.StorageUnavailableException;
|
||||
import com.cloud.exception.VirtualMachineMigrationException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.IpAddresses;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.projects.Project.ListProjectResourcesCriteria;
|
||||
@ -349,6 +344,7 @@ public class MockUserVmManagerImpl extends ManagerBase implements UserVmManager,
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> securityGroupIdList, Account owner,
|
||||
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
|
||||
HTTPMethod httpmethod, String userData, String sshKeyPair, Map<Long, IpAddresses> requestedIps,
|
||||
@ -438,25 +434,6 @@ public class MockUserVmManagerImpl extends ManagerBase implements UserVmManager,
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.vm.VirtualMachineGuru#plugNic(com.cloud.network.Network, com.cloud.agent.api.to.NicTO, com.cloud.agent.api.to.VirtualMachineTO, com.cloud.vm.ReservationContext, com.cloud.deploy.DeployDestination)
|
||||
*/
|
||||
@Override
|
||||
public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException,
|
||||
InsufficientCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see com.cloud.vm.VirtualMachineGuru#unplugNic(com.cloud.network.Network, com.cloud.agent.api.to.NicTO, com.cloud.agent.api.to.VirtualMachineTO, com.cloud.vm.ReservationContext, com.cloud.deploy.DeployDestination)
|
||||
*/
|
||||
@Override
|
||||
public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserVm resetVMSSHKey(ResetVMSSHKeyCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user