Removed the generics from VirtualMachineGurur

This commit is contained in:
Alex Huang 2013-05-19 09:12:20 -07:00
parent e33bc08a8b
commit 5145c3cbf1
14 changed files with 221 additions and 339 deletions

View File

@ -25,17 +25,7 @@ import com.cloud.exception.ResourceUnavailableException;
* A VirtualMachineGuru knows how to process a certain type of virtual machine.
*
*/
public interface VirtualMachineGuru<T extends VirtualMachine> {
/**
* 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<T extends VirtualMachine> {
*/
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

View File

@ -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 {
<T extends VMInstanceVO> boolean expunge(T vm, User caller, Account account) throws ResourceUnavailableException;
<T extends VMInstanceVO> void registerGuru(VirtualMachine.Type type, VirtualMachineGuru<T> guru);
void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru);
Collection<VirtualMachineGuru<? extends VMInstanceVO>> getRegisteredGurus();
// FIXME: This method is added by VirtualMachinePowerStateSyncImpl
Collection<VirtualMachineGuru> getRegisteredGurus();
<T extends VMInstanceVO> VirtualMachineGuru<T> 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 extends VMInstanceVO> T processVmStartWork(T vm, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account, DeploymentPlan planToDeploy)
throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException;
<T extends VMInstanceVO> boolean processVmStopWork(T vm, boolean forced, User user, Account account)
<T extends VMInstanceVO> boolean processVmStopWork(T vm, boolean forced, User user, Account account)
throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException;
}

View File

@ -141,7 +141,7 @@ import com.cloud.vm.dao.NicDao;
@Component
@Local(value = { ElasticLoadBalancerManager.class })
public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
ElasticLoadBalancerManager, VirtualMachineGuru<DomainRouterVO> {
ElasticLoadBalancerManager, VirtualMachineGuru {
private static final Logger s_logger = Logger
.getLogger(ElasticLoadBalancerManagerImpl.class);
@ -770,24 +770,24 @@ ElasticLoadBalancerManager, VirtualMachineGuru<DomainRouterVO> {
}
}
@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<DomainRouterVO> {
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<DomainRouterVO> {
}
@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) {

View File

@ -164,7 +164,7 @@ import com.cloud.vm.dao.VMInstanceDao;
//
@Local(value = { ConsoleProxyManager.class, ConsoleProxyService.class })
public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxyManager,
VirtualMachineGuru<ConsoleProxyVO>, SystemVmLoadScanHandler<Long>, ResourceStateAdapter {
VirtualMachineGuru, SystemVmLoadScanHandler<Long>, 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());

View File

@ -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<DomainRouterVO>, 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)

View File

@ -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<SecondaryStorageVmVO>, SystemVmLoadScanHandler<Long>, ResourceStateAdapter {
public class SecondaryStorageManagerImpl extends ManagerBase implements SecondaryStorageVmManager, VirtualMachineGuru, SystemVmLoadScanHandler<Long>, 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());

View File

@ -35,7 +35,7 @@ import com.cloud.utils.Pair;
*
*
*/
public interface UserVmManager extends VirtualMachineGuru<UserVmVO>, UserVmService{
public interface UserVmManager extends UserVmService {
static final int MAX_USER_DATA_LENGTH_BYTES = 2048;
/**

View File

@ -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)

View File

@ -306,7 +306,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
@Inject
DeploymentPlanningManager _dpMgr;
Map<VirtualMachine.Type, VirtualMachineGuru<? extends VMInstanceVO>> _vmGurus = new HashMap<VirtualMachine.Type, VirtualMachineGuru<? extends VMInstanceVO>>();
Map<VirtualMachine.Type, VirtualMachineGuru> _vmGurus = new HashMap<VirtualMachine.Type, VirtualMachineGuru>();
protected StateMachine2<State, VirtualMachine.Event, VirtualMachine> _stateMachine;
ScheduledExecutorService _executor = null;
@ -322,23 +322,22 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
protected boolean _forceStop;
@Override
public <T extends VMInstanceVO> void registerGuru(VirtualMachine.Type type, VirtualMachineGuru<T> guru) {
public void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru) {
synchronized (_vmGurus) {
_vmGurus.put(type, guru);
}
}
@Override
public Collection<VirtualMachineGuru<? extends VMInstanceVO>> getRegisteredGurus() {
public Collection<VirtualMachineGuru> getRegisteredGurus() {
synchronized(_vmGurus) {
return _vmGurus.values();
}
}
@Override
@SuppressWarnings("unchecked")
public <T extends VMInstanceVO> VirtualMachineGuru<T> getVmGuru(T vm) {
return (VirtualMachineGuru<T>) _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<T> guru = (VirtualMachineGuru<T>) _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<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT);
volumeMgr.cleanupVolumes(vm.getId());
VirtualMachineGuru<T> 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 <T extends VMInstanceVO> Ternary<T, ReservationContext, VmWorkJobVO> changeToStartState(VirtualMachineGuru<T> vmGuru, T vm, User caller, Account account)
protected Ternary<VMInstanceVO, ReservationContext, VmWorkJobVO> changeToStartState(VirtualMachineGuru vmGuru, VMInstanceVO vm, User caller, Account account)
throws ConcurrentOperationException {
long vmId = vm.getId();
Ternary<T, ReservationContext, VmWorkJobVO> result = null;
Ternary<VMInstanceVO, ReservationContext, VmWorkJobVO> 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<T, ReservationContext, VmWorkJobVO>(vmGuru.findById(vmId), context, work);
result = new Ternary<VMInstanceVO, ReservationContext, VmWorkJobVO>(_vmDao.findById(vm.getId()), context, work);
txn.commit();
return result;
}
@ -812,10 +810,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
@Override
public <T extends VMInstanceVO> T processVmStartWork(T vm, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account, DeploymentPlan planToDeploy)
throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
VirtualMachineGuru<T> vmGuru = getVmGuru(vm);
vm = vmGuru.findById(vm.getId());
VirtualMachineGuru vmGuru = getVmGuru(vm);
VMInstanceVO vm2 = _vmDao.findById(vm.getId());
Ternary<T, ReservationContext, VmWorkJobVO> start = changeToStartState(vmGuru, vm, caller, account);
Ternary<VMInstanceVO, ReservationContext, VmWorkJobVO> 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 <T extends VMInstanceVO> boolean sendStop(VirtualMachineGuru<T> 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 <T extends VMInstanceVO> boolean cleanup(VirtualMachineGuru<T> 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<T> 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 extends VMInstanceVO> T storageMigration(T vm, StoragePool destPool) {
VirtualMachineGuru<T> 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<T> 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<? extends VMInstanceVO> 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<? extends VMInstanceVO> 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<VirtualMachineGuru<? extends VMInstanceVO>> vmGurus = _vmGurus.values();
Collection<VirtualMachineGuru> vmGurus = _vmGurus.values();
boolean is_alien_vm = true;
long alien_vm_count = -1;
for (Map.Entry<String, Pair<String, State>> entry : newStates.entrySet()) {
is_alien_vm = true;
for (VirtualMachineGuru<? extends VMInstanceVO> 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<VirtualMachineGuru<? extends VMInstanceVO>> vmGurus = _vmGurus.values();
Collection<VirtualMachineGuru> vmGurus = _vmGurus.values();
for (Map.Entry<String, State> entry : states.entrySet()) {
for (VirtualMachineGuru<? extends VMInstanceVO> 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<VMInstanceVO> guru;
public VirtualMachineGuru guru;
@SuppressWarnings("unchecked")
public AgentVmInfo(String name, VirtualMachineGuru<? extends VMInstanceVO> 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<VMInstanceVO>) guru;
this.guru = guru;
hostUuid = host;
}
public AgentVmInfo(String name, VirtualMachineGuru<? extends VMInstanceVO> 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<VMInstanceVO> 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<VMInstanceVO> 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<VMInstanceVO> vmGuru = getVmGuru(vmVO);
VirtualMachineGuru vmGuru = getVmGuru(vmVO);
HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vmProfile.getVirtualMachine().getHypervisorType());
VirtualMachineTO vmTO = hvGuru.implement(vmProfile);

View File

@ -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<Long, VirtualMachine.PowerState> convertToInfos(Map<String, HostVmStateReportEntry> states) {
private Map<Long, VirtualMachine.PowerState> convertToInfos(Map<String, HostVmStateReportEntry> states) {
final HashMap<Long, VirtualMachine.PowerState> map = new HashMap<Long, VirtualMachine.PowerState>();
if (states == null) {
return map;
@ -120,20 +120,21 @@ public class VirtualMachinePowerStateSyncImpl implements VirtualMachinePowerStat
}
private VMInstanceVO findVM(String vmName) {
Collection<VirtualMachineGuru<? extends VMInstanceVO>> vmGurus = _vmMgr.getRegisteredGurus();
for (VirtualMachineGuru<? extends VMInstanceVO> 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<VirtualMachineGuru> 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;
}
}

View File

@ -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<VMInstanceVO> 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();

View File

@ -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<? extends UserVm> 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) {
}
}

View File

@ -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<VirtualMachine.Type, VirtualMachineGuru<? extends VMInstanceVO>>();
_vmMgr._vmGurus = new HashMap<VirtualMachine.Type, VirtualMachineGuru>();
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<VolumeVO> volumeIterator = mock(Iterator.class);

View File

@ -184,20 +184,19 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage
}
@Override
public <T extends VMInstanceVO> void registerGuru(Type type,
VirtualMachineGuru<T> guru) {
public void registerGuru(Type type, VirtualMachineGuru guru) {
// TODO Auto-generated method stub
}
@Override
public Collection<VirtualMachineGuru<? extends VMInstanceVO>> getRegisteredGurus() {
public Collection<VirtualMachineGuru> getRegisteredGurus() {
// TODO Auto-generated method stub
return null;
}
@Override
public <T extends VMInstanceVO> VirtualMachineGuru<T> getVmGuru(T vm) {
public VirtualMachineGuru getVmGuru(VirtualMachine vm) {
// TODO Auto-generated method stub
return null;
}