From d43717eef825838ad7b51b365dad329e9a127298 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Fri, 14 Jan 2011 10:47:20 -0800 Subject: [PATCH] merge changes --- api/src/com/cloud/vm/VirtualMachine.java | 9 +- build/package.xml | 1 + core/src/com/cloud/vm/VMInstanceVO.java | 2 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 106 ++++++++--------- .../network/ovs/OvsNetworkManagerImpl.java | 2 - .../security/SecurityGroupManagerImpl.java | 1 - .../com/cloud/storage/StorageManagerImpl.java | 3 +- .../SecondaryStorageManagerImpl.java | 112 +++++++++--------- .../src/com/cloud/vm/UserVmManagerImpl.java | 3 +- .../cloud/vm/VirtualMachineManagerImpl.java | 3 +- 10 files changed, 118 insertions(+), 124 deletions(-) diff --git a/api/src/com/cloud/vm/VirtualMachine.java b/api/src/com/cloud/vm/VirtualMachine.java index de435368305..80bea781a02 100755 --- a/api/src/com/cloud/vm/VirtualMachine.java +++ b/api/src/com/cloud/vm/VirtualMachine.java @@ -32,7 +32,6 @@ import com.cloud.utils.fsm.StateMachine; */ public interface VirtualMachine extends RunningOn, ControlledEntity { public enum State implements FiniteState { - Creating(true, "VM is being created"), Starting(true, "VM is being started. At this state, you should find host id filled which means it's being started on that host."), Running(false, "VM is running. host id has the host that it is running on."), Stopping(true, "VM is being stopped. host id has the host that it is being stopped on."), @@ -85,9 +84,9 @@ public interface VirtualMachine extends RunningOn, ControlledEntity { protected static final StateMachine s_fsm = new StateMachine(); static { - s_fsm.addTransition(null, VirtualMachine.Event.CreateRequested, State.Creating); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationSucceeded, State.Stopped); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationFailed, State.Error); +// s_fsm.addTransition(null, VirtualMachine.Event.CreateRequested, State.Creating); +// s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationSucceeded, State.Stopped); +// s_fsm.addTransition(State.Creating, VirtualMachine.Event.OperationFailed, State.Error); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StartRequested, State.Starting); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.DestroyRequested, State.Destroyed); s_fsm.addTransition(State.Error, VirtualMachine.Event.DestroyRequested, State.Destroyed); @@ -102,7 +101,7 @@ public interface VirtualMachine extends RunningOn, ControlledEntity { s_fsm.addTransition(State.Starting, VirtualMachine.Event.AgentReportShutdowned, State.Stopped); s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.RecoveryRequested, State.Stopped); s_fsm.addTransition(State.Destroyed, VirtualMachine.Event.ExpungeOperation, State.Expunging); - s_fsm.addTransition(State.Creating, VirtualMachine.Event.MigrationRequested, State.Destroyed); +// s_fsm.addTransition(State.Creating, VirtualMachine.Event.MigrationRequested, State.Destroyed); s_fsm.addTransition(State.Running, VirtualMachine.Event.MigrationRequested, State.Migrating); s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportRunning, State.Running); s_fsm.addTransition(State.Running, VirtualMachine.Event.AgentReportStopped, State.Stopped); diff --git a/build/package.xml b/build/package.xml index 87f5e1d7484..bbcf61fc0a5 100755 --- a/build/package.xml +++ b/build/package.xml @@ -156,6 +156,7 @@ + diff --git a/core/src/com/cloud/vm/VMInstanceVO.java b/core/src/com/cloud/vm/VMInstanceVO.java index bd22f50feb2..da61416df3c 100644 --- a/core/src/com/cloud/vm/VMInstanceVO.java +++ b/core/src/com/cloud/vm/VMInstanceVO.java @@ -166,7 +166,7 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject l = _consoleProxyDao.getProxyListInStates(dataCenterId, State.Creating, State.Starting, State.Stopped, State.Migrating); + List l = _consoleProxyDao.getProxyListInStates(dataCenterId, State.Starting, State.Stopped, State.Migrating); if (l != null && l.size() > 0) { return l.get(0); } @@ -1047,56 +1047,56 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx } } - private void checkPendingProxyVMs() { - // drive state to change away from transient states - List l = _consoleProxyDao.getProxyListInStates(State.Creating); - if (l != null && l.size() > 0) { - for (ConsoleProxyVO proxy : l) { - if (proxy.getLastUpdateTime() == null - || (proxy.getLastUpdateTime() != null && System.currentTimeMillis() - proxy.getLastUpdateTime().getTime() > 60000)) { - try { - ConsoleProxyVO readyProxy = null; - if (_allocProxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { - try { - readyProxy = allocProxyStorage(proxy.getDataCenterId(), proxy.getId()); - } finally { - _allocProxyLock.unlock(); - } - - if (readyProxy != null) { - GlobalLock proxyLock = GlobalLock.getInternLock(getProxyLockName(readyProxy.getId())); - try { - if (proxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { - try { - readyProxy = start(readyProxy.getId()); - } finally { - proxyLock.unlock(); - } - } else { - if (s_logger.isInfoEnabled()) { - s_logger.info("Unable to acquire synchronization lock to start console proxy : " + readyProxy.getName()); - } - } - } finally { - proxyLock.releaseRef(); - } - } - } else { - if (s_logger.isInfoEnabled()) { - s_logger.info("Unable to acquire synchronization lock to allocate proxy storage, wait for next turn"); - } - } - } catch (StorageUnavailableException e) { - s_logger.warn("Storage unavailable", e); - } catch (InsufficientCapacityException e) { - s_logger.warn("insuffiient capacity", e); - } catch (ResourceUnavailableException e) { - s_logger.debug("Concurrent operation: " + e.getMessage()); - } - } - } - } - } +// private void checkPendingProxyVMs() { +// // drive state to change away from transient states +// List l = _consoleProxyDao.getProxyListInStates(State.Creating); +// if (l != null && l.size() > 0) { +// for (ConsoleProxyVO proxy : l) { +// if (proxy.getLastUpdateTime() == null +// || (proxy.getLastUpdateTime() != null && System.currentTimeMillis() - proxy.getLastUpdateTime().getTime() > 60000)) { +// try { +// ConsoleProxyVO readyProxy = null; +// if (_allocProxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { +// try { +// readyProxy = allocProxyStorage(proxy.getDataCenterId(), proxy.getId()); +// } finally { +// _allocProxyLock.unlock(); +// } +// +// if (readyProxy != null) { +// GlobalLock proxyLock = GlobalLock.getInternLock(getProxyLockName(readyProxy.getId())); +// try { +// if (proxyLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { +// try { +// readyProxy = start(readyProxy.getId()); +// } finally { +// proxyLock.unlock(); +// } +// } else { +// if (s_logger.isInfoEnabled()) { +// s_logger.info("Unable to acquire synchronization lock to start console proxy : " + readyProxy.getName()); +// } +// } +// } finally { +// proxyLock.releaseRef(); +// } +// } +// } else { +// if (s_logger.isInfoEnabled()) { +// s_logger.info("Unable to acquire synchronization lock to allocate proxy storage, wait for next turn"); +// } +// } +// } catch (StorageUnavailableException e) { +// s_logger.warn("Storage unavailable", e); +// } catch (InsufficientCapacityException e) { +// s_logger.warn("insuffiient capacity", e); +// } catch (ResourceUnavailableException e) { +// s_logger.debug("Concurrent operation: " + e.getMessage()); +// } +// } +// } +// } +// } private Runnable getCapacityScanTask() { return new Runnable() { @@ -1144,7 +1144,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx } try { - checkPendingProxyVMs(); + // checkPendingProxyVMs(); // scan default data center first long defaultId = 0; diff --git a/server/src/com/cloud/network/ovs/OvsNetworkManagerImpl.java b/server/src/com/cloud/network/ovs/OvsNetworkManagerImpl.java index 93ac42d5b33..399fbe0964b 100644 --- a/server/src/com/cloud/network/ovs/OvsNetworkManagerImpl.java +++ b/server/src/com/cloud/network/ovs/OvsNetworkManagerImpl.java @@ -12,7 +12,6 @@ import java.util.concurrent.TimeUnit; import javax.ejb.Local; import javax.naming.ConfigurationException; -import javax.persistence.EntityExistsException; import org.apache.log4j.Logger; @@ -617,7 +616,6 @@ public class OvsNetworkManagerImpl implements OvsNetworkManager { } switch (vmState) { - case Creating: case Destroyed: case Error: case Migrating: diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java index 4270d31d860..a3d13946595 100644 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -248,7 +248,6 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG return; } switch (vmState) { - case Creating: case Destroyed: case Error: case Migrating: diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index be39183397e..b19cdbf969e 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -89,7 +89,6 @@ import com.cloud.dc.dao.HostPodDao; import com.cloud.deploy.DeployDestination; import com.cloud.domain.Domain; import com.cloud.domain.dao.DomainDao; -import com.cloud.event.ActionEvent; import com.cloud.event.Event; import com.cloud.event.EventTypes; import com.cloud.event.EventUtils; @@ -438,7 +437,7 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag SearchCriteria volumeSC = volumeSB.create(); volumeSC.setParameters("poolId", storagePool.getId()); - volumeSC.setJoinParameters("activeVmSB", "state", new Object[] {State.Creating, State.Starting, State.Running, State.Stopping, State.Migrating}); + volumeSC.setJoinParameters("activeVmSB", "state", State.Starting, State.Running, State.Stopping, State.Migrating); List volumes = _volsDao.search(volumeSC, null); if (volumes.size() > 0) { diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 093ec84da1d..6bd2789e118 100644 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -337,7 +337,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V s_logger.warn("No storage hosts found in zone " + zoneId + " , skip programming firewall rules"); return true; } - List alreadyRunning = _secStorageVmDao.getSecStorageVmListInStates( State.Running, State.Migrating, State.Creating, State.Starting); + List alreadyRunning = _secStorageVmDao.getSecStorageVmListInStates( State.Running, State.Migrating, State.Starting); String copyPort = Integer.toString(TemplateConstants.DEFAULT_TMPLT_COPY_PORT); SecStorageFirewallCfgCommand cpc = new SecStorageFirewallCfgCommand(); @@ -525,58 +525,58 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V - private void checkPendingSecStorageVMs() { - // drive state to change away from transient states - List l = _secStorageVmDao.getSecStorageVmListInStates(State.Creating); - if (l != null && l.size() > 0) { - for (SecondaryStorageVmVO secStorageVm : l) { - if (secStorageVm.getLastUpdateTime() == null || - (secStorageVm.getLastUpdateTime() != null && System.currentTimeMillis() - secStorageVm.getLastUpdateTime().getTime() > 60000)) { - try { - SecondaryStorageVmVO readysecStorageVm = null; - if (_allocLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { - try { - readysecStorageVm = allocSecStorageVmStorage(secStorageVm.getDataCenterId(), secStorageVm.getId()); - } finally { - _allocLock.unlock(); - } - - if (readysecStorageVm != null) { - GlobalLock secStorageVmLock = GlobalLock.getInternLock(getSecStorageVmLockName(readysecStorageVm.getId())); - try { - if (secStorageVmLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { - try { - readysecStorageVm = start(readysecStorageVm.getId()); - } finally { - secStorageVmLock.unlock(); - } - } else { - if (s_logger.isInfoEnabled()) { - s_logger.info("Unable to acquire synchronization lock to start secondary storage vm : " + readysecStorageVm.getName()); - } - } - } finally { - secStorageVmLock.releaseRef(); - } - } - } else { - if (s_logger.isInfoEnabled()) { - s_logger.info("Unable to acquire synchronization lock to allocate secondary storage vm storage, wait for next turn"); - } - } - } catch (StorageUnavailableException e) { - s_logger.warn("Storage unavailable", e); - } catch (InsufficientCapacityException e) { - s_logger.warn("insuffiient capacity", e); - } catch (ConcurrentOperationException e) { - s_logger.debug("Concurrent operation: " + e.getMessage()); - } catch (ResourceUnavailableException e) { - s_logger.debug("Concurrent operation: " + e.getMessage()); - } - } - } - } - } +// private void checkPendingSecStorageVMs() { +// // drive state to change away from transient states +// List l = _secStorageVmDao.getSecStorageVmListInStates(State.Creating); +// if (l != null && l.size() > 0) { +// for (SecondaryStorageVmVO secStorageVm : l) { +// if (secStorageVm.getLastUpdateTime() == null || +// (secStorageVm.getLastUpdateTime() != null && System.currentTimeMillis() - secStorageVm.getLastUpdateTime().getTime() > 60000)) { +// try { +// SecondaryStorageVmVO readysecStorageVm = null; +// if (_allocLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { +// try { +// readysecStorageVm = allocSecStorageVmStorage(secStorageVm.getDataCenterId(), secStorageVm.getId()); +// } finally { +// _allocLock.unlock(); +// } +// +// if (readysecStorageVm != null) { +// GlobalLock secStorageVmLock = GlobalLock.getInternLock(getSecStorageVmLockName(readysecStorageVm.getId())); +// try { +// if (secStorageVmLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) { +// try { +// readysecStorageVm = start(readysecStorageVm.getId()); +// } finally { +// secStorageVmLock.unlock(); +// } +// } else { +// if (s_logger.isInfoEnabled()) { +// s_logger.info("Unable to acquire synchronization lock to start secondary storage vm : " + readysecStorageVm.getName()); +// } +// } +// } finally { +// secStorageVmLock.releaseRef(); +// } +// } +// } else { +// if (s_logger.isInfoEnabled()) { +// s_logger.info("Unable to acquire synchronization lock to allocate secondary storage vm storage, wait for next turn"); +// } +// } +// } catch (StorageUnavailableException e) { +// s_logger.warn("Storage unavailable", e); +// } catch (InsufficientCapacityException e) { +// s_logger.warn("insuffiient capacity", e); +// } catch (ConcurrentOperationException e) { +// s_logger.debug("Concurrent operation: " + e.getMessage()); +// } catch (ResourceUnavailableException e) { +// s_logger.debug("Concurrent operation: " + e.getMessage()); +// } +// } +// } +// } +// } private Runnable getCapacityScanTask() { return new Runnable() { @@ -616,14 +616,14 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V } try { - checkPendingSecStorageVMs(); + //checkPendingSecStorageVMs(); List datacenters = _dcDao.listAllIncludingRemoved(); for (DataCenterVO dc: datacenters){ if(isZoneReady(zoneHostInfoMap, dc.getId())) { - List alreadyRunning = _secStorageVmDao.getSecStorageVmListInStates(dc.getId(), State.Running, State.Migrating, State.Creating, State.Starting); + List alreadyRunning = _secStorageVmDao.getSecStorageVmListInStates(dc.getId(), State.Running, State.Migrating, State.Starting); List stopped = _secStorageVmDao.getSecStorageVmListInStates(dc.getId(), State.Stopped, State.Stopping); if (alreadyRunning.size() == 0) { if (stopped.size() == 0) { @@ -693,7 +693,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V public SecondaryStorageVmVO assignSecStorageVmFromStoppedPool(long dataCenterId) { List l = _secStorageVmDao.getSecStorageVmListInStates( - dataCenterId, State.Creating, State.Starting, State.Stopped, + dataCenterId, State.Starting, State.Stopped, State.Migrating); if (l != null && l.size() > 0) { return l.get(0); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 9144dce6b46..5ebc61a8c38 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -31,7 +31,6 @@ import java.util.concurrent.TimeUnit; import javax.ejb.Local; import javax.naming.ConfigurationException; -import javax.naming.InsufficientResourcesException; import org.apache.log4j.Logger; @@ -1207,7 +1206,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager return true; } - if (state == State.Creating || state == State.Destroyed || state == State.Expunging || state == State.Error) { + if (state == State.Destroyed || state == State.Expunging || state == State.Error) { s_logger.warn("Stopped called on " + vm.toString() + " but the state is " + state.toString()); return true; } diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index caf0df7e2a2..1677ece0a80 100644 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -223,7 +223,6 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager { _storageMgr.allocateRawVolume(VolumeType.DATADISK, "DATA-" + vm.getId(), offering.first(), offering.second(), vm, owner); } - stateTransitTo(vm, Event.OperationSucceeded, null); txn.commit(); if (s_logger.isDebugEnabled()) { s_logger.debug("Allocation completed for VM: " + vm); @@ -676,7 +675,7 @@ public class VirtualMachineManagerImpl implements VirtualMachineManager { return true; } - if (state == State.Creating || state == State.Destroyed || state == State.Expunging || state == State.Error) { + if (state == State.Destroyed || state == State.Expunging || state == State.Error) { s_logger.debug("Stopped called on " + vm + " but the state is " + state); return true; }