You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/07/15 20:01:01 UTC
git commit: updated refs/heads/master to 17984a3
Updated Branches:
refs/heads/master e52cde587 -> 17984a3f8
Removed the plug and unplug method from VMGuru. Why should VMGuru understand how to plug and unplug nics? Part of componentizing the vmsync work
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/17984a3f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/17984a3f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/17984a3f
Branch: refs/heads/master
Commit: 17984a3f8c7cebc7875e6850c23467e6016bc364
Parents: e52cde5
Author: ahuang <al...@citrix.com>
Authored: Mon Jul 15 11:00:58 2013 -0700
Committer: ahuang <al...@citrix.com>
Committed: Mon Jul 15 11:00:58 2013 -0700
----------------------------------------------------------------------
.../lb/ElasticLoadBalancerManagerImpl.java | 20 +----
.../lb/InternalLoadBalancerVMManagerImpl.java | 22 +----
.../consoleproxy/ConsoleProxyManagerImpl.java | 41 +++------
.../VirtualNetworkApplianceManagerImpl.java | 74 ++++++----------
.../VpcVirtualNetworkApplianceManagerImpl.java | 75 ----------------
.../secondary/SecondaryStorageManagerImpl.java | 36 ++------
server/src/com/cloud/vm/UserVmManagerImpl.java | 67 +-------------
server/src/com/cloud/vm/VirtualMachineGuru.java | 36 --------
.../com/cloud/vm/VirtualMachineManagerImpl.java | 92 +++++++++++++++++---
.../com/cloud/vm/MockUserVmManagerImpl.java | 27 +-----
10 files changed, 141 insertions(+), 349 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index b21e8f9..5f603b3 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@ -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;
@@ -986,21 +985,6 @@ ElasticLoadBalancerManager, VirtualMachineGuru<DomainRouterVO> {
}
@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) {
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
index c633d57..5d6a671 100644
--- a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
+++ b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
@@ -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;
@@ -367,19 +366,6 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
}
@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;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 5983aa7..bec04c0 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -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();
}
@@ -1703,22 +1702,6 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
}
@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) {
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index ed10369..7bd2864 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -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;
@@ -3974,21 +3973,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
VMInstanceVO vm = profile.getVirtualMachine();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index 51c072c..39d0895 100644
--- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -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{
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index 6859b0b..ec663da 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -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) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 79e7f5a..ef9fcbc 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -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");
@@ -4625,64 +4620,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());
if (vm.getState() == State.Running)
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/vm/VirtualMachineGuru.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineGuru.java b/server/src/com/cloud/vm/VirtualMachineGuru.java
index b59584d..3141507 100644
--- a/server/src/com/cloud/vm/VirtualMachineGuru.java
+++ b/server/src/com/cloud/vm/VirtualMachineGuru.java
@@ -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.
@@ -80,36 +74,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
* @return
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 827e233..afdc85d 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -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 {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/17984a3f/server/test/com/cloud/vm/MockUserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java b/server/test/com/cloud/vm/MockUserVmManagerImpl.java
index 40c49d4..9b1d3f3 100644
--- a/server/test/com/cloud/vm/MockUserVmManagerImpl.java
+++ b/server/test/com/cloud/vm/MockUserVmManagerImpl.java
@@ -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