diff --git a/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java b/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java index ed98aef34e0..db8b0af6e7d 100755 --- a/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java +++ b/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java @@ -326,6 +326,10 @@ protected VmInstanceVO changeVmStateInDb(VmInstanceStateEvent stateEvent) { } protected VmInstanceVO changeVmStateInDb(VmInstanceStateEvent stateEvent, Runnable runnable) { + return changeVmStateInDb(stateEvent, runnable, null); + } + + protected VmInstanceVO changeVmStateInDb(VmInstanceStateEvent stateEvent, Runnable runnable, String stateChangeSource) { VmInstanceState bs = self.getState(); final VmInstanceState state = self.getState().nextState(stateEvent); @@ -374,6 +378,7 @@ protected void scripts() { data.setVmUuid(self.getUuid()); data.setOldState(bs.toString()); data.setNewState(state.toString()); + data.setStateChangeSource(stateChangeSource); data.setInventory(getSelfInventory()); evtf.fire(VmCanonicalEvents.VM_FULL_STATE_CHANGED_PATH, data); @@ -1004,16 +1009,7 @@ public void done(ErrorCodeList errorCodeList) { logger.debug(String.format("HaStartVmJudger[%s] says the VM[uuid:%s, name:%s] is qualified for HA start, now we are starting it", judger.getClass(), self.getUuid(), self.getName())); - UpdateQuery sql = SQL.New(VmInstanceVO.class) - .eq(VmInstanceVO_.uuid, self.getUuid()) - .set(VmInstanceVO_.state, VmInstanceState.Stopped) - .set(VmInstanceVO_.hostUuid, null); - - if (self.getHostUuid() != null) { - sql.set(VmInstanceVO_.lastHostUuid, self.getHostUuid()); - } - - sql.update(); + changeVmStateInDb(VmInstanceStateEvent.stopped, null, HaStartVmInstanceMsg.class.getName()); startVm(msg, new Completion(msg, chain) { @Override @@ -8984,4 +8980,3 @@ public void run(MessageReply reply) { }); } } - diff --git a/header/src/main/java/org/zstack/header/vm/VmCanonicalEvents.java b/header/src/main/java/org/zstack/header/vm/VmCanonicalEvents.java index e6fe6a92272..d9cc1ffb952 100755 --- a/header/src/main/java/org/zstack/header/vm/VmCanonicalEvents.java +++ b/header/src/main/java/org/zstack/header/vm/VmCanonicalEvents.java @@ -155,6 +155,7 @@ public static class VmStateChangedData { private String vmUuid; private String oldState; private String newState; + private String stateChangeSource; private VmInstanceInventory inventory; private Date date = new Date(); @@ -197,6 +198,14 @@ public String getNewState() { public void setNewState(String newState) { this.newState = newState; } + + public String getStateChangeSource() { + return stateChangeSource; + } + + public void setStateChangeSource(String stateChangeSource) { + this.stateChangeSource = stateChangeSource; + } } @NeedJsonSchema