Updated Branches: refs/heads/vmsync 967c82226 -> 58112a9e1
Add VM power state, use record event info to represent user/system intention for sync process to use Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/58112a9e Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/58112a9e Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/58112a9e Branch: refs/heads/vmsync Commit: 58112a9e12db3b2964aa62d39e473fbf3274c058 Parents: 967c822 Author: Kelven Yang <[email protected]> Authored: Fri Apr 12 18:53:24 2013 -0700 Committer: Kelven Yang <[email protected]> Committed: Fri Apr 12 18:53:24 2013 -0700 ---------------------------------------------------------------------- api/src/com/cloud/vm/VirtualMachine.java | 7 ++ core/src/com/cloud/vm/VMInstanceVO.java | 57 ++++++++++++++- .../entity/api/DataCenterResourceManagerImpl.java | 8 +- .../entity/api/db/dao/EngineClusterDaoImpl.java | 2 +- .../entity/api/db/dao/EngineDataCenterDaoImpl.java | 2 +- .../entity/api/db/dao/EngineHostDaoImpl.java | 2 +- .../entity/api/db/dao/EngineHostPodDaoImpl.java | 2 +- .../storage/image/store/TemplateObject.java | 2 +- .../snapshot/SnapshotStateMachineManagerImpl.java | 2 +- .../datastore/ObjectInDataStoreManagerImpl.java | 4 +- .../storage/db/ObjectInDataStoreDaoImpl.java | 2 +- .../volume/db/TemplatePrimaryDataStoreDaoImpl.java | 2 +- .../storage/volume/db/VolumeDao2Impl.java | 2 +- .../cloudstack/storage/volume/VolumeObject.java | 2 +- .../baremetal/manager/BaremetalManagerImpl.java | 4 +- .../cloud/network/element/MidoNetElementTest.java | 1 + .../com/cloud/agent/manager/AgentManagerImpl.java | 2 +- .../com/cloud/capacity/CapacityManagerImpl.java | 4 +- server/src/com/cloud/host/dao/HostDaoImpl.java | 2 +- .../src/com/cloud/network/NetworkManagerImpl.java | 2 +- .../com/cloud/network/NetworkStateListener.java | 4 +- .../src/com/cloud/network/dao/NetworkDaoImpl.java | 2 +- .../network/security/SecurityGroupManagerImpl.java | 4 +- .../src/com/cloud/storage/VolumeManagerImpl.java | 2 +- .../src/com/cloud/storage/dao/SnapshotDaoImpl.java | 2 +- .../com/cloud/storage/dao/VMTemplateDaoImpl.java | 2 +- .../cloud/storage/dao/VMTemplateHostDaoImpl.java | 2 +- .../cloud/storage/dao/VMTemplatePoolDaoImpl.java | 2 +- .../src/com/cloud/storage/dao/VolumeDaoImpl.java | 2 +- .../com/cloud/storage/dao/VolumeHostDaoImpl.java | 2 +- .../storage/listener/SnapshotStateListener.java | 4 +- .../storage/listener/VolumeStateListener.java | 4 +- server/src/com/cloud/vm/UserVmStateListener.java | 4 +- .../com/cloud/vm/VirtualMachineManagerImpl.java | 4 +- server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java | 4 +- .../cloud/vm/snapshot/VMSnapshotManagerImpl.java | 2 +- .../cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java | 2 +- .../test/com/cloud/vpc/dao/MockNetworkDaoImpl.java | 2 +- setup/db/db/schema-410to420.sql | 5 ++ utils/src/com/cloud/utils/fsm/StateDao.java | 2 +- utils/src/com/cloud/utils/fsm/StateListener.java | 4 +- utils/src/com/cloud/utils/fsm/StateMachine2.java | 8 +- 42 files changed, 125 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/api/src/com/cloud/vm/VirtualMachine.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/vm/VirtualMachine.java b/api/src/com/cloud/vm/VirtualMachine.java index 8f807d4..62d5eeb 100755 --- a/api/src/com/cloud/vm/VirtualMachine.java +++ b/api/src/com/cloud/vm/VirtualMachine.java @@ -159,6 +159,7 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I } public enum Event { + OperationNop, CreateRequested, StartRequested, StopRequested, @@ -202,6 +203,12 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, Identity, I return false; } } + + public enum PowerState { + PowerUnknown, + PowerOn, + PowerOff, + } /** * @return The name of the vm instance used by the cloud stack to uniquely http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/core/src/com/cloud/vm/VMInstanceVO.java ---------------------------------------------------------------------- diff --git a/core/src/com/cloud/vm/VMInstanceVO.java b/core/src/com/cloud/vm/VMInstanceVO.java index 5ec2712..adf6445 100644 --- a/core/src/com/cloud/vm/VMInstanceVO.java +++ b/core/src/com/cloud/vm/VMInstanceVO.java @@ -37,6 +37,7 @@ import javax.persistence.TemporalType; import javax.persistence.Transient; import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.utils.DateUtil; import com.cloud.utils.db.Encrypt; import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.StateMachine; @@ -95,6 +96,21 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi @Column(name="last_host_id", updatable=true, nullable=true) protected Long lastHostId; + @Enumerated(value=EnumType.STRING) + @Column(name="last_event", updatable=true) + protected VirtualMachine.Event lastEvent; + + @Column(name="last_event_args", updatable=true, nullable=true) + protected String lastEventArgs; + + @Enumerated(value=EnumType.STRING) + @Column(name="power_state", updatable=true) + protected PowerState powerState; + + @Column(name="power_state_update_time", updatable = true, nullable=false) + @Temporal(value=TemporalType.TIMESTAMP) + protected Date powerStateUpdateTime; + @Column(name="pod_id", updatable=true, nullable=false) protected Long podIdToDeployIn; @@ -184,6 +200,10 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi this.serviceOfferingId = serviceOfferingId; this.hypervisorType = hypervisorType; this.limitCpuUse = false; + + this.lastEvent = Event.OperationNop; + this.powerState = PowerState.PowerUnknown; + this.powerStateUpdateTime = DateUtil.currentGMTTime(); } public VMInstanceVO(long id, @@ -201,6 +221,10 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi this(id, serviceOfferingId, name, instanceName, type, vmTemplateId, hypervisorType, guestOSId, domainId, accountId, haEnabled); this.limitCpuUse = limitResourceUse; this.diskOfferingId = diskOfferingId; + + this.lastEvent = Event.OperationNop; + this.powerState = PowerState.PowerUnknown; + this.powerStateUpdateTime = DateUtil.currentGMTTime(); } protected VMInstanceVO() { @@ -478,5 +502,36 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, Vi public Long getDiskOfferingId() { return diskOfferingId; } - + + public VirtualMachine.Event getLastEvent() { + return lastEvent; + } + + public void setLastEvent(VirtualMachine.Event event) { + this.lastEvent = event; + } + + public String getLastEventArgs() { + return this.lastEventArgs; + } + + public void setLastEventArgs(String eventArgs) { + this.lastEventArgs = eventArgs; + } + + public VirtualMachine.PowerState getPowerState() { + return this.powerState; + } + + public void setPowerState(PowerState powerState) { + this.powerState = powerState; + } + + public Date getPowerStateUpdateTime() { + return this.powerStateUpdateTime; + } + + public void setPowerStateUpdateTime(Date updateTime) { + this.powerStateUpdateTime = updateTime; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/DataCenterResourceManagerImpl.java ---------------------------------------------------------------------- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/DataCenterResourceManagerImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/DataCenterResourceManagerImpl.java index c267e55..d79b10f 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/DataCenterResourceManagerImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/DataCenterResourceManagerImpl.java @@ -72,13 +72,13 @@ public class DataCenterResourceManagerImpl implements DataCenterResourceManager public boolean changeState(DataCenterResourceEntity entity, Event event) throws NoTransitionException { if(entity instanceof ZoneEntity){ - return _stateMachine.transitTo(entity, event, null, _dataCenterDao); + return _stateMachine.transitTo(entity, event, null, null, _dataCenterDao); }else if(entity instanceof PodEntity){ - return _stateMachine.transitTo(entity, event, null, _podDao); + return _stateMachine.transitTo(entity, event, null, null, _podDao); }else if(entity instanceof ClusterEntity){ - return _stateMachine.transitTo(entity, event, null, _clusterDao); + return _stateMachine.transitTo(entity, event, null, null, _clusterDao); }else if(entity instanceof HostEntity){ - return _stateMachine.transitTo(entity, event, null, _hostDao); + return _stateMachine.transitTo(entity, event, null, null, _hostDao); } return false; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineClusterDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineClusterDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineClusterDaoImpl.java index 1f0bd4d..efc6056 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineClusterDaoImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineClusterDaoImpl.java @@ -253,7 +253,7 @@ public class EngineClusterDaoImpl extends GenericDaoBase<EngineClusterVO, Long> } @Override - public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity clusterEntity, Object data) { + public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity clusterEntity, String eventArgs, Object data) { EngineClusterVO vo = findById(clusterEntity.getId()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineDataCenterDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineDataCenterDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineDataCenterDaoImpl.java index f99bc6c..d03739b 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineDataCenterDaoImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineDataCenterDaoImpl.java @@ -291,7 +291,7 @@ public class EngineDataCenterDaoImpl extends GenericDaoBase<EngineDataCenterVO, @Override - public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity zoneEntity, Object data) { + public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity zoneEntity, String eventArgs, Object data) { EngineDataCenterVO vo = findById(zoneEntity.getId()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java index 3c34023..bb8bd4d 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostDaoImpl.java @@ -645,7 +645,7 @@ public class EngineHostDaoImpl extends GenericDaoBase<EngineHostVO, Long> implem @Override - public boolean updateState(State currentState, DataCenterResourceEntity.State.Event event, State nextState, DataCenterResourceEntity hostEntity, Object data) { + public boolean updateState(State currentState, DataCenterResourceEntity.State.Event event, State nextState, DataCenterResourceEntity hostEntity, String eventArgs, Object data) { EngineHostVO vo = findById(hostEntity.getId()); Date oldUpdatedTime = vo.getLastUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostPodDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostPodDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostPodDaoImpl.java index fee083a..c56d896 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostPodDaoImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/EngineHostPodDaoImpl.java @@ -148,7 +148,7 @@ public class EngineHostPodDaoImpl extends GenericDaoBase<EngineHostPodVO, Long> @Override - public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity podEntity, Object data) { + public boolean updateState(State currentState, Event event, State nextState, DataCenterResourceEntity podEntity, String eventArgs, Object data) { EngineHostPodVO vo = findById(podEntity.getId()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java ---------------------------------------------------------------------- diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java index b6c2004..d3db71a 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java @@ -165,7 +165,7 @@ public class TemplateObject implements TemplateInfo { } public boolean stateTransit(TemplateEvent e) throws NoTransitionException { - boolean result= imageMgr.getStateMachine().transitTo(this.imageVO, e, null, + boolean result= imageMgr.getStateMachine().transitTo(this.imageVO, e, null, null, imageDao); this.imageVO = imageDao.findById(this.imageVO.getId()); return result; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotStateMachineManagerImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotStateMachineManagerImpl.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotStateMachineManagerImpl.java index aa1cf68..b7abc7d 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotStateMachineManagerImpl.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotStateMachineManagerImpl.java @@ -49,6 +49,6 @@ SnapshotStateMachineManager { } public void processEvent(SnapshotVO snapshot, Event event) throws NoTransitionException { - stateMachine.transitTo(snapshot, event, null, snapshotDao); + stateMachine.transitTo(snapshot, event, null, null, snapshotDao); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java index 87ba1d2..f4408af 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/ObjectInDataStoreManagerImpl.java @@ -135,7 +135,7 @@ public class ObjectInDataStoreManagerImpl implements ObjectInDataStoreManager { if (data.getType() == DataObjectType.TEMPLATE && data.getDataStore().getRole() == DataStoreRole.Primary) { try { - this.stateMachines.transitTo(obj, event, null, + this.stateMachines.transitTo(obj, event, null, null, templatePoolDao); } catch (NoTransitionException e) { if (event == Event.CreateOnlyRequested || event == Event.OperationSuccessed) { @@ -145,7 +145,7 @@ public class ObjectInDataStoreManagerImpl implements ObjectInDataStoreManager { } } } else { - this.stateMachines.transitTo(obj, event, null, objectDataStoreDao); + this.stateMachines.transitTo(obj, event, null, null, objectDataStoreDao); } return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreDaoImpl.java index 9965d60..bebf150 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreDaoImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/db/ObjectInDataStoreDaoImpl.java @@ -49,7 +49,7 @@ public class ObjectInDataStoreDaoImpl extends GenericDaoBase<ObjectInDataStoreVO } @Override public boolean updateState(State currentState, Event event, - State nextState, DataObjectInStore dataObj, Object data) { + State nextState, DataObjectInStore dataObj, String eventArgs, Object data) { ObjectInDataStoreVO vo = (ObjectInDataStoreVO)dataObj; Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java index ad56150..b4cfd77 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java @@ -63,7 +63,7 @@ public class TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase<TemplatePrim } @Override - public boolean updateState(State currentState, Event event, State nextState, TemplatePrimaryDataStoreVO vo, Object data) { + public boolean updateState(State currentState, Event event, State nextState, TemplatePrimaryDataStoreVO vo, String eventArgs, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getLastUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao2Impl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao2Impl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao2Impl.java index d8497e2..7f40388 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao2Impl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/VolumeDao2Impl.java @@ -338,7 +338,7 @@ public class VolumeDao2Impl extends GenericDaoBase<VolumeVO, Long> implements Vo } @Override - public boolean updateState(Volume.State currentState, Volume.Event event, Volume.State nextState, VolumeVO vo, Object data) { + public boolean updateState(Volume.State currentState, Volume.Event event, Volume.State nextState, VolumeVO vo, String eventArgs, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java ---------------------------------------------------------------------- diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java index ceadb25..e0c50ff 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java @@ -99,7 +99,7 @@ public class VolumeObject implements VolumeInfo { public boolean stateTransit(Volume.Event event) { boolean result = false; try { - result = _volStateMachine.transitTo(volumeVO, event, null, volumeDao); + result = _volStateMachine.transitTo(volumeVO, event, null, null, volumeDao); volumeVO = volumeDao.findById(volumeVO.getId()); } catch (NoTransitionException e) { String errorMessage = "Failed to transit volume: " + this.getVolumeId() + ", due to: " + e.toString(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java index b41d6ca..b5fdc9f 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java @@ -77,12 +77,12 @@ public class BaremetalManagerImpl extends ManagerBase implements BaremetalManage } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, String eventArgs, Object opaque) { return false; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, String eventArgs, Object opaque) { if (newState != State.Starting && newState != State.Error && newState != State.Expunging) { return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java index aec9c2d..1096acd 100644 --- a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java +++ b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ +package com.cloud.network.element; import com.cloud.network.element.MidoNetElement; import junit.framework.TestCase; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/agent/manager/AgentManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 6baeecf..3b69738 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1429,7 +1429,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl host.setManagementServerId(msId); try { - return _statusStateMachine.transitTo(host, e, host.getId(), _hostDao); + return _statusStateMachine.transitTo(host, e, null, host.getId(), _hostDao); } catch (NoTransitionException e1) { status_logger.debug("Cannot transit agent status with event " + e + " for host " + host.getId() + ", name=" + host.getName() + ", mangement server id is " + msId); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/capacity/CapacityManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java b/server/src/com/cloud/capacity/CapacityManagerImpl.java index 292ef0a..1e80a8e 100755 --- a/server/src/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java @@ -629,12 +629,12 @@ public class CapacityManagerImpl extends ManagerBase implements CapacityManager, } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean transitionStatus, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean transitionStatus, String eventArgs, Object opaque) { return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean status, String eventArgs, Object opaque) { if (!status) { return false; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/host/dao/HostDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index 07a4232..de7a2bb 100755 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -781,7 +781,7 @@ public class HostDaoImpl extends GenericDaoBase<HostVO, Long> implements HostDao @Override - public boolean updateState(Status oldStatus, Event event, Status newStatus, Host vo, Object data) { + public boolean updateState(Status oldStatus, Event event, Status newStatus, Host vo, String eventArgs, Object data) { HostVO host = findById(vo.getId()); long oldPingTime = host.getLastPinged(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/network/NetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 6296011..bd0e847 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -3648,7 +3648,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L protected boolean stateTransitTo(NetworkVO network, Network.Event e) throws NoTransitionException { - return _stateMachine.transitTo(network, e, null, _networksDao); + return _stateMachine.transitTo(network, e, null, null, _networksDao); } private void setStateMachine() { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/network/NetworkStateListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkStateListener.java b/server/src/com/cloud/network/NetworkStateListener.java index 038e769..cc875b4 100644 --- a/server/src/com/cloud/network/NetworkStateListener.java +++ b/server/src/com/cloud/network/NetworkStateListener.java @@ -49,13 +49,13 @@ public class NetworkStateListener implements StateListener<State, Event, Network } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, Network vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, Network vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "preStateTransitionEvent", vo, oldState, newState); return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, Network vo, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, Network vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "postStateTransitionEvent", vo, oldState, newState); return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/network/dao/NetworkDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index 1bc8973..13e5193 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -587,7 +587,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N } @Override - public boolean updateState(State currentState, Event event, State nextState, Network vo, Object data) { + public boolean updateState(State currentState, Event event, State nextState, Network vo, String eventArgs, Object data) { // TODO: ensure this update is correct Transaction txn = Transaction.currentTxn(); txn.start(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java index 1c189c4..cbf9f79 100755 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -1217,12 +1217,12 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, String eventArgs, Object opaque) { return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vm, boolean status, String eventArgs, Object opaque) { if (!status) { return false; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/VolumeManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java index 8c63eb0..24d568b 100644 --- a/server/src/com/cloud/storage/VolumeManagerImpl.java +++ b/server/src/com/cloud/storage/VolumeManagerImpl.java @@ -2364,7 +2364,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { private boolean stateTransitTo(Volume vol, Volume.Event event) throws NoTransitionException { - return _volStateMachine.transitTo(vol, event, null, _volsDao); + return _volStateMachine.transitTo(vol, event, null, null, _volsDao); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java b/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java index f55663f..c7558f3 100644 --- a/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java +++ b/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java @@ -333,7 +333,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements } @Override - public boolean updateState(State currentState, Event event, State nextState, SnapshotVO snapshot, Object data) { + public boolean updateState(State currentState, Event event, State nextState, SnapshotVO snapshot, String eventArgs, Object data) { Transaction txn = Transaction.currentTxn(); txn.start(); SnapshotVO snapshotVO = (SnapshotVO)snapshot; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java index d9a26d3..7261894 100755 --- a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -1086,7 +1086,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem @Override public boolean updateState(TemplateState currentState, TemplateEvent event, - TemplateState nextState, VMTemplateVO vo, Object data) { + TemplateState nextState, VMTemplateVO vo, String eventArgs, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/VMTemplateHostDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VMTemplateHostDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplateHostDaoImpl.java index 7f35eab..b8365fb 100755 --- a/server/src/com/cloud/storage/dao/VMTemplateHostDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplateHostDaoImpl.java @@ -389,7 +389,7 @@ public class VMTemplateHostDaoImpl extends GenericDaoBase<VMTemplateHostVO, Long @Override public boolean updateState(State currentState, Event event, - State nextState, DataObjectInStore vo, Object data) { + State nextState, DataObjectInStore vo, String eventArgs, Object data) { VMTemplateHostVO templateHost = (VMTemplateHostVO)vo; Long oldUpdated = templateHost.getUpdatedCount(); Date oldUpdatedTime = templateHost.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java index 5f212eb..43d537d 100644 --- a/server/src/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplatePoolDaoImpl.java @@ -267,7 +267,7 @@ public class VMTemplatePoolDaoImpl extends GenericDaoBase<VMTemplateStoragePoolV @Override public boolean updateState(State currentState, Event event, - State nextState, DataObjectInStore vo, Object data) { + State nextState, DataObjectInStore vo, String eventArgs, Object data) { VMTemplateStoragePoolVO templatePool = (VMTemplateStoragePoolVO)vo; Long oldUpdated = templatePool.getUpdatedCount(); Date oldUpdatedTime = templatePool.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/VolumeDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VolumeDaoImpl.java b/server/src/com/cloud/storage/dao/VolumeDaoImpl.java index 12ca3c7..c96b48b 100755 --- a/server/src/com/cloud/storage/dao/VolumeDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VolumeDaoImpl.java @@ -377,7 +377,7 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol @Override public boolean updateState(com.cloud.storage.Volume.State currentState, Event event, com.cloud.storage.Volume.State nextState, Volume vo, - Object data) { + String eventArgs, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/dao/VolumeHostDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VolumeHostDaoImpl.java b/server/src/com/cloud/storage/dao/VolumeHostDaoImpl.java index 2fd39e6..063ae98 100755 --- a/server/src/com/cloud/storage/dao/VolumeHostDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VolumeHostDaoImpl.java @@ -127,7 +127,7 @@ public class VolumeHostDaoImpl extends GenericDaoBase<VolumeHostVO, Long> implem @Override public boolean updateState(State currentState, Event event, - State nextState, DataObjectInStore vo, Object data) { + State nextState, DataObjectInStore vo, String eventArgs, Object data) { VolumeHostVO volHost = (VolumeHostVO) vo; Long oldUpdated = volHost.getUpdatedCount(); Date oldUpdatedTime = volHost.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/listener/SnapshotStateListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/listener/SnapshotStateListener.java b/server/src/com/cloud/storage/listener/SnapshotStateListener.java index 21fcf11..ccae9dd 100644 --- a/server/src/com/cloud/storage/listener/SnapshotStateListener.java +++ b/server/src/com/cloud/storage/listener/SnapshotStateListener.java @@ -48,13 +48,13 @@ public class SnapshotStateListener implements StateListener<State, Event, Snapsh } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, SnapshotVO vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, SnapshotVO vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "preStateTransitionEvent", vo, oldState, newState); return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, SnapshotVO vo, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, SnapshotVO vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "postStateTransitionEvent", vo, oldState, newState); return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/storage/listener/VolumeStateListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/listener/VolumeStateListener.java b/server/src/com/cloud/storage/listener/VolumeStateListener.java index 6fa56a5..fa6d6fd 100644 --- a/server/src/com/cloud/storage/listener/VolumeStateListener.java +++ b/server/src/com/cloud/storage/listener/VolumeStateListener.java @@ -43,13 +43,13 @@ public class VolumeStateListener implements StateListener<State, Event, Volume> } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, Volume vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, Volume vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "preStateTransitionEvent", vo, oldState, newState); return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, Volume vo, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, Volume vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "postStateTransitionEvent", vo, oldState, newState); return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/vm/UserVmStateListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmStateListener.java b/server/src/com/cloud/vm/UserVmStateListener.java index 04aa818..92aa6ad 100644 --- a/server/src/com/cloud/vm/UserVmStateListener.java +++ b/server/src/com/cloud/vm/UserVmStateListener.java @@ -54,13 +54,13 @@ public class UserVmStateListener implements StateListener<State, VirtualMachine. } @Override - public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, Object opaque) { + public boolean preStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, String eventArgs, Object opaque) { pubishOnEventBus(event.name(), "preStateTransitionEvent", vo, oldState, newState); return true; } @Override - public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, Object opaque) { + public boolean postStateTransitionEvent(State oldState, Event event, State newState, VirtualMachine vo, boolean status, String eventArgs, Object opaque) { if(!status){ return false; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/vm/VirtualMachineManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index af22716..a07297b 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1134,7 +1134,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac protected boolean stateTransitTo(VMInstanceVO vm, VirtualMachine.Event e, Long hostId, String reservationId) throws NoTransitionException { vm.setReservationId(reservationId); - return _stateMachine.transitTo(vm, e, new Pair<Long, Long>(vm.getHostId(), hostId), _vmDao); + return _stateMachine.transitTo(vm, e, null, new Pair<Long, Long>(vm.getHostId(), hostId), _vmDao); } @Override @@ -1155,7 +1155,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac vm.setLastHostId(vm.getHostId()); } } - return _stateMachine.transitTo(vm, e, new Pair<Long, Long>(vm.getHostId(), hostId), _vmDao); + return _stateMachine.transitTo(vm, e, null, new Pair<Long, Long>(vm.getHostId(), hostId), _vmDao); } @Override http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index 7198b7c..7a9ddba 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -358,7 +358,7 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem } @Override - public boolean updateState(State oldState, Event event, State newState, VirtualMachine vm, Object opaque) { + public boolean updateState(State oldState, Event event, State newState, VirtualMachine vm, String eventArgs, Object opaque) { if (newState == null) { if (s_logger.isDebugEnabled()) { s_logger.debug("There's no way to transition from old state: " + oldState.toString() + " event: " + event.toString()); @@ -388,6 +388,8 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem ub.set(vmi, "hostId", newHostId); ub.set(vmi, "podIdToDeployIn", vmi.getPodIdToDeployIn()); ub.set(vmi, _updateTimeAttr, new Date()); + ub.set(vmi, "lastEvent", event); + ub.set(vmi, "lastEventArgs", eventArgs); int result = update(vmi, sc); if (result == 0 && s_logger.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index 638be6c..d30490a 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -433,7 +433,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana } protected boolean vmSnapshotStateTransitTo(VMSnapshotVO vsnp, VMSnapshot.Event event) throws NoTransitionException { - return _vmSnapshottateMachine.transitTo(vsnp, event, null, _vmSnapshotDao); + return _vmSnapshottateMachine.transitTo(vsnp, event, null, null, _vmSnapshotDao); } @DB http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/src/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java b/server/src/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java index 7d8ace7..b027a38 100644 --- a/server/src/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java +++ b/server/src/com/cloud/vm/snapshot/dao/VMSnapshotDaoImpl.java @@ -127,7 +127,7 @@ public class VMSnapshotDaoImpl extends GenericDaoBase<VMSnapshotVO, Long> } @Override - public boolean updateState(State currentState, Event event, State nextState, VMSnapshot vo, Object data) { + public boolean updateState(State currentState, Event event, State nextState, VMSnapshot vo, String eventArgs, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java index a483291..1088a66 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java @@ -343,7 +343,7 @@ public class MockNetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implemen } @Override - public boolean updateState(Network.State currentState, Network.Event event, Network.State nextState, Network vo, Object data) { + public boolean updateState(Network.State currentState, Network.Event event, Network.State nextState, Network vo, String eventArgs, Object data) { return true; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/setup/db/db/schema-410to420.sql ---------------------------------------------------------------------- diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql index fecdc0f..a570747 100644 --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@ -410,3 +410,8 @@ ALTER TABLE `cloud`.`async_job` DROP COLUMN `session_key`; ALTER TABLE `cloud`.`async_job` DROP COLUMN `job_cmd_originator`; ALTER TABLE `cloud`.`async_job` ADD COLUMN `job_dispatcher` VARCHAR(64); +ALTER TABLE `cloud`.`vm_instance` ADD COLUMN `last_event` VARCHAR(64) DEFAULT 'OperationNop'; +ALTER TABLE `cloud`.`vm_instance` ADD COLUMN `last_event_args` VARCHAR(256); +ALTER TABLE `cloud`.`vm_instance` ADD COLUMN `power_state` VARCHAR(74) DEFAULT 'PowerUnknown'; +ALTER TABLE `cloud`.`vm_instance` ADD COLUMN `power_state_update_time` DATETIME DEFAULT NOW(); + http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/utils/src/com/cloud/utils/fsm/StateDao.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/fsm/StateDao.java b/utils/src/com/cloud/utils/fsm/StateDao.java index 5c4cc41..4f42346 100644 --- a/utils/src/com/cloud/utils/fsm/StateDao.java +++ b/utils/src/com/cloud/utils/fsm/StateDao.java @@ -18,6 +18,6 @@ package com.cloud.utils.fsm; public interface StateDao <S,E,V> { - boolean updateState(S currentState, E event, S nextState, V vo, Object data); + boolean updateState(S currentState, E event, S nextState, V vo, String eventArgs, Object data); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/utils/src/com/cloud/utils/fsm/StateListener.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/fsm/StateListener.java b/utils/src/com/cloud/utils/fsm/StateListener.java index 7d4a85e..37c0a92 100644 --- a/utils/src/com/cloud/utils/fsm/StateListener.java +++ b/utils/src/com/cloud/utils/fsm/StateListener.java @@ -28,7 +28,7 @@ public interface StateListener <S,E,V> { * @param vmDao VM dao * @return */ - public boolean preStateTransitionEvent(S oldState, E event, S newState, V vo, boolean status, Object opaque); + public boolean preStateTransitionEvent(S oldState, E event, S newState, V vo, boolean status, String eventArgs, Object opaque); /** * Event is triggered after state machine transition finished @@ -39,5 +39,5 @@ public interface StateListener <S,E,V> { * @param status the state transition is allowed or not * @return */ - public boolean postStateTransitionEvent(S oldState, E event, S newState, V vo, boolean status, Object opaque); + public boolean postStateTransitionEvent(S oldState, E event, S newState, V vo, boolean status, String eventArgs, Object opaque); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/58112a9e/utils/src/com/cloud/utils/fsm/StateMachine2.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/fsm/StateMachine2.java b/utils/src/com/cloud/utils/fsm/StateMachine2.java index 741c58c..653696c 100644 --- a/utils/src/com/cloud/utils/fsm/StateMachine2.java +++ b/utils/src/com/cloud/utils/fsm/StateMachine2.java @@ -95,7 +95,7 @@ public class StateMachine2<S, E, V extends StateObject<S>> { } - public boolean transitTo(V vo, E e, Object opaque, StateDao<S,E,V> dao) throws NoTransitionException { + public boolean transitTo(V vo, E e, String eventArgs, Object opaque, StateDao<S,E,V> dao) throws NoTransitionException { S currentState = vo.getState(); S nextState = getNextState(currentState, e); @@ -105,16 +105,16 @@ public class StateMachine2<S, E, V extends StateObject<S>> { } for (StateListener<S,E, V> listener : _listeners) { - listener.preStateTransitionEvent(currentState, e, nextState, vo, transitionStatus, opaque); + listener.preStateTransitionEvent(currentState, e, nextState, vo, transitionStatus, eventArgs, opaque); } - transitionStatus = dao.updateState(currentState, e, nextState, vo, opaque); + transitionStatus = dao.updateState(currentState, e, nextState, vo, eventArgs, opaque); if (!transitionStatus) { return false; } for (StateListener<S,E, V> listener : _listeners) { - listener.postStateTransitionEvent(currentState, e, nextState, vo, transitionStatus, opaque); + listener.postStateTransitionEvent(currentState, e, nextState, vo, transitionStatus, eventArgs, opaque); } return true;
