From 17984a3f8c7cebc7875e6850c23467e6016bc364 Mon Sep 17 00:00:00 2001 From: ahuang Date: Mon, 15 Jul 2013 11:00:58 -0700 Subject: [PATCH] Removed the plug and unplug method from VMGuru. Why should VMGuru understand how to plug and unplug nics? Part of componentizing the vmsync work --- .../lb/ElasticLoadBalancerManagerImpl.java | 20 +--- .../lb/InternalLoadBalancerVMManagerImpl.java | 22 +---- .../consoleproxy/ConsoleProxyManagerImpl.java | 41 +++------ .../VirtualNetworkApplianceManagerImpl.java | 74 ++++++--------- ...VpcVirtualNetworkApplianceManagerImpl.java | 75 --------------- .../SecondaryStorageManagerImpl.java | 36 ++------ .../src/com/cloud/vm/UserVmManagerImpl.java | 67 +------------- .../src/com/cloud/vm/VirtualMachineGuru.java | 36 -------- .../cloud/vm/VirtualMachineManagerImpl.java | 92 +++++++++++++++++-- .../com/cloud/vm/MockUserVmManagerImpl.java | 27 +----- 10 files changed, 141 insertions(+), 349 deletions(-) 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 b21e8f9dba3..5f603b3166b 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; @@ -985,21 +984,6 @@ ElasticLoadBalancerManager, VirtualMachineGuru { 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 profile) { } 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 c633d57d978..5d6a6718362 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; @@ -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 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; diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 5983aa7ad7c..bec04c00eeb 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 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 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 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.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 profile) { } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index ed1036962df..7bd28644f0f 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 _guestOSNeedGatewayOnNonDefaultNetwork = new HashSet(); + private final Set _guestOSNeedGatewayOnNonDefaultNetwork = new HashSet(); 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 profile){ //Collect network usage before stopping Vm diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 51c072c9360..39d08958249 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{ diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 6859b0bb20d..ec663dab09e 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 ssStores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(zoneId)); + List 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 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 stores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId)); + List 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 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 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 ssStores = this._dataStoreMgr.getImageStoresByScope(new ZoneScope(dataCenterId)); + List 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 profile) { diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 79e7f5ae6fc..ef9fcbc827f 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"); @@ -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 profile) { UserVmVO vm = _vmDao.findById(profile.getId()); diff --git a/server/src/com/cloud/vm/VirtualMachineGuru.java b/server/src/com/cloud/vm/VirtualMachineGuru.java index b59584d28d6..31415079372 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. @@ -79,36 +73,6 @@ public interface VirtualMachineGuru { */ 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 diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 827e2335959..afdc85d8e57 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 { diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java b/server/test/com/cloud/vm/MockUserVmManagerImpl.java index 40c49d4430a..9b1d3f3eced 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 securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData, String sshKeyPair, Map 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