From 5145c3cbf1bc0678c45ec99cc4bdbf8c18fdfcf2 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Sun, 19 May 2013 09:12:20 -0700 Subject: [PATCH] Removed the generics from VirtualMachineGurur --- .../src/com/cloud/vm/VirtualMachineGuru.java | 26 +----- .../com/cloud/vm/VirtualMachineManager.java | 22 +++-- .../lb/ElasticLoadBalancerManagerImpl.java | 58 ++++++------ .../consoleproxy/ConsoleProxyManagerImpl.java | 58 ++++++------ .../VirtualNetworkApplianceManagerImpl.java | 57 ++++++------ .../SecondaryStorageManagerImpl.java | 57 ++++++------ server/src/com/cloud/vm/UserVmManager.java | 2 +- .../src/com/cloud/vm/UserVmManagerImpl.java | 58 ++++++------ .../cloud/vm/VirtualMachineManagerImpl.java | 91 ++++++++----------- .../vm/VirtualMachinePowerStateSyncImpl.java | 39 ++++---- .../src/com/cloud/vm/VmWorkJobDispatcher.java | 4 +- .../com/cloud/vm/MockUserVmManagerImpl.java | 77 ---------------- .../vm/VirtualMachineManagerImplTest.java | 4 +- .../VmWorkMockVirtualMachineManagerImpl.java | 7 +- 14 files changed, 221 insertions(+), 339 deletions(-) diff --git a/engine/components-api/src/com/cloud/vm/VirtualMachineGuru.java b/engine/components-api/src/com/cloud/vm/VirtualMachineGuru.java index 3c9e53ec41c..ec122f23fe2 100644 --- a/engine/components-api/src/com/cloud/vm/VirtualMachineGuru.java +++ b/engine/components-api/src/com/cloud/vm/VirtualMachineGuru.java @@ -25,17 +25,7 @@ import com.cloud.exception.ResourceUnavailableException; * A VirtualMachineGuru knows how to process a certain type of virtual machine. * */ -public interface VirtualMachineGuru { - /** - * Find the virtual machine by name. - * @param name - * @return virtual machine. - */ - T findByName(String name); - - T findById(long id); - - T persist(T vm); +public interface VirtualMachineGuru { boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context); @@ -57,21 +47,9 @@ public interface VirtualMachineGuru { */ boolean finalizeStart(VirtualMachineProfile profile, long hostId, Commands cmds, ReservationContext context); - boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile); - void finalizeStop(VirtualMachineProfile profile, StopAnswer answer); - void finalizeExpunge(T vm); - - /** - * Returns the id parsed from the name. If it cannot parse the name, - * then return null. This method is used to determine if this is - * the right handler for this vm. - * - * @param vmName vm name coming form the agent. - * @return id if the handler works for this vm and can parse id. null if not. - */ - Long convertToId(String vmName); + void finalizeExpunge(VirtualMachine vm); /** * Prepare Vm for Stop diff --git a/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java b/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java index 399c2375577..06ae2046c9d 100644 --- a/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java +++ b/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -92,11 +92,13 @@ public interface VirtualMachineManager extends Manager { boolean expunge(T vm, User caller, Account account) throws ResourceUnavailableException; - void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru); + void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru); - Collection> getRegisteredGurus(); + // FIXME: This method is added by VirtualMachinePowerStateSyncImpl + Collection getRegisteredGurus(); - VirtualMachineGuru getVmGuru(T vm); + // FIXME: Apparently this method is added by Kelven for VmWorkJobDispatcher. Should look into removing this. + VirtualMachineGuru getVmGuru(VirtualMachine vm); boolean stateTransitTo(VMInstanceVO vm, VirtualMachine.Event e, Long hostId) throws NoTransitionException; @@ -159,15 +161,15 @@ public interface VirtualMachineManager extends Manager { * @throws ResourceUnavailableException * @throws InsufficientCapacityException */ - NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, + NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException; /** * @param vm * @param nic * @return - * @throws ResourceUnavailableException - * @throws ConcurrentOperationException + * @throws ResourceUnavailableException + * @throws ConcurrentOperationException */ boolean removeNicFromVm(VirtualMachine vm, NicVO nic) throws ConcurrentOperationException, ResourceUnavailableException; @@ -176,8 +178,8 @@ public interface VirtualMachineManager extends Manager { * @param network * @param broadcastUri TODO * @return - * @throws ResourceUnavailableException - * @throws ConcurrentOperationException + * @throws ResourceUnavailableException + * @throws ConcurrentOperationException */ boolean removeVmFromNetwork(VirtualMachine vm, Network network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException; @@ -213,6 +215,6 @@ public interface VirtualMachineManager extends Manager { T processVmStartWork(T vm, Map params, User caller, Account account, DeploymentPlan planToDeploy) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException; - boolean processVmStopWork(T vm, boolean forced, User user, Account account) + boolean processVmStopWork(T vm, boolean forced, User user, Account account) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException; } 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 21355f80bde..23eaac51928 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 @@ -141,7 +141,7 @@ import com.cloud.vm.dao.NicDao; @Component @Local(value = { ElasticLoadBalancerManager.class }) public class ElasticLoadBalancerManagerImpl extends ManagerBase implements -ElasticLoadBalancerManager, VirtualMachineGuru { + ElasticLoadBalancerManager, VirtualMachineGuru { private static final Logger s_logger = Logger .getLogger(ElasticLoadBalancerManagerImpl.class); @@ -770,24 +770,24 @@ ElasticLoadBalancerManager, VirtualMachineGuru { } } - @Override - public DomainRouterVO findByName(String name) { - if (!VirtualMachineName.isValidSystemVmName(name, _instance, _elbVmNamePrefix)) { - return null; - } - - return _routerDao.findById(VirtualMachineName.getSystemVmId(name)); - } - - @Override - public DomainRouterVO findById(long id) { - return _routerDao.findById(id); - } - - @Override - public DomainRouterVO persist(DomainRouterVO elbVm) { - return _routerDao.persist(elbVm); - } +// @Override +// public DomainRouterVO findByName(String name) { +// if (!VirtualMachineName.isValidSystemVmName(name, _instance, _elbVmNamePrefix)) { +// return null; +// } +// +// return _routerDao.findById(VirtualMachineName.getSystemVmId(name)); +// } +// +// @Override +// public DomainRouterVO findById(long id) { +// return _routerDao.findById(id); +// } +// +// @Override +// public DomainRouterVO persist(DomainRouterVO elbVm) { +// return _routerDao.persist(elbVm); +// } @Override public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) { @@ -900,7 +900,7 @@ ElasticLoadBalancerManager, VirtualMachineGuru { return true; } - @Override + public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile) { DomainRouterVO elbVm = _routerDao.findById(profile.getId()); DataCenterVO dcVo = _dcDao.findById(profile.getVirtualMachine().getDataCenterId()); @@ -967,19 +967,19 @@ ElasticLoadBalancerManager, VirtualMachineGuru { } @Override - public void finalizeExpunge(DomainRouterVO vm) { + public void finalizeExpunge(VirtualMachine vm) { // no-op } - @Override - public Long convertToId(String vmName) { - if (!VirtualMachineName.isValidSystemVmName(vmName, _instance, _elbVmNamePrefix)) { - return null; - } - - return VirtualMachineName.getSystemVmId(vmName); - } +// @Override +// public Long convertToId(String vmName) { +// if (!VirtualMachineName.isValidSystemVmName(vmName, _instance, _elbVmNamePrefix)) { +// return null; +// } +// +// return VirtualMachineName.getSystemVmId(vmName); +// } @Override public void prepareStop(VirtualMachineProfile profile) { diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 8ca29175c4d..44917fb088b 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -164,7 +164,7 @@ import com.cloud.vm.dao.VMInstanceDao; // @Local(value = { ConsoleProxyManager.class, ConsoleProxyService.class }) public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxyManager, - VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { + VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { private static final Logger s_logger = Logger.getLogger(ConsoleProxyManagerImpl.class); private static final int DEFAULT_CAPACITY_SCAN_INTERVAL = 30000; // 30 seconds @@ -1023,13 +1023,13 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy return true; } - @Override - public Long convertToId(String vmName) { - if (!VirtualMachineName.isValidConsoleProxyName(vmName, _instance)) { - return null; - } - return VirtualMachineName.getConsoleProxyId(vmName); - } +// @Override +// public Long convertToId(String vmName) { +// if (!VirtualMachineName.isValidConsoleProxyName(vmName, _instance)) { +// return null; +// } +// return VirtualMachineName.getConsoleProxyId(vmName); +// } @Override public boolean stopProxy(long proxyVmId) { @@ -1429,7 +1429,6 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy return true; } - @Override public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile) { NicProfile managementNic = null; @@ -1487,7 +1486,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy } @Override - public void finalizeExpunge(ConsoleProxyVO proxy) { + public void finalizeExpunge(VirtualMachine vm) { + ConsoleProxyVO proxy = _consoleProxyDao.findById(vm.getId()); proxy.setPublicIpAddress(null); proxy.setPublicMacAddress(null); proxy.setPublicNetmask(null); @@ -1498,23 +1498,23 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy - @Override - public ConsoleProxyVO persist(ConsoleProxyVO proxy) { - return _consoleProxyDao.persist(proxy); - } - - @Override - public ConsoleProxyVO findById(long id) { - return _consoleProxyDao.findById(id); - } - - @Override - public ConsoleProxyVO findByName(String name) { - if (!VirtualMachineName.isValidConsoleProxyName(name)) { - return null; - } - return findById(VirtualMachineName.getConsoleProxyId(name)); - } +// @Override +// public ConsoleProxyVO persist(ConsoleProxyVO proxy) { +// return _consoleProxyDao.persist(proxy); +// } +// +// @Override +// public ConsoleProxyVO findById(long id) { +// return _consoleProxyDao.findById(id); +// } +// +// @Override +// public ConsoleProxyVO findByName(String name) { +// if (!VirtualMachineName.isValidConsoleProxyName(name)) { +// return null; +// } +// return findById(VirtualMachineName.getConsoleProxyId(name)); +// } @Override public void finalizeStop(VirtualMachineProfile profile, StopAnswer answer) { @@ -1726,7 +1726,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy public void vmWorkStart(VmWork work) { assert(work instanceof VmWorkStart); - ConsoleProxyVO vm = findById(work.getVmId()); + ConsoleProxyVO vm = _consoleProxyDao.findById(work.getVmId()); UserVO user = _entityMgr.findById(UserVO.class, work.getUserId()); AccountVO account = _entityMgr.findById(AccountVO.class, work.getAccountId()); @@ -1747,7 +1747,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy public void vmWorkStop(VmWork work) { assert(work instanceof VmWorkStop); - ConsoleProxyVO vm = findById(work.getVmId()); + ConsoleProxyVO vm = _consoleProxyDao.findById(work.getVmId()); UserVO user = _entityMgr.findById(UserVO.class, work.getUserId()); AccountVO account = _entityMgr.findById(AccountVO.class, work.getAccountId()); diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 8a53e1d96e3..8e433c9abd7 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -250,7 +250,7 @@ import com.cloud.vm.dao.VMInstanceDao; @Component @Local(value = {VirtualNetworkApplianceManager.class, VirtualNetworkApplianceService.class}) public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements VirtualNetworkApplianceManager, VirtualNetworkApplianceService, - VirtualMachineGuru, Listener { + VirtualMachineGuru, Listener { private static final Logger s_logger = Logger.getLogger(VirtualNetworkApplianceManagerImpl.class); @Inject @@ -775,14 +775,14 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V protected VirtualNetworkApplianceManagerImpl() { } - @Override - public Long convertToId(final String vmName) { - if (!VirtualMachineName.isValidRouterName(vmName, _instance)) { - return null; - } - - return VirtualMachineName.getRouterId(vmName); - } +// @Override +// public Long convertToId(final String vmName) { +// if (!VirtualMachineName.isValidRouterName(vmName, _instance)) { +// return null; +// } +// +// return VirtualMachineName.getRouterId(vmName); +// } private VmDataCommand generateVmDataCommand(VirtualRouter router, String vmPrivateIpAddress, String userData, String serviceOffering, String zoneName, String guestIpAddress, String vmName, @@ -2229,7 +2229,6 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V return true; } - @Override public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile) { DomainRouterVO router = _routerDao.findById(profile.getId()); NicProfile controlNic = getControlNic(profile); @@ -2538,7 +2537,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override - public void finalizeExpunge(DomainRouterVO vm) { + public void finalizeExpunge(VirtualMachine vm) { } @Override @@ -2759,11 +2758,11 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V }); } - @Override - public DomainRouterVO persist(DomainRouterVO router) { - DomainRouterVO virtualRouter = _routerDao.persist(router); - return virtualRouter; - } +// @Override +// public DomainRouterVO persist(DomainRouterVO router) { +// DomainRouterVO virtualRouter = _routerDao.persist(router); +// return virtualRouter; +// } @Override //FIXME add partial success and STOP state support @@ -2823,19 +2822,19 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V return result; } - @Override - public DomainRouterVO findById(long id) { - return _routerDao.findById(id); - } - - @Override - public DomainRouterVO findByName(String name) { - if (!VirtualMachineName.isValidRouterName(name)) { - return null; - } - - return _routerDao.findById(VirtualMachineName.getRouterId(name)); - } +// @Override +// public DomainRouterVO findById(long id) { +// return _routerDao.findById(id); +// } +// +// @Override +// public DomainRouterVO findByName(String name) { +// if (!VirtualMachineName.isValidRouterName(name)) { +// return null; +// } +// +// return _routerDao.findById(VirtualMachineName.getRouterId(name)); +// } @Override @ActionEvent(eventType = EventTypes.EVENT_ROUTER_START, eventDescription = "starting router Vm", async = true) diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index dcb5d82e975..481c61a1e2f 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -164,7 +164,7 @@ import com.cloud.vm.dao.VMInstanceDao; // because sooner or later, it will be driven into Running state // @Local(value = { SecondaryStorageVmManager.class }) -public class SecondaryStorageManagerImpl extends ManagerBase implements SecondaryStorageVmManager, VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { +public class SecondaryStorageManagerImpl extends ManagerBase implements SecondaryStorageVmManager, VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { private static final Logger s_logger = Logger.getLogger(SecondaryStorageManagerImpl.class); private static final int DEFAULT_CAPACITY_SCAN_INTERVAL = 30000; // 30 @@ -905,13 +905,13 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar return true; } - @Override - public Long convertToId(String vmName) { - if (!VirtualMachineName.isValidSystemVmName(vmName, _instance, "s")) { - return null; - } - return VirtualMachineName.getSystemVmId(vmName); - } +// @Override +// public Long convertToId(String vmName) { +// if (!VirtualMachineName.isValidSystemVmName(vmName, _instance, "s")) { +// return null; +// } +// return VirtualMachineName.getSystemVmId(vmName); +// } @Override public boolean stopSecStorageVm(long secStorageVmId) { @@ -1026,23 +1026,23 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar return "secStorageVm." + id; } - @Override - public SecondaryStorageVmVO findByName(String name) { - if (!VirtualMachineName.isValidSecStorageVmName(name, null)) { - return null; - } - return findById(VirtualMachineName.getSystemVmId(name)); - } +// @Override +// public SecondaryStorageVmVO findByName(String name) { +// if (!VirtualMachineName.isValidSecStorageVmName(name, null)) { +// return null; +// } +// return findById(VirtualMachineName.getSystemVmId(name)); +// } - @Override - public SecondaryStorageVmVO findById(long id) { - return _secStorageVmDao.findById(id); - } - - @Override - public SecondaryStorageVmVO persist(SecondaryStorageVmVO vm) { - return _secStorageVmDao.persist(vm); - } +// @Override +// public SecondaryStorageVmVO findById(long id) { +// return _secStorageVmDao.findById(id); +// } +// +// @Override +// public SecondaryStorageVmVO persist(SecondaryStorageVmVO vm) { +// return _secStorageVmDao.persist(vm); +// } @Override public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) { @@ -1167,7 +1167,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar return true; } - @Override + public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile) { NicProfile managementNic = null; @@ -1235,7 +1235,8 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar } @Override - public void finalizeExpunge(SecondaryStorageVmVO vm) { + public void finalizeExpunge(VirtualMachine instance) { + SecondaryStorageVmVO vm = _secStorageVmDao.findById(instance.getId()); vm.setPublicIpAddress(null); vm.setPublicMacAddress(null); vm.setPublicNetmask(null); @@ -1467,7 +1468,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar public void vmWorkStart(VmWork work) { assert(work instanceof VmWorkStart); - SecondaryStorageVmVO vm = findById(work.getVmId()); + SecondaryStorageVmVO vm = _secStorageVmDao.findById(work.getVmId()); UserVO user = _entityMgr.findById(UserVO.class, work.getUserId()); AccountVO account = _entityMgr.findById(AccountVO.class, work.getAccountId()); @@ -1488,7 +1489,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar public void vmWorkStop(VmWork work) { assert(work instanceof VmWorkStop); - SecondaryStorageVmVO vm = findById(work.getVmId()); + SecondaryStorageVmVO vm = _secStorageVmDao.findById(work.getVmId()); UserVO user = _entityMgr.findById(UserVO.class, work.getUserId()); AccountVO account = _entityMgr.findById(AccountVO.class, work.getAccountId()); diff --git a/server/src/com/cloud/vm/UserVmManager.java b/server/src/com/cloud/vm/UserVmManager.java index cc1fffd780b..349a0df950d 100755 --- a/server/src/com/cloud/vm/UserVmManager.java +++ b/server/src/com/cloud/vm/UserVmManager.java @@ -35,7 +35,7 @@ import com.cloud.utils.Pair; * * */ -public interface UserVmManager extends VirtualMachineGuru, UserVmService{ +public interface UserVmManager extends UserVmService { static final int MAX_USER_DATA_LENGTH_BYTES = 2048; /** diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 7dd51b07032..85b516cc67e 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -241,7 +241,7 @@ import com.cloud.vm.snapshot.VMSnapshotVO; import com.cloud.vm.snapshot.dao.VMSnapshotDao; @Local(value = { UserVmManager.class, UserVmService.class }) -public class UserVmManagerImpl extends ManagerBase implements UserVmManager, UserVmService { +public class UserVmManagerImpl extends ManagerBase implements UserVmManager, UserVmService, VirtualMachineGuru { private static final Logger s_logger = Logger .getLogger(UserVmManagerImpl.class); @@ -1353,13 +1353,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use return UUID.randomUUID().toString(); } - @Override - public Long convertToId(String vmName) { - if (!VirtualMachineName.isValidVmName(vmName, _instance)) { - return null; - } - return VirtualMachineName.getVmId(vmName); - } +// @Override +// public Long convertToId(String vmName) { +// if (!VirtualMachineName.isValidVmName(vmName, _instance)) { +// return null; +// } +// return VirtualMachineName.getVmId(vmName); +// } @Override public boolean expunge(UserVmVO vm, long callerUserId, Account caller) { @@ -2767,12 +2767,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use return true; } - @Override - public boolean finalizeCommandsOnStart(Commands cmds, - VirtualMachineProfile profile) { - return true; - } - @Override public boolean finalizeStart(VirtualMachineProfile profile, long hostId, Commands cmds, ReservationContext context) { @@ -2858,26 +2852,26 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use } @Override - public void finalizeExpunge(UserVmVO vm) { + public void finalizeExpunge(VirtualMachine vm) { } - @Override - public UserVmVO persist(UserVmVO vm) { - return _vmDao.persist(vm); - } - - @Override - public UserVmVO findById(long id) { - return _vmDao.findById(id); - } - - @Override - public UserVmVO findByName(String name) { - if (!VirtualMachineName.isValidVmName(name)) { - return null; - } - return findById(VirtualMachineName.getVmId(name)); - } +// @Override +// public UserVmVO persist(UserVmVO vm) { +// return _vmDao.persist(vm); +// } +// +// @Override +// public UserVmVO findById(long id) { +// return _vmDao.findById(id); +// } +// +// @Override +// public UserVmVO findByName(String name) { +// if (!VirtualMachineName.isValidVmName(name)) { +// return null; +// } +// return findById(VirtualMachineName.getVmId(name)); +// } @Override @ActionEvent(eventType = EventTypes.EVENT_VM_STOP, eventDescription = "stopping Vm", async = true) diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 65452707ef2..5e65a71e443 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -306,7 +306,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac @Inject DeploymentPlanningManager _dpMgr; - Map> _vmGurus = new HashMap>(); + Map _vmGurus = new HashMap(); protected StateMachine2 _stateMachine; ScheduledExecutorService _executor = null; @@ -322,23 +322,22 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac protected boolean _forceStop; @Override - public void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru) { + public void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru) { synchronized (_vmGurus) { _vmGurus.put(type, guru); } } @Override - public Collection> getRegisteredGurus() { + public Collection getRegisteredGurus() { synchronized(_vmGurus) { return _vmGurus.values(); } } - + @Override - @SuppressWarnings("unchecked") - public VirtualMachineGuru getVmGuru(T vm) { - return (VirtualMachineGuru) _vmGurus.get(vm.getType()); + public VirtualMachineGuru getVmGuru(VirtualMachine vm) { + return _vmGurus.values().iterator().next(); } @Override @@ -358,12 +357,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } assert (plan.getClusterId() == null && plan.getPoolId() == null) : "We currently don't support cluster and pool preset yet"; - @SuppressWarnings("unchecked") - VirtualMachineGuru guru = (VirtualMachineGuru) _vmGurus.get(vm.getType()); + VirtualMachineGuru guru = _vmGurus.get(vm.getType()); Transaction txn = Transaction.currentTxn(); txn.start(); - vm = guru.persist(vm); +// vm = guru.persist(vm); if (s_logger.isDebugEnabled()) { s_logger.debug("Allocating nics for " + vm); @@ -473,7 +471,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac List rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT); volumeMgr.cleanupVolumes(vm.getId()); - VirtualMachineGuru guru = getVmGuru(vm); + VirtualMachineGuru guru = getVmGuru(vm); guru.finalizeExpunge(vm); //remove the overcommit detials from the uservm details _uservmDetailsDao.deleteDetails(vm.getId()); @@ -675,12 +673,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac */ @DB - protected Ternary changeToStartState(VirtualMachineGuru vmGuru, T vm, User caller, Account account) + protected Ternary changeToStartState(VirtualMachineGuru vmGuru, VMInstanceVO vm, User caller, Account account) throws ConcurrentOperationException { long vmId = vm.getId(); - Ternary result = null; + Ternary result = null; Transaction txn = Transaction.currentTxn(); txn.start(); try { @@ -692,7 +690,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac if (s_logger.isDebugEnabled()) { s_logger.debug("Successfully transitioned to start state for " + vm + " reservation id = " + work.getId()); } - result = new Ternary(vmGuru.findById(vmId), context, work); + result = new Ternary(_vmDao.findById(vm.getId()), context, work); txn.commit(); return result; } @@ -812,10 +810,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac @Override public T processVmStartWork(T vm, Map params, User caller, Account account, DeploymentPlan planToDeploy) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { - VirtualMachineGuru vmGuru = getVmGuru(vm); - vm = vmGuru.findById(vm.getId()); + VirtualMachineGuru vmGuru = getVmGuru(vm); + VMInstanceVO vm2 = _vmDao.findById(vm.getId()); - Ternary start = changeToStartState(vmGuru, vm, caller, account); + Ternary start = changeToStartState(vmGuru, vm2, caller, account); assert(start != null); ReservationContext ctx = start.second(); @@ -1092,7 +1090,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } } - protected boolean sendStop(VirtualMachineGuru guru, VirtualMachineProfile profile, boolean force) { + protected boolean sendStop(VirtualMachineGuru guru, VirtualMachineProfile profile, boolean force) { VirtualMachine vm = profile.getVirtualMachine(); StopCommand stop = new StopCommand(vm); try { @@ -1116,7 +1114,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac return true; } - protected boolean cleanup(VirtualMachineGuru guru, VirtualMachineProfile profile, VmWorkJobVO work, Event event, boolean force, User user, + protected boolean cleanup(VirtualMachineGuru guru, VirtualMachineProfile profile, VmWorkJobVO work, Event event, boolean force, User user, Account account) { VirtualMachine vm = profile.getVirtualMachine(); State state = vm.getState(); @@ -1284,7 +1282,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac return true; } - VirtualMachineGuru vmGuru = getVmGuru(vm); + VirtualMachineGuru vmGuru = getVmGuru(vm); VirtualMachineProfile profile = new VirtualMachineProfileImpl(vm); try { @@ -1649,10 +1647,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac @Override public T storageMigration(T vm, StoragePool destPool) { - VirtualMachineGuru vmGuru = getVmGuru(vm); + VirtualMachineGuru vmGuru = getVmGuru(vm); long vmId = vm.getId(); - vm = vmGuru.findById(vmId); + VMInstanceVO vm2 = _vmDao.findById(vmId); try { stateTransitTo(vm, VirtualMachine.Event.StorageMigrationRequested, null); @@ -1954,7 +1952,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac HostVO srcHost = _hostDao.findById(srcHostId); HostVO destHost = _hostDao.findById(destHostId); - VirtualMachineGuru vmGuru = getVmGuru(vm); + VirtualMachineGuru vmGuru = getVmGuru(vm); DataCenterVO dc = _dcDao.findById(destHost.getDataCenterId()); HostPodVO pod = _podDao.findById(destHost.getPodId()); @@ -1963,7 +1961,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac // Create a map of which volume should go in which storage pool. long vmId = vm.getId(); - vm = vmGuru.findById(vmId); + VMInstanceVO vm2 = _vmDao.findById(vmId); VirtualMachineProfile profile = new VirtualMachineProfileImpl(vm); volumeToPool = getPoolListForVolumesForMigration(profile, destHost, volumeToPool); @@ -2094,8 +2092,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac @Override public boolean migrateAway(VirtualMachine.Type vmType, long vmId, long srcHostId) throws InsufficientServerCapacityException, VirtualMachineMigrationException { - VirtualMachineGuru vmGuru = _vmGurus.get(vmType); - VMInstanceVO vm = vmGuru.findById(vmId); + VirtualMachineGuru vmGuru = _vmGurus.get(vmType); + VMInstanceVO vm = _vmDao.findById(vmId); if (vm == null) { s_logger.debug("Unable to find a VM for " + vmId); return true; @@ -2255,8 +2253,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac @Override public VMInstanceVO findByIdAndType(VirtualMachine.Type type, long vmId) { - VirtualMachineGuru guru = _vmGurus.get(type); - return guru.findById(vmId); + return _vmDao.findById(vmId); } public Command cleanup(VirtualMachine vm) { @@ -2526,25 +2523,19 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac if (newStates == null) { return map; } - Collection> vmGurus = _vmGurus.values(); + Collection vmGurus = _vmGurus.values(); boolean is_alien_vm = true; long alien_vm_count = -1; for (Map.Entry> entry : newStates.entrySet()) { is_alien_vm = true; - for (VirtualMachineGuru vmGuru : vmGurus) { + for (VirtualMachineGuru vmGuru : vmGurus) { String name = entry.getKey(); - VMInstanceVO vm = vmGuru.findByName(name); + VMInstanceVO vm = _vmDao.findVMByInstanceName(name); if (vm != null) { map.put(vm.getId(), new AgentVmInfo(entry.getKey(), vmGuru, vm, entry.getValue().second(), entry.getValue().first())); is_alien_vm = false; break; } - Long id = vmGuru.convertToId(name); - if (id != null) { - map.put(id, new AgentVmInfo(entry.getKey(), vmGuru, null, entry.getValue().second(), entry.getValue().first())); - is_alien_vm = false; - break; - } } // alien VMs if (is_alien_vm){ @@ -2590,24 +2581,18 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac return map; } - Collection> vmGurus = _vmGurus.values(); + Collection vmGurus = _vmGurus.values(); for (Map.Entry entry : states.entrySet()) { - for (VirtualMachineGuru vmGuru : vmGurus) { + for (VirtualMachineGuru vmGuru : vmGurus) { String name = entry.getKey(); - VMInstanceVO vm = vmGuru.findByName(name); + VMInstanceVO vm = _vmDao.findVMByInstanceName(name); if (vm != null) { map.put(vm.getId(), new AgentVmInfo(entry.getKey(), vmGuru, vm, entry.getValue())); break; } - - Long id = vmGuru.convertToId(name); - if (id != null) { - map.put(id, new AgentVmInfo(entry.getKey(), vmGuru, null,entry.getValue())); - break; - } } } @@ -3042,18 +3027,18 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac public State state; public String hostUuid; public VMInstanceVO vm; - public VirtualMachineGuru guru; + public VirtualMachineGuru guru; @SuppressWarnings("unchecked") - public AgentVmInfo(String name, VirtualMachineGuru guru, VMInstanceVO vm, State state, String host) { + public AgentVmInfo(String name, VirtualMachineGuru guru, VMInstanceVO vm, State state, String host) { this.name = name; this.state = state; this.vm = vm; - this.guru = (VirtualMachineGuru) guru; + this.guru = guru; hostUuid = host; } - public AgentVmInfo(String name, VirtualMachineGuru guru, VMInstanceVO vm, State state) { + public AgentVmInfo(String name, VirtualMachineGuru guru, VMInstanceVO vm, State state) { this(name, guru, vm, state, null); } @@ -3245,7 +3230,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac NicTO nicTO = toNicTO(nic, vmProfile.getVirtualMachine().getHypervisorType()); //4) plug the nic to the vm - VirtualMachineGuru vmGuru = getVmGuru(vmVO); + VirtualMachineGuru vmGuru = getVmGuru(vmVO); s_logger.debug("Plugging nic for vm " + vm + " in network " + network); @@ -3300,7 +3285,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac DataCenter dc = _configMgr.getZone(network.getDataCenterId()); Host host = _hostDao.findById(vm.getHostId()); DeployDestination dest = new DeployDestination(dc, null, null, host); - VirtualMachineGuru vmGuru = getVmGuru(vmVO); + VirtualMachineGuru vmGuru = getVmGuru(vmVO); HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vmProfile.getVirtualMachine().getHypervisorType()); VirtualMachineTO vmTO = hvGuru.implement(vmProfile); @@ -3364,7 +3349,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac DataCenter dc = _configMgr.getZone(network.getDataCenterId()); Host host = _hostDao.findById(vm.getHostId()); DeployDestination dest = new DeployDestination(dc, null, null, host); - VirtualMachineGuru vmGuru = getVmGuru(vmVO); + VirtualMachineGuru vmGuru = getVmGuru(vmVO); HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vmProfile.getVirtualMachine().getHypervisorType()); VirtualMachineTO vmTO = hvGuru.implement(vmProfile); diff --git a/server/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java b/server/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java index 5eb41173db5..96ecd7d643b 100644 --- a/server/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java +++ b/server/src/com/cloud/vm/VirtualMachinePowerStateSyncImpl.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -16,16 +16,16 @@ // under the License. package com.cloud.vm; -import java.util.Collection; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; +import org.apache.log4j.Logger; + import org.apache.cloudstack.framework.messagebus.MessageBus; import org.apache.cloudstack.framework.messagebus.PublishScope; import org.apache.cloudstack.messagebus.TopicConstants; -import org.apache.log4j.Logger; import com.cloud.agent.api.HostVmStateReportEntry; import com.cloud.vm.VirtualMachine.PowerState; @@ -100,7 +100,7 @@ public class VirtualMachinePowerStateSyncImpl implements VirtualMachinePowerStat return map; } - private Map convertToInfos(Map states) { + private Map convertToInfos(Map states) { final HashMap map = new HashMap(); if (states == null) { return map; @@ -120,20 +120,21 @@ public class VirtualMachinePowerStateSyncImpl implements VirtualMachinePowerStat } private VMInstanceVO findVM(String vmName) { - Collection> vmGurus = _vmMgr.getRegisteredGurus(); - - for (VirtualMachineGuru vmGuru : vmGurus) { - VMInstanceVO vm = vmGuru.findByName(vmName); - if (vm != null) - return vm; - - Long id = vmGuru.convertToId(vmName); - if (id != null) { - vm = vmGuru.findById(id); - if(vm != null) - return vm; - } - } - return null; + return _instanceDao.findVMByInstanceName(vmName); +// Collection vmGurus = _vmMgr.getRegisteredGurus(); +// +// for (VirtualMachineGuru vmGuru : vmGurus) { +// VMInstanceVO vm = vmGuru.findByName(vmName); +// if (vm != null) +// return vm; +// +// Long id = vmGuru.convertToId(vmName); +// if (id != null) { +// vm = vmGuru.findById(id); +// if(vm != null) +// return vm; +// } +// } +// return null; } } diff --git a/server/src/com/cloud/vm/VmWorkJobDispatcher.java b/server/src/com/cloud/vm/VmWorkJobDispatcher.java index 6303ab58f8a..40ab0df153a 100644 --- a/server/src/com/cloud/vm/VmWorkJobDispatcher.java +++ b/server/src/com/cloud/vm/VmWorkJobDispatcher.java @@ -68,7 +68,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch // to solve the problem, we have to go through an instantiated VirtualMachineGuru so that it can carry // down correct type back to VirtualMachineManagerImpl. It is sad that we have to write code like this // - VirtualMachineGuru guru = _vmMgr.getVmGuru(vm); + VirtualMachineGuru guru = _vmMgr.getVmGuru(vm); assert(guru != null); if(guru == null) { s_logger.error("Unable to find virtual Guru for VM type: " + vm.getType()); @@ -94,7 +94,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch } } - private Method getHandler(VirtualMachineGuru guru, String cmd) { + private Method getHandler(VirtualMachineGuru guru, String cmd) { synchronized(_handlerMap) { Class clz = guru.getClass(); diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java b/server/test/com/cloud/vm/MockUserVmManagerImpl.java index ff115afc68b..d74e50a0717 100644 --- a/server/test/com/cloud/vm/MockUserVmManagerImpl.java +++ b/server/test/com/cloud/vm/MockUserVmManagerImpl.java @@ -44,12 +44,9 @@ 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 com.cloud.agent.api.StopAnswer; import com.cloud.agent.api.VmStatsEntry; -import com.cloud.agent.manager.Commands; import com.cloud.api.query.vo.UserVmJoinVO; import com.cloud.dc.DataCenter; -import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InvalidParameterValueException; @@ -78,66 +75,6 @@ import com.cloud.utils.exception.ExecutionException; @Local(value = { UserVmManager.class, UserVmService.class }) public class MockUserVmManagerImpl extends ManagerBase implements UserVmManager, UserVmService { - @Override - public UserVmVO findByName(String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - public UserVmVO findById(long id) { - // TODO Auto-generated method stub - return null; - } - - @Override - public UserVmVO persist(UserVmVO vm) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean finalizeDeployment(Commands cmds, VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean finalizeStart(VirtualMachineProfile profile, long hostId, Commands cmds, ReservationContext context) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean finalizeCommandsOnStart(Commands cmds, VirtualMachineProfile profile) { - // TODO Auto-generated method stub - return false; - } - - @Override - public void finalizeStop(VirtualMachineProfile profile, StopAnswer answer) { - // TODO Auto-generated method stub - - } - - @Override - public void finalizeExpunge(UserVmVO vm) { - // TODO Auto-generated method stub - - } - - @Override - public Long convertToId(String vmName) { - // TODO Auto-generated method stub - return null; - } - @Override public List getVirtualMachines(long hostId) { // TODO Auto-generated method stub @@ -416,23 +353,9 @@ public class MockUserVmManagerImpl extends ManagerBase implements UserVmManager, return null; } - @Override - public void prepareStop(VirtualMachineProfile profile) { - // TODO Auto-generated method stub - - } - @Override public UserVm resetVMSSHKey(ResetVMSSHKeyCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException { // TODO Auto-generated method stub return null; } - - @Override - public void vmWorkStart(VmWork work) { - } - - @Override - public void vmWorkStop(VmWork work) { - } } diff --git a/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java b/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java index 8a5e3aeef62..b41e58c66b5 100644 --- a/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java +++ b/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java @@ -310,10 +310,10 @@ public class VirtualMachineManagerImplTest { doNothing().when(_work).setStep(ItWorkVO.Step.Done); // Mock the vm guru and the user vm object that gets returned. - _vmMgr._vmGurus = new HashMap>(); + _vmMgr._vmGurus = new HashMap(); UserVmManagerImpl userVmManager = mock(UserVmManagerImpl.class); _vmMgr.registerGuru(VirtualMachine.Type.User, userVmManager); - when(userVmManager.findById(anyLong())).thenReturn(_vmMock); +// when(userVmManager.findById(anyLong())).thenReturn(_vmMock); // Mock the iteration over all the volumes of an instance. Iterator volumeIterator = mock(Iterator.class); diff --git a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java index 869a8be0443..162f34f23bf 100644 --- a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java +++ b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java @@ -184,20 +184,19 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage } @Override - public void registerGuru(Type type, - VirtualMachineGuru guru) { + public void registerGuru(Type type, VirtualMachineGuru guru) { // TODO Auto-generated method stub } @Override - public Collection> getRegisteredGurus() { + public Collection getRegisteredGurus() { // TODO Auto-generated method stub return null; } @Override - public VirtualMachineGuru getVmGuru(T vm) { + public VirtualMachineGuru getVmGuru(VirtualMachine vm) { // TODO Auto-generated method stub return null; }