You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/26 02:19:55 UTC
[2/3] git commit: updated refs/heads/vmsync to 1f0186a
Migrate bugs fixed
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/241d5469
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/241d5469
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/241d5469
Branch: refs/heads/vmsync
Commit: 241d54696e4bce374381ba00c358bff1554d3e97
Parents: fe4cc37
Author: Alex Huang <al...@gmail.com>
Authored: Tue Jun 25 16:49:56 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Tue Jun 25 16:49:56 2013 -0700
----------------------------------------------------------------------
.../src/com/cloud/vm/VirtualMachineManagerImpl.java | 7 +++----
.../orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java | 7 ++++++-
engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java | 8 +++++++-
.../src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java | 4 +++-
4 files changed, 19 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index f378f4f..3ca651f 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -216,7 +216,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
protected static final StateMachine<Step, VirtualMachine.Event> MigrationStateMachine = new StateMachine<Step, VirtualMachine.Event>();
static {
- MigrationStateMachine.addTransition(null, VirtualMachine.Event.MigrationRequested, Step.Prepare);
+ MigrationStateMachine.addTransition(Step.Filed, VirtualMachine.Event.MigrationRequested, Step.Prepare);
MigrationStateMachine.addTransition(Step.Prepare, VirtualMachine.Event.OperationSucceeded, Step.Migrating);
MigrationStateMachine.addTransition(Step.Prepare, VirtualMachine.Event.OperationFailed, Step.Error);
MigrationStateMachine.addTransition(Step.Migrating, VirtualMachine.Event.OperationSucceeded, Step.Started);
@@ -1462,16 +1462,15 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
workJob = new VmWorkJobVO(context.getContextId());
workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkJobDispatcher.Start);
+ workJob.setCmd(VmWorkJobDispatcher.Migrate);
workJob.setAccountId(account.getId());
workJob.setUserId(user.getId());
- workJob.setStep(VmWorkJobVO.Step.Migrating);
workJob.setVmType(vm.getType());
workJob.setVmInstanceId(vm.getId());
// save work context info (there are some duplications)
- VmWorkMigrate workInfo = new VmWorkMigrate(user.getId(), account.getId(), vm.getId(), dest);
+ VmWorkMigrate workInfo = new VmWorkMigrate(user.getId(), account.getId(), vm.getId(), srcHostId, dest);
workJob.setCmdInfo(VmWorkJobDispatcher.serialize(workInfo));
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
index f869bf6..272a18b 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -78,8 +78,10 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
if (cmd.equals(Start)) {
work = deserialize(VmWorkStart.class, job.getCmdInfo());
- } else {
+ } else if (cmd.equals(Stop)){
work = deserialize(VmWorkStop.class, job.getCmdInfo());
+ } else if (cmd.equals(Migrate)) {
+ work = deserialize(VmWorkMigrate.class, job.getCmdInfo());
}
assert(work != null);
@@ -97,6 +99,9 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
} else if (cmd.equals(Stop)) {
VmWorkStop stop = (VmWorkStop)work;
_vmMgr.orchestrateStop(vm.getUuid(), stop.isCleanup());
+ } else if (cmd.equals(Migrate)) {
+ VmWorkMigrate migrate = (VmWorkMigrate)work;
+ _vmMgr.orchestrateMigrate(vm.getUuid(), migrate.getSrcHostId(), migrate.getDeployDestination());
}
_asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
} catch(Throwable e) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
index 85892fd..f4543b8 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
@@ -34,9 +34,11 @@ public class VmWorkMigrate extends VmWork {
Long clusterId;
Long hostId;
private Map<String, String> storage;
+ long srcHostId;
- public VmWorkMigrate(long userId, long accountId, long vmId, DeployDestination dst) {
+ public VmWorkMigrate(long userId, long accountId, long vmId, long srcHostId, DeployDestination dst) {
super(userId, accountId, vmId);
+ this.srcHostId = srcHostId;
zoneId = dst.getDataCenter() != null ? dst.getDataCenter().getId() : null;
podId = dst.getPod() != null ? dst.getPod().getId() : null;
clusterId = dst.getCluster() != null ? dst.getCluster().getId() : null;
@@ -70,6 +72,10 @@ public class VmWorkMigrate extends VmWork {
return dest;
}
+ public long getSrcHostId() {
+ return srcHostId;
+ }
+
static private EntityManager s_entityMgr;
static public void init(EntityManager entityMgr) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
index e8c0304..824f8e7 100644
--- a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
+++ b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
@@ -35,9 +35,10 @@ import com.cloud.vm.VirtualMachine;
@PrimaryKeyJoinColumn(name="id")
public class VmWorkJobVO extends AsyncJobVO {
- // These steps are rather arbiturary. What's recorded depends on the
+ // These steps are rather arbitrary. What's recorded depends on the
// the operation being performed.
public enum Step {
+ Filed(false),
Prepare(false),
Starting(true),
Started(false),
@@ -71,6 +72,7 @@ public class VmWorkJobVO extends AsyncJobVO {
}
public VmWorkJobVO(String related) {
+ step = Step.Filed;
setRelated(related);
}