You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2013/12/17 00:15:44 UTC
[1/3] git commit: updated refs/heads/master to 719271b
Updated Branches:
refs/heads/master 2f5329515 -> 719271b1d
Fix tab and trailing spaces
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/719271b1
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/719271b1
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/719271b1
Branch: refs/heads/master
Commit: 719271b1d9d1a716b4724d0af10c9915c435a9ce
Parents: 9d3827e
Author: Kelven Yang <ke...@gmail.com>
Authored: Mon Dec 16 15:15:15 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Mon Dec 16 15:15:30 2013 -0800
----------------------------------------------------------------------
.../src/com/cloud/vm/VirtualMachineManager.java | 6 +-
.../components-api/src/com/cloud/vm/VmWork.java | 8 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 642 +++++++++----------
.../src/com/cloud/vm/VmWorkAddVmToNetwork.java | 32 +-
.../src/com/cloud/vm/VmWorkJobDispatcher.java | 15 +-
.../src/com/cloud/vm/VmWorkMigrateForScale.java | 24 +-
.../com/cloud/vm/VmWorkMigrateWithStorage.java | 28 +-
.../src/com/cloud/vm/VmWorkReboot.java | 4 +-
.../src/com/cloud/vm/VmWorkReconfigure.java | 24 +-
.../src/com/cloud/vm/VmWorkRemoveNicFromVm.java | 10 +-
.../com/cloud/vm/VmWorkRemoveVmFromNetwork.java | 32 +-
.../src/com/cloud/vm/VmWorkStart.java | 140 ++--
.../src/com/cloud/vm/VmWorkStop.java | 8 +-
.../com/cloud/vm/VmWorkStorageMigration.java | 6 +-
14 files changed, 490 insertions(+), 489 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/api/src/com/cloud/vm/VirtualMachineManager.java
----------------------------------------------------------------------
diff --git a/engine/api/src/com/cloud/vm/VirtualMachineManager.java b/engine/api/src/com/cloud/vm/VirtualMachineManager.java
index 05cbfc2..4c2222c 100644
--- a/engine/api/src/com/cloud/vm/VirtualMachineManager.java
+++ b/engine/api/src/com/cloud/vm/VirtualMachineManager.java
@@ -108,9 +108,9 @@ public interface VirtualMachineManager extends Manager {
void migrateAway(String vmUuid, long hostId) throws InsufficientServerCapacityException;
void migrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException;
-
+
void migrateWithStorage(String vmUuid, long srcId, long destId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException, ConcurrentOperationException;
-
+
void reboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ResourceUnavailableException;
void advanceReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ResourceUnavailableException,
@@ -153,7 +153,7 @@ public interface VirtualMachineManager extends Manager {
*/
NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException,
ResourceUnavailableException, InsufficientCapacityException;
-
+
/**
* @param vm
* @param nic
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/components-api/src/com/cloud/vm/VmWork.java
----------------------------------------------------------------------
diff --git a/engine/components-api/src/com/cloud/vm/VmWork.java b/engine/components-api/src/com/cloud/vm/VmWork.java
index 98e46a3..ed9f44c 100644
--- a/engine/components-api/src/com/cloud/vm/VmWork.java
+++ b/engine/components-api/src/com/cloud/vm/VmWork.java
@@ -32,7 +32,7 @@ public class VmWork implements Serializable {
this.accountId = accountId;
this.vmId = vmId;
this.handlerName = handlerName;
- }
+ }
public long getUserId() {
return userId;
@@ -42,9 +42,9 @@ public class VmWork implements Serializable {
return accountId;
}
- public long getVmId() {
- return vmId;
- }
+ public long getVmId() {
+ return vmId;
+ }
public String getHandlerName() {
return handlerName;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/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 f89d83c..21b873b 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -734,11 +734,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private void orchestrateStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) throws InsufficientCapacityException,
- ConcurrentOperationException, ResourceUnavailableException {
-
- CallContext cctxt = CallContext.current();
+ ConcurrentOperationException, ResourceUnavailableException {
+
+ CallContext cctxt = CallContext.current();
Account account = cctxt.getCallingAccount();
User caller = cctxt.getCallingUser();
@@ -1627,7 +1627,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private void orchestrateMigrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
if (vm == null) {
@@ -1896,10 +1896,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private void orchestrateMigrateWithStorage(String vmUuid, long srcHostId, long destHostId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException,
- ConcurrentOperationException {
-
+ ConcurrentOperationException {
+
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
HostVO srcHost = _hostDao.findById(srcHostId);
@@ -2177,7 +2177,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private void orchestrateReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ConcurrentOperationException,
ResourceUnavailableException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
@@ -3108,7 +3108,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private NicProfile orchestrateAddVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException,
InsufficientCapacityException {
CallContext cctx = CallContext.current();
@@ -3448,9 +3448,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
private void orchestrateMigrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long oldSvcOfferingId)
- throws ResourceUnavailableException, ConcurrentOperationException {
-
- VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
+ throws ResourceUnavailableException, ConcurrentOperationException {
+
+ VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
s_logger.info("Migrating " + vm + " to " + dest);
vm.getServiceOfferingId();
@@ -3703,7 +3703,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
+
private VMInstanceVO orchestrateReConfigureVm(String vmUuid, ServiceOffering oldServiceOffering, boolean reconfiguringOnExistingHost) throws ResourceUnavailableException,
ConcurrentOperationException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
@@ -4163,26 +4163,26 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
workJob.setUserId(callingUser.getId());
workJob.setStep(VmWorkJobVO.Step.Starting);
workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
+ workJob.setVmInstanceId(vm.getId());
- // save work context info (there are some duplications)
+ // save work context info (there are some duplications)
VmWorkStart workInfo = new VmWorkStart(callingUser.getId(), callingAccount.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER);
- workInfo.setPlan(planToDeploy);
- workInfo.setParams(params);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workInfo.setPlan(planToDeploy);
+ workInfo.setParams(params);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ // Transaction syntax sugar has a cost here
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOn, vm.getId(), null);
}
@@ -4207,33 +4207,33 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
assert (pendingWorkJobs.size() == 1);
workJob = pendingWorkJobs.get(0);
- } else {
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkStop.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setStep(VmWorkJobVO.Step.Prepare);
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+ } else {
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkStop.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setStep(VmWorkJobVO.Step.Prepare);
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkStop workInfo = new VmWorkStop(user.getId(), account.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, cleanup);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOff, vm.getId(), null);
}
@@ -4265,28 +4265,28 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkReboot.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setStep(VmWorkJobVO.Step.Prepare);
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setStep(VmWorkJobVO.Step.Prepare);
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkReboot workInfo = new VmWorkReboot(user.getId(), account.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, params);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
vm.getId());
}
@@ -4301,42 +4301,42 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
VmWorkMigrate.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkMigrate.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ 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(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, dest);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOn, vm.getId(), vm.getPowerHostId());
}
@@ -4354,43 +4354,43 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
VmWorkMigrateWithStorage.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkMigrate.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkMigrateWithStorage workInfo = new VmWorkMigrateWithStorage(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, destHostId, volumeToPool);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOn, vm.getId(), destHostId);
}
@@ -4407,43 +4407,43 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
VmWorkMigrateForScale.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkMigrateForScale workInfo = new VmWorkMigrateForScale(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, dest, newSvcOfferingId);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
@@ -4459,43 +4459,43 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
VmWorkStorageMigration.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkStorageMigration.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkStorageMigration workInfo = new VmWorkStorageMigration(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, destPool);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
@@ -4559,42 +4559,42 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkRemoveNicFromVm.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkRemoveNicFromVm.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkRemoveNicFromVm workInfo = new VmWorkRemoveNicFromVm(user.getId(), account.getId(), vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkRemoveNicFromVm.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkRemoveNicFromVm.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkRemoveNicFromVm workInfo = new VmWorkRemoveNicFromVm(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, nic);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
@@ -4609,43 +4609,43 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkRemoveVmFromNetwork.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkRemoveVmFromNetwork.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkRemoveVmFromNetwork workInfo = new VmWorkRemoveVmFromNetwork(user.getId(), account.getId(), vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkRemoveVmFromNetwork.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkRemoveVmFromNetwork.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkRemoveVmFromNetwork workInfo = new VmWorkRemoveVmFromNetwork(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, network, broadcastUri);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
@@ -4661,46 +4661,46 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkReconfigure.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkReconfigure.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkReconfigure workInfo = new VmWorkReconfigure(user.getId(), account.getId(), vm.getId(),
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkReconfigure.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkReconfigure.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkReconfigure workInfo = new VmWorkReconfigure(user.getId(), account.getId(), vm.getId(),
VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, oldServiceOffering, reconfiguringOnExistingHost);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
-
+
@Override
public Pair<JobInfo.Status, String> handleVmWorkJob(AsyncJob job, VmWork work) throws Exception {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java b/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
index 2a577f3..bb3b496 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
@@ -21,22 +21,22 @@ import com.cloud.network.Network;
public class VmWorkAddVmToNetwork extends VmWork {
private static final long serialVersionUID = 8861516006586736813L;
- Network network;
- NicProfile requstedNicProfile;
-
+ Network network;
+ NicProfile requstedNicProfile;
+
public VmWorkAddVmToNetwork(long userId, long accountId, long vmId, String handlerName,
- Network network, NicProfile requested) {
+ Network network, NicProfile requested) {
super(userId, accountId, vmId, handlerName);
-
- this.network = network;
- requstedNicProfile = requested;
- }
-
- public Network getNetwork() {
- return network;
- }
-
- public NicProfile getRequestedNicProfile() {
- return requstedNicProfile;
- }
+
+ this.network = network;
+ requstedNicProfile = requested;
+ }
+
+ public Network getNetwork() {
+ return network;
+ }
+
+ public NicProfile getRequestedNicProfile() {
+ return requstedNicProfile;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/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 e29a99c..7ed9f39 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -39,11 +39,12 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
public static final String VM_WORK_QUEUE = "VmWorkJobQueue";
public static final String VM_WORK_JOB_DISPATCHER = "VmWorkJobDispatcher";
public static final String VM_WORK_JOB_WAKEUP_DISPATCHER = "VmWorkJobWakeupDispatcher";
-
+
@Inject private VirtualMachineManagerImpl _vmMgr;
- @Inject private AsyncJobManager _asyncJobMgr;
+ @Inject
+ private AsyncJobManager _asyncJobMgr;
@Inject private VMInstanceDao _instanceDao;
-
+
private Map<String, VmWorkJobHandler> _handlers;
public VmWorkJobDispatcher() {
@@ -57,7 +58,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
_handlers = handlers;
}
- @Override
+ @Override
public void runJob(AsyncJob job) {
VmWork work = null;
try {
@@ -83,7 +84,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
_asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Unable to deserialize VM work");
return;
}
-
+
if (_handlers == null || _handlers.isEmpty()) {
s_logger.error("Invalid startup configuration, no work job handler is found. cmd: " + job.getCmd() + ", job info: " + job.getCmdInfo());
_asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Invalid startup configuration. no job handler is found");
@@ -91,7 +92,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
}
VmWorkJobHandler handler = _handlers.get(work.getHandlerName());
-
+
if (handler == null) {
s_logger.error("Unable to find work job handler. handler name: " + work.getHandlerName() + ", job cmd: " + job.getCmd() + ", job info: " + job.getCmdInfo());
_asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Unable to find work job handler");
@@ -99,7 +100,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
}
CallContext.register(work.getUserId(), work.getAccountId(), job.getRelated());
-
+
Pair<JobInfo.Status, String> result = handler.handleVmWorkJob(job, work);
_asyncJobMgr.completeAsyncJob(job.getId(), result.first(), 0, result.second());
} catch(Throwable e) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
index e0ad90e..0dd4d88 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
@@ -19,19 +19,19 @@ package com.cloud.vm;
import com.cloud.deploy.DeployDestination;
public class VmWorkMigrateForScale extends VmWork {
- private static final long serialVersionUID = 6854870395568389613L;
+ private static final long serialVersionUID = 6854870395568389613L;
+
+ long srcHostId;
+ DeployDestination deployDestination;
+ Long newSvcOfferingId;
- long srcHostId;
- DeployDestination deployDestination;
- Long newSvcOfferingId;
-
public VmWorkMigrateForScale(long userId, long accountId, long vmId, String handlerName, long srcHostId,
- DeployDestination dest, Long newSvcOfferingId) {
-
+ DeployDestination dest, Long newSvcOfferingId) {
+
super(userId, accountId, vmId, handlerName);
- this.srcHostId = srcHostId;
- deployDestination = dest;
- this.newSvcOfferingId = newSvcOfferingId;
+ this.srcHostId = srcHostId;
+ deployDestination = dest;
+ this.newSvcOfferingId = newSvcOfferingId;
}
public long getSrcHostId() {
@@ -39,10 +39,10 @@ public class VmWorkMigrateForScale extends VmWork {
}
public DeployDestination getDeployDestination() {
- return deployDestination;
+ return deployDestination;
}
public Long getNewServiceOfferringId() {
- return newSvcOfferingId;
+ return newSvcOfferingId;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
index 3849556..ee30c74 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
@@ -22,31 +22,31 @@ import com.cloud.storage.StoragePool;
import com.cloud.storage.Volume;
public class VmWorkMigrateWithStorage extends VmWork {
- private static final long serialVersionUID = -5626053872453569165L;
+ private static final long serialVersionUID = -5626053872453569165L;
+
+ long srcHostId;
+ long destHostId;
+ Map<Volume, StoragePool> volumeToPool;
- long srcHostId;
- long destHostId;
- Map<Volume, StoragePool> volumeToPool;
-
public VmWorkMigrateWithStorage(long userId, long accountId, long vmId, String handlerName, long srcHostId,
- long destHostId, Map<Volume, StoragePool> volumeToPool) {
-
+ long destHostId, Map<Volume, StoragePool> volumeToPool) {
+
super(userId, accountId, vmId, handlerName);
-
- this.srcHostId = srcHostId;
- this.destHostId = destHostId;
- this.volumeToPool = volumeToPool;
+
+ this.srcHostId = srcHostId;
+ this.destHostId = destHostId;
+ this.volumeToPool = volumeToPool;
}
public long getSrcHostId() {
- return srcHostId;
+ return srcHostId;
}
public long getDestHostId() {
- return destHostId;
+ return destHostId;
}
public Map<Volume, StoragePool> getVolumeToPool() {
- return volumeToPool;
+ return volumeToPool;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java b/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
index edecae8..63c7d00 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
@@ -30,8 +30,8 @@ public class VmWorkReboot extends VmWork {
public VmWorkReboot(long userId, long accountId, long vmId, String handlerName, Map<VirtualMachineProfile.Param, Object> params) {
super(userId, accountId, vmId, handlerName);
-
- setParams(params);
+
+ setParams(params);
}
public Map<VirtualMachineProfile.Param, Object> getParams() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java b/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
index c7fd310..4c564d5 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
@@ -19,25 +19,25 @@ package com.cloud.vm;
import com.cloud.offering.ServiceOffering;
public class VmWorkReconfigure extends VmWork {
- private static final long serialVersionUID = -4517030323758086615L;
-
- ServiceOffering newServiceOffering;
- boolean sameHost;
-
+ private static final long serialVersionUID = -4517030323758086615L;
+
+ ServiceOffering newServiceOffering;
+ boolean sameHost;
+
public VmWorkReconfigure(long userId, long accountId, long vmId, String handlerName,
- ServiceOffering newServiceOffering, boolean sameHost) {
-
+ ServiceOffering newServiceOffering, boolean sameHost) {
+
super(userId, accountId, vmId, handlerName);
-
- this.newServiceOffering = newServiceOffering;
- this.sameHost = sameHost;
+
+ this.newServiceOffering = newServiceOffering;
+ this.sameHost = sameHost;
}
public ServiceOffering getNewServiceOffering() {
- return newServiceOffering;
+ return newServiceOffering;
}
public boolean isSameHost() {
- return sameHost;
+ return sameHost;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
index 4d400b9..29264e6 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
@@ -19,15 +19,15 @@ package com.cloud.vm;
public class VmWorkRemoveNicFromVm extends VmWork {
private static final long serialVersionUID = -4265657031064437923L;
- Nic nic;
-
+ Nic nic;
+
public VmWorkRemoveNicFromVm(long userId, long accountId, long vmId, String handlerName, Nic nic) {
super(userId, accountId, vmId, handlerName);
-
- this.nic = nic;
+
+ this.nic = nic;
}
public Nic getNic() {
- return nic;
+ return nic;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
index 0cb02b2..535b8d0 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
@@ -21,23 +21,23 @@ import java.net.URI;
import com.cloud.network.Network;
public class VmWorkRemoveVmFromNetwork extends VmWork {
- private static final long serialVersionUID = -5070392905642149925L;
+ private static final long serialVersionUID = -5070392905642149925L;
+
+ Network network;
+ URI broadcastUri;
- Network network;
- URI broadcastUri;
-
public VmWorkRemoveVmFromNetwork(long userId, long accountId, long vmId, String handlerName, Network network, URI broadcastUri) {
super(userId, accountId, vmId, handlerName);
-
- this.network = network;
- this.broadcastUri = broadcastUri;
- }
-
- public Network getNetwork() {
- return network;
- }
-
- public URI getBroadcastUri() {
- return broadcastUri;
- }
+
+ this.network = network;
+ this.broadcastUri = broadcastUri;
+ }
+
+ public Network getNetwork() {
+ return network;
+ }
+
+ public URI getBroadcastUri() {
+ return broadcastUri;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStart.java b/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
index 4f30e5d..f1b2efd 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
@@ -52,74 +52,74 @@ public class VmWorkStart extends VmWork {
public VmWorkStart(long userId, long accountId, long vmId, String handlerName) {
super(userId, accountId, vmId, handlerName);
- }
-
- public DeploymentPlan getPlan() {
-
- if(podId != null || clusterId != null || hostId != null || poolId != null || physicalNetworkId != null) {
- // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
- // this has to be refactored together with migrating legacy code into the new way
- ReservationContext context = null;
- if(reservationId != null) {
- Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
- context = new ReservationContextImpl(reservationId, journal,
- CallContext.current().getCallingUser(),
- CallContext.current().getCallingAccount());
- }
-
- DeploymentPlan plan = new DataCenterDeployment(
- dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
- context);
- return plan;
- }
-
- return null;
- }
-
- public void setPlan(DeploymentPlan plan) {
- if(plan != null) {
- dcId = plan.getDataCenterId();
- podId = plan.getPodId();
- clusterId = plan.getClusterId();
- hostId = plan.getHostId();
- poolId = plan.getPoolId();
- physicalNetworkId = plan.getPhysicalNetworkId();
- avoids = plan.getAvoids();
-
- if(plan.getReservationContext() != null)
- reservationId = plan.getReservationContext().getReservationId();
- }
- }
-
- public Map<String, String> getRawParams() {
- return rawParams;
- }
-
- public void setRawParams(Map<String, String> params) {
- rawParams = params;
- }
-
- public Map<VirtualMachineProfile.Param, Object> getParams() {
- Map<VirtualMachineProfile.Param, Object> map = new HashMap<VirtualMachineProfile.Param, Object>();
-
- if(rawParams != null) {
- for(Map.Entry<String, String> entry : rawParams.entrySet()) {
- VirtualMachineProfile.Param key = new VirtualMachineProfile.Param(entry.getKey());
- Object val = JobSerializerHelper.fromObjectSerializedString(entry.getValue());
- map.put(key, val);
- }
- }
-
- return map;
- }
-
- public void setParams(Map<VirtualMachineProfile.Param, Object> params) {
- if(params != null) {
- rawParams = new HashMap<String, String>();
- for(Map.Entry<VirtualMachineProfile.Param, Object> entry : params.entrySet()) {
- rawParams.put(entry.getKey().getName(), JobSerializerHelper.toObjectSerializedString(
- entry.getValue() instanceof Serializable ? (Serializable)entry.getValue() : entry.getValue().toString()));
- }
- }
- }
+ }
+
+ public DeploymentPlan getPlan() {
+
+ if (podId != null || clusterId != null || hostId != null || poolId != null || physicalNetworkId != null) {
+ // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
+ // this has to be refactored together with migrating legacy code into the new way
+ ReservationContext context = null;
+ if (reservationId != null) {
+ Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
+ context = new ReservationContextImpl(reservationId, journal,
+ CallContext.current().getCallingUser(),
+ CallContext.current().getCallingAccount());
+ }
+
+ DeploymentPlan plan = new DataCenterDeployment(
+ dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
+ context);
+ return plan;
+ }
+
+ return null;
+ }
+
+ public void setPlan(DeploymentPlan plan) {
+ if (plan != null) {
+ dcId = plan.getDataCenterId();
+ podId = plan.getPodId();
+ clusterId = plan.getClusterId();
+ hostId = plan.getHostId();
+ poolId = plan.getPoolId();
+ physicalNetworkId = plan.getPhysicalNetworkId();
+ avoids = plan.getAvoids();
+
+ if (plan.getReservationContext() != null)
+ reservationId = plan.getReservationContext().getReservationId();
+ }
+ }
+
+ public Map<String, String> getRawParams() {
+ return rawParams;
+ }
+
+ public void setRawParams(Map<String, String> params) {
+ rawParams = params;
+ }
+
+ public Map<VirtualMachineProfile.Param, Object> getParams() {
+ Map<VirtualMachineProfile.Param, Object> map = new HashMap<VirtualMachineProfile.Param, Object>();
+
+ if (rawParams != null) {
+ for (Map.Entry<String, String> entry : rawParams.entrySet()) {
+ VirtualMachineProfile.Param key = new VirtualMachineProfile.Param(entry.getKey());
+ Object val = JobSerializerHelper.fromObjectSerializedString(entry.getValue());
+ map.put(key, val);
+ }
+ }
+
+ return map;
+ }
+
+ public void setParams(Map<VirtualMachineProfile.Param, Object> params) {
+ if (params != null) {
+ rawParams = new HashMap<String, String>();
+ for (Map.Entry<VirtualMachineProfile.Param, Object> entry : params.entrySet()) {
+ rawParams.put(entry.getKey().getName(), JobSerializerHelper.toObjectSerializedString(
+ entry.getValue() instanceof Serializable ? (Serializable)entry.getValue() : entry.getValue().toString()));
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStop.java b/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
index ff3bfb9..6d41480 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
@@ -17,10 +17,10 @@
package com.cloud.vm;
public class VmWorkStop extends VmWork {
- private static final long serialVersionUID = 202908740486785251L;
-
- private final boolean cleanup;
-
+ private static final long serialVersionUID = 202908740486785251L;
+
+ private final boolean cleanup;
+
public VmWorkStop(long userId, long accountId, long vmId, String handlerName, boolean cleanup) {
super(userId, accountId, vmId, handlerName);
this.cleanup = cleanup;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/719271b1/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java b/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
index bcee88a..2b2f8e8 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
@@ -25,11 +25,11 @@ public class VmWorkStorageMigration extends VmWork {
public VmWorkStorageMigration(long userId, long accountId, long vmId, String handlerName, StoragePool destPool) {
super(userId, accountId, vmId, handlerName);
-
- this.destPool = destPool;
+
+ this.destPool = destPool;
}
public StoragePool getDestStoragePool() {
- return destPool;
+ return destPool;
}
}
[2/3] CLOUDSTACK-669: refactor VM work job dispatcher to allow
volume/snapshot manager to participate serialized job handling
Posted by ke...@apache.org.
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStart.java b/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
index e023801..4f30e5d 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStart.java
@@ -50,76 +50,76 @@ public class VmWorkStart extends VmWork {
// use serialization friendly map
private Map<String, String> rawParams;
- public VmWorkStart(long userId, long accountId, long vmId) {
- super(userId, accountId, vmId);
- }
-
- public DeploymentPlan getPlan() {
-
- if (podId != null || clusterId != null || hostId != null || poolId != null || physicalNetworkId != null) {
- // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
- // this has to be refactored together with migrating legacy code into the new way
- ReservationContext context = null;
- if (reservationId != null) {
- Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
- context = new ReservationContextImpl(reservationId, journal,
- CallContext.current().getCallingUser(),
- CallContext.current().getCallingAccount());
- }
-
- DeploymentPlan plan = new DataCenterDeployment(
- dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
- context);
- return plan;
- }
-
- return null;
- }
-
- public void setPlan(DeploymentPlan plan) {
- if (plan != null) {
- dcId = plan.getDataCenterId();
- podId = plan.getPodId();
- clusterId = plan.getClusterId();
- hostId = plan.getHostId();
- poolId = plan.getPoolId();
- physicalNetworkId = plan.getPhysicalNetworkId();
- avoids = plan.getAvoids();
-
- if (plan.getReservationContext() != null)
- reservationId = plan.getReservationContext().getReservationId();
- }
- }
-
- public Map<String, String> getRawParams() {
- return rawParams;
- }
-
- public void setRawParams(Map<String, String> params) {
- rawParams = params;
- }
-
- public Map<VirtualMachineProfile.Param, Object> getParams() {
- Map<VirtualMachineProfile.Param, Object> map = new HashMap<VirtualMachineProfile.Param, Object>();
-
- if (rawParams != null) {
- for (Map.Entry<String, String> entry : rawParams.entrySet()) {
- VirtualMachineProfile.Param key = new VirtualMachineProfile.Param(entry.getKey());
- Object val = JobSerializerHelper.fromObjectSerializedString(entry.getValue());
- map.put(key, val);
- }
- }
-
- return map;
- }
-
- public void setParams(Map<VirtualMachineProfile.Param, Object> params) {
- if (params != null) {
- rawParams = new HashMap<String, String>();
- for (Map.Entry<VirtualMachineProfile.Param, Object> entry : params.entrySet()) {
- rawParams.put(entry.getKey().getName(), JobSerializerHelper.toObjectSerializedString(
- entry.getValue() instanceof Serializable ? (Serializable)entry.getValue() : entry.getValue().toString()));
- }
- }
- }
+ public VmWorkStart(long userId, long accountId, long vmId, String handlerName) {
+ super(userId, accountId, vmId, handlerName);
+ }
+
+ public DeploymentPlan getPlan() {
+
+ if(podId != null || clusterId != null || hostId != null || poolId != null || physicalNetworkId != null) {
+ // this is ugly, to work with legacy code, we need to re-construct the DeploymentPlan hard-codely
+ // this has to be refactored together with migrating legacy code into the new way
+ ReservationContext context = null;
+ if(reservationId != null) {
+ Journal journal = new Journal.LogJournal("VmWorkStart", s_logger);
+ context = new ReservationContextImpl(reservationId, journal,
+ CallContext.current().getCallingUser(),
+ CallContext.current().getCallingAccount());
+ }
+
+ DeploymentPlan plan = new DataCenterDeployment(
+ dcId, podId, clusterId, hostId, poolId, physicalNetworkId,
+ context);
+ return plan;
+ }
+
+ return null;
+ }
+
+ public void setPlan(DeploymentPlan plan) {
+ if(plan != null) {
+ dcId = plan.getDataCenterId();
+ podId = plan.getPodId();
+ clusterId = plan.getClusterId();
+ hostId = plan.getHostId();
+ poolId = plan.getPoolId();
+ physicalNetworkId = plan.getPhysicalNetworkId();
+ avoids = plan.getAvoids();
+
+ if(plan.getReservationContext() != null)
+ reservationId = plan.getReservationContext().getReservationId();
+ }
+ }
+
+ public Map<String, String> getRawParams() {
+ return rawParams;
+ }
+
+ public void setRawParams(Map<String, String> params) {
+ rawParams = params;
+ }
+
+ public Map<VirtualMachineProfile.Param, Object> getParams() {
+ Map<VirtualMachineProfile.Param, Object> map = new HashMap<VirtualMachineProfile.Param, Object>();
+
+ if(rawParams != null) {
+ for(Map.Entry<String, String> entry : rawParams.entrySet()) {
+ VirtualMachineProfile.Param key = new VirtualMachineProfile.Param(entry.getKey());
+ Object val = JobSerializerHelper.fromObjectSerializedString(entry.getValue());
+ map.put(key, val);
+ }
+ }
+
+ return map;
+ }
+
+ public void setParams(Map<VirtualMachineProfile.Param, Object> params) {
+ if(params != null) {
+ rawParams = new HashMap<String, String>();
+ for(Map.Entry<VirtualMachineProfile.Param, Object> entry : params.entrySet()) {
+ rawParams.put(entry.getKey().getName(), JobSerializerHelper.toObjectSerializedString(
+ entry.getValue() instanceof Serializable ? (Serializable)entry.getValue() : entry.getValue().toString()));
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStop.java b/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
index f0bc885..ff3bfb9 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStop.java
@@ -17,12 +17,12 @@
package com.cloud.vm;
public class VmWorkStop extends VmWork {
- private static final long serialVersionUID = 202908740486785251L;
-
- private final boolean cleanup;
-
- public VmWorkStop(long userId, long accountId, long vmId, boolean cleanup) {
- super(userId, accountId, vmId);
+ private static final long serialVersionUID = 202908740486785251L;
+
+ private final boolean cleanup;
+
+ public VmWorkStop(long userId, long accountId, long vmId, String handlerName, boolean cleanup) {
+ super(userId, accountId, vmId, handlerName);
this.cleanup = cleanup;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java b/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
index 76a35b2..bcee88a 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkStorageMigration.java
@@ -23,13 +23,13 @@ public class VmWorkStorageMigration extends VmWork {
StoragePool destPool;
- public VmWorkStorageMigration(long userId, long accountId, long vmId, StoragePool destPool) {
- super(userId, accountId, vmId);
-
- this.destPool = destPool;
+ public VmWorkStorageMigration(long userId, long accountId, long vmId, String handlerName, StoragePool destPool) {
+ super(userId, accountId, vmId, handlerName);
+
+ this.destPool = destPool;
}
public StoragePool getDestStoragePool() {
- return this.destPool;
+ return destPool;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
----------------------------------------------------------------------
diff --git a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
index d373034..35683f0 100644
--- a/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
+++ b/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
@@ -20,11 +20,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:util="http://www.springframework.org/schema/util"
+
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
+ http://www.springframework.org/schema/aop
+ http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd
+ http://www.springframework.org/schema/util
+ http://www.springframework.org/schema/util/spring-util-3.0.xsd"
>
<bean id="accountManagerImpl" class="com.cloud.user.AccountManagerImpl">
@@ -230,5 +235,4 @@
class="org.apache.cloudstack.region.gslb.GlobalLoadBalancingRulesServiceImpl" />
<bean id="certServiceImpl" class="org.apache.cloudstack.network.lb.CertServiceImpl" />
-
</beans>
[3/3] git commit: updated refs/heads/master to 719271b
Posted by ke...@apache.org.
CLOUDSTACK-669: refactor VM work job dispatcher to allow volume/snapshot manager to participate serialized job handling
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9d3827e6
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9d3827e6
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9d3827e6
Branch: refs/heads/master
Commit: 9d3827e6fe48b23639392bfe25c4d3bd2c083eac
Parents: 2f53295
Author: Kelven Yang <ke...@gmail.com>
Authored: Fri Dec 13 17:25:56 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Mon Dec 16 15:15:30 2013 -0800
----------------------------------------------------------------------
.../src/com/cloud/vm/VirtualMachineManager.java | 41 +-
.../components-api/src/com/cloud/vm/VmWork.java | 15 +-
...spring-engine-orchestration-core-context.xml | 7 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 830 ++++++++++---------
.../src/com/cloud/vm/VmWorkAddVmToNetwork.java | 36 +-
.../src/com/cloud/vm/VmWorkJobDispatcher.java | 118 +--
.../src/com/cloud/vm/VmWorkJobHandler.java | 26 +
.../src/com/cloud/vm/VmWorkMigrate.java | 5 +-
.../src/com/cloud/vm/VmWorkMigrateForScale.java | 30 +-
.../com/cloud/vm/VmWorkMigrateWithStorage.java | 34 +-
.../src/com/cloud/vm/VmWorkReboot.java | 16 +-
.../src/com/cloud/vm/VmWorkReconfigure.java | 28 +-
.../src/com/cloud/vm/VmWorkRemoveNicFromVm.java | 14 +-
.../com/cloud/vm/VmWorkRemoveVmFromNetwork.java | 38 +-
.../src/com/cloud/vm/VmWorkStart.java | 144 ++--
.../src/com/cloud/vm/VmWorkStop.java | 12 +-
.../com/cloud/vm/VmWorkStorageMigration.java | 10 +-
.../spring-server-core-managers-context.xml | 10 +-
18 files changed, 714 insertions(+), 700 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/api/src/com/cloud/vm/VirtualMachineManager.java
----------------------------------------------------------------------
diff --git a/engine/api/src/com/cloud/vm/VirtualMachineManager.java b/engine/api/src/com/cloud/vm/VirtualMachineManager.java
index 80497b1..05cbfc2 100644
--- a/engine/api/src/com/cloud/vm/VirtualMachineManager.java
+++ b/engine/api/src/com/cloud/vm/VirtualMachineManager.java
@@ -99,13 +99,8 @@ public interface VirtualMachineManager extends Manager {
void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) throws InsufficientCapacityException,
ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
- void orchestrateStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) throws InsufficientCapacityException,
- ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
-
void advanceStop(String vmUuid, boolean cleanupEvenIfUnableToStop) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;
- void orchestrateStop(String vmUuid, boolean cleanupEvenIfUnableToStop) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;
-
void advanceExpunge(String vmUuid) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException;
void destroy(String vmUuid) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException;
@@ -113,19 +108,11 @@ public interface VirtualMachineManager extends Manager {
void migrateAway(String vmUuid, long hostId) throws InsufficientServerCapacityException;
void migrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException;
-
- void orchestrateMigrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException;
-
- void migrateWithStorage(String vmUuid, long srcId, long destId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException,
- ConcurrentOperationException;
-
- void orchestrateMigrateWithStorage(String vmUuid, long srcId, long destId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException,
- ConcurrentOperationException;
-
+
+ void migrateWithStorage(String vmUuid, long srcId, long destId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException, ConcurrentOperationException;
+
void reboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ResourceUnavailableException;
- void orchestrateReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ResourceUnavailableException;
-
void advanceReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ResourceUnavailableException,
ConcurrentOperationException, OperationTimedoutException;
@@ -142,8 +129,6 @@ public interface VirtualMachineManager extends Manager {
void storageMigration(String vmUuid, StoragePool storagePoolId);
- void orchestrateStorageMigration(String vmUuid, StoragePool storagePoolId);
-
/**
* @param vmInstance
* @param newServiceOffering
@@ -166,12 +151,9 @@ public interface VirtualMachineManager extends Manager {
* @throws ResourceUnavailableException
* @throws InsufficientCapacityException
*/
- NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException,
- InsufficientCapacityException;
-
- NicProfile orchestrateAddVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException,
+ NicProfile addVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException,
ResourceUnavailableException, InsufficientCapacityException;
-
+
/**
* @param vm
* @param nic
@@ -181,8 +163,6 @@ public interface VirtualMachineManager extends Manager {
*/
boolean removeNicFromVm(VirtualMachine vm, Nic nic) throws ConcurrentOperationException, ResourceUnavailableException;
- boolean orchestrateRemoveNicFromVm(VirtualMachine vm, Nic nic) throws ConcurrentOperationException, ResourceUnavailableException;
-
/**
* @param vm
* @param network
@@ -192,9 +172,6 @@ public interface VirtualMachineManager extends Manager {
* @throws ConcurrentOperationException
*/
boolean removeVmFromNetwork(VirtualMachine vm, Network network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException;
-
- boolean orchestrateRemoveVmFromNetwork(VirtualMachine vm, Network network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException;
-
/**
* @param nic
* @param hypervisorType
@@ -210,16 +187,8 @@ public interface VirtualMachineManager extends Manager {
VirtualMachineTO toVmTO(VirtualMachineProfile profile);
VirtualMachine reConfigureVm(String vmUuid, ServiceOffering newServiceOffering, boolean sameHost) throws ResourceUnavailableException, ConcurrentOperationException;
-
- VirtualMachine orchestrateReConfigureVm(String vmUuid, ServiceOffering newServiceOffering, boolean sameHost) throws ResourceUnavailableException,
- ConcurrentOperationException;
-
void findHostAndMigrate(String vmUuid, Long newSvcOfferingId, DeploymentPlanner.ExcludeList excludeHostList) throws InsufficientCapacityException,
ConcurrentOperationException, ResourceUnavailableException;
void migrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long newSvcOfferingId) throws ResourceUnavailableException, ConcurrentOperationException;
-
- void orchestrateMigrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long newSvcOfferingId) throws ResourceUnavailableException,
- ConcurrentOperationException;
-
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/components-api/src/com/cloud/vm/VmWork.java
----------------------------------------------------------------------
diff --git a/engine/components-api/src/com/cloud/vm/VmWork.java b/engine/components-api/src/com/cloud/vm/VmWork.java
index 751db99..98e46a3 100644
--- a/engine/components-api/src/com/cloud/vm/VmWork.java
+++ b/engine/components-api/src/com/cloud/vm/VmWork.java
@@ -25,11 +25,14 @@ public class VmWork implements Serializable {
long accountId;
long vmId;
- public VmWork(long userId, long accountId, long vmId) {
+ String handlerName;
+
+ public VmWork(long userId, long accountId, long vmId, String handlerName) {
this.userId = userId;
this.accountId = accountId;
this.vmId = vmId;
- }
+ this.handlerName = handlerName;
+ }
public long getUserId() {
return userId;
@@ -39,7 +42,11 @@ public class VmWork implements Serializable {
return accountId;
}
- public long getVmId() {
- return vmId;
+ public long getVmId() {
+ return vmId;
+ }
+
+ public String getHandlerName() {
+ return handlerName;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
----------------------------------------------------------------------
diff --git a/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml b/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
index fc3bae3..49cb9cd 100644
--- a/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
+++ b/engine/orchestration/resources/META-INF/cloudstack/core/spring-engine-orchestration-core-context.xml
@@ -60,7 +60,6 @@
<bean id="clusteredAgentManagerImpl" class="com.cloud.agent.manager.ClusteredAgentManagerImpl" />
-
<bean id="cloudOrchestrator"
class="org.apache.cloudstack.engine.orchestration.CloudOrchestrator" />
<bean id="dataCenterResourceManagerImpl"
@@ -73,10 +72,16 @@
<bean id="virtualMachineEntityImpl" class="org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntityImpl" />
<bean id="virtualMachinePowerStateSyncImpl" class="com.cloud.vm.VirtualMachinePowerStateSyncImpl" />
+
<bean id= "vmWorkJobDispatcher" class="com.cloud.vm.VmWorkJobDispatcher">
<property name="name">
<util:constant static-field="com.cloud.vm.VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER"/>
</property>
+ <property name="handlers">
+ <map>
+ <entry key="VirtualMachineManagerImpl" value-ref="clusteredVirtualMachineManagerImpl" />
+ </map>
+ </property>
</bean>
<bean id= "vmWorkJobWakeupDispatcher" class="com.cloud.vm.VmWorkJobWakeupDispatcher">
<property name="name">
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/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 7201569..f89d83c 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -205,9 +205,11 @@ import com.cloud.vm.snapshot.VMSnapshotVO;
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
@Local(value = VirtualMachineManager.class)
-public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMachineManager, Listener, Configurable {
+public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMachineManager, VmWorkJobHandler, Listener, Configurable {
private static final Logger s_logger = Logger.getLogger(VirtualMachineManagerImpl.class);
+ public static final String VM_WORK_JOB_HANDLER = VirtualMachineManagerImpl.class.getSimpleName();
+
private static final String VM_SYNC_ALERT_SUBJECT = "VM state sync alert";
@Inject
@@ -270,6 +272,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
protected AffinityGroupVMMapDao _affinityGroupVMMapDao;
@Inject
protected EntityManager _entityMgr;
+
@Inject
ConfigDepot _configDepot;
@@ -731,12 +734,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public void orchestrateStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) throws InsufficientCapacityException,
- ConcurrentOperationException, ResourceUnavailableException {
-
- CallContext cctxt = CallContext.current();
+
+ private void orchestrateStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) throws InsufficientCapacityException,
+ ConcurrentOperationException, ResourceUnavailableException {
+
+ CallContext cctxt = CallContext.current();
Account account = cctxt.getCallingAccount();
User caller = cctxt.getCallingUser();
@@ -1254,9 +1256,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
- @Override
- public void orchestrateStop(String vmUuid, boolean cleanUpEvenIfUnableToStop) throws AgentUnavailableException, OperationTimedoutException,
- ConcurrentOperationException {
+ private void orchestrateStop(String vmUuid, boolean cleanUpEvenIfUnableToStop) throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
advanceStop(vm, cleanUpEvenIfUnableToStop);
@@ -1542,8 +1542,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
- @Override
- public void orchestrateStorageMigration(String vmUuid, StoragePool destPool) {
+ private void orchestrateStorageMigration(String vmUuid, StoragePool destPool) {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
try {
@@ -1628,9 +1627,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public void orchestrateMigrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException {
+
+ private void orchestrateMigrate(String vmUuid, long srcHostId, DeployDestination dest) throws ResourceUnavailableException, ConcurrentOperationException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
if (vm == null) {
if (s_logger.isDebugEnabled()) {
@@ -1898,11 +1896,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public void orchestrateMigrateWithStorage(String vmUuid, long srcHostId, long destHostId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException,
- ConcurrentOperationException {
-
+
+ private void orchestrateMigrateWithStorage(String vmUuid, long srcHostId, long destHostId, Map<Volume, StoragePool> volumeToPool) throws ResourceUnavailableException,
+ ConcurrentOperationException {
+
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
HostVO srcHost = _hostDao.findById(srcHostId);
@@ -2180,10 +2177,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public void orchestrateReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ConcurrentOperationException,
- ResourceUnavailableException {
+
+ private void orchestrateReboot(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) throws InsufficientCapacityException, ConcurrentOperationException,
+ ResourceUnavailableException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
DataCenter dc = _entityMgr.findById(DataCenter.class, vm.getDataCenterId());
@@ -3112,11 +3108,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public NicProfile orchestrateAddVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException,
- ResourceUnavailableException,
- InsufficientCapacityException {
+
+ private NicProfile orchestrateAddVmToNetwork(VirtualMachine vm, Network network, NicProfile requested) throws ConcurrentOperationException, ResourceUnavailableException,
+ InsufficientCapacityException {
CallContext cctx = CallContext.current();
s_logger.debug("Adding vm " + vm + " to network " + network + "; requested nic profile " + requested);
@@ -3221,8 +3215,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
- @Override
- public boolean orchestrateRemoveNicFromVm(VirtualMachine vm, Nic nic) throws ConcurrentOperationException, ResourceUnavailableException {
+ private boolean orchestrateRemoveNicFromVm(VirtualMachine vm, Nic nic) throws ConcurrentOperationException, ResourceUnavailableException {
CallContext cctx = CallContext.current();
VMInstanceVO vmVO = _vmDao.findById(vm.getId());
NetworkVO network = _networkDao.findById(nic.getNetworkId());
@@ -3287,10 +3280,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
// TODO will serialize on the VM object later to resolve operation conflicts
return orchestrateRemoveVmFromNetwork(vm, network, broadcastUri);
}
-
- @Override
@DB
- public boolean orchestrateRemoveVmFromNetwork(VirtualMachine vm, Network network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException {
+ private boolean orchestrateRemoveVmFromNetwork(VirtualMachine vm, Network network, URI broadcastUri) throws ConcurrentOperationException, ResourceUnavailableException {
CallContext cctx = CallContext.current();
VMInstanceVO vmVO = _vmDao.findById(vm.getId());
ReservationContext context = new ReservationContextImpl(null, null, cctx.getCallingUser(), cctx.getCallingAccount());
@@ -3456,11 +3447,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
- @Override
- public void orchestrateMigrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long oldSvcOfferingId)
- throws ResourceUnavailableException, ConcurrentOperationException {
-
- VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
+ private void orchestrateMigrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long oldSvcOfferingId)
+ throws ResourceUnavailableException, ConcurrentOperationException {
+
+ VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
s_logger.info("Migrating " + vm + " to " + dest);
vm.getServiceOfferingId();
@@ -3713,11 +3703,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
-
- @Override
- public VMInstanceVO orchestrateReConfigureVm(String vmUuid, ServiceOffering oldServiceOffering, boolean reconfiguringOnExistingHost)
- throws ResourceUnavailableException,
- ConcurrentOperationException {
+
+ private VMInstanceVO orchestrateReConfigureVm(String vmUuid, ServiceOffering oldServiceOffering, boolean reconfiguringOnExistingHost) throws ResourceUnavailableException,
+ ConcurrentOperationException {
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
long newServiceofferingId = vm.getServiceOfferingId();
@@ -4160,7 +4148,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(VirtualMachine.Type.Instance,
- vm.getId(), VmWorkStart.class.getName());
+ vm.getId(), VmWorkStart.class.getName());
if (pendingWorkJobs.size() > 0) {
assert (pendingWorkJobs.size() == 1);
@@ -4175,26 +4163,26 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
workJob.setUserId(callingUser.getId());
workJob.setStep(VmWorkJobVO.Step.Starting);
workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkStart workInfo = new VmWorkStart(callingUser.getId(), callingAccount.getId(), vm.getId());
- workInfo.setPlan(planToDeploy);
- workInfo.setParams(params);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- // Transaction syntax sugar has a cost here
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkStart workInfo = new VmWorkStart(callingUser.getId(), callingAccount.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER);
+ workInfo.setPlan(planToDeploy);
+ workInfo.setParams(params);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ // Transaction syntax sugar has a cost here
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOn, vm.getId(), null);
}
@@ -4212,40 +4200,40 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkStop.class.getName());
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkStop.class.getName());
VmWorkJobVO workJob = null;
if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
assert (pendingWorkJobs.size() == 1);
workJob = pendingWorkJobs.get(0);
- } else {
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkStop.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setStep(VmWorkJobVO.Step.Prepare);
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkStop workInfo = new VmWorkStop(user.getId(), account.getId(), vm.getId(), cleanup);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ } else {
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkStop.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setStep(VmWorkJobVO.Step.Prepare);
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkStop workInfo = new VmWorkStop(user.getId(), account.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, cleanup);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
VirtualMachine.PowerState.PowerOff, vm.getId(), null);
}
@@ -4265,8 +4253,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkReboot.class.getName());
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkReboot.class.getName());
VmWorkJobVO workJob = null;
if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
@@ -4277,28 +4265,28 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkReboot.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setStep(VmWorkJobVO.Step.Prepare);
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkReboot workInfo = new VmWorkReboot(user.getId(), account.getId(), vm.getId(), params);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
-
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setStep(VmWorkJobVO.Step.Prepare);
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkReboot workInfo = new VmWorkReboot(user.getId(), account.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, params);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
vm.getId());
}
@@ -4313,50 +4301,49 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkMigrate.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- 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(), srcHostId, dest);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkMigrate.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkMigrate.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ 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(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, dest);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
- VirtualMachine.PowerState.PowerOn, vm.getId(), vm.getPowerHostId());
+ VirtualMachine.PowerState.PowerOn, vm.getId(), vm.getPowerHostId());
}
public Outcome<VirtualMachine> migrateVmWithStorageThroughJobQueue(
- final String vmUuid, final long srcHostId, final long destHostId,
- final Map<Volume, StoragePool> volumeToPool) {
+ final String vmUuid, final long srcHostId, final long destHostId,
+ final Map<Volume, StoragePool> volumeToPool) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4367,50 +4354,49 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkMigrateWithStorage.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkMigrateWithStorage.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkMigrate.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkMigrateWithStorage workInfo = new VmWorkMigrateWithStorage(user.getId(), account.getId(), vm.getId(),
- srcHostId, destHostId, volumeToPool);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, destHostId, volumeToPool);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmStateSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"),
- VirtualMachine.PowerState.PowerOn, vm.getId(), destHostId);
+ VirtualMachine.PowerState.PowerOn, vm.getId(), destHostId);
}
public Outcome<VirtualMachine> migrateVmForScaleThroughJobQueue(
- final String vmUuid, final long srcHostId, final DeployDestination dest, final Long newSvcOfferingId) {
+ final String vmUuid, final long srcHostId, final DeployDestination dest, final Long newSvcOfferingId) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4421,49 +4407,48 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkMigrateForScale.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkMigrateForScale.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkMigrate.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkMigrateForScale workInfo = new VmWorkMigrateForScale(user.getId(), account.getId(), vm.getId(),
- srcHostId, dest, newSvcOfferingId);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, srcHostId, dest, newSvcOfferingId);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
public Outcome<VirtualMachine> migrateVmStorageThroughJobQueue(
- final String vmUuid, final StoragePool destPool) {
+ final String vmUuid, final StoragePool destPool) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4474,49 +4459,48 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkStorageMigration.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkStorageMigration.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkStorageMigration.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
VmWorkStorageMigration workInfo = new VmWorkStorageMigration(user.getId(), account.getId(), vm.getId(),
- destPool);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, destPool);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
public Outcome<VirtualMachine> addVmToNetworkThroughJobQueue(
- final VirtualMachine vm, final Network network, final NicProfile requested) {
+ final VirtualMachine vm, final Network network, final NicProfile requested) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4525,12 +4509,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
_vmDao.lockRow(vm.getId(), true);
List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkAddVmToNetwork.class.getName());
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkAddVmToNetwork.class.getName());
VmWorkJobVO workJob = null;
if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
@@ -4550,7 +4533,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
// save work context info (there are some duplications)
VmWorkAddVmToNetwork workInfo = new VmWorkAddVmToNetwork(user.getId(), account.getId(), vm.getId(),
- network, requested);
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, network, requested);
workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
_jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
@@ -4567,7 +4550,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
public Outcome<VirtualMachine> removeNicFromVmThroughJobQueue(
- final VirtualMachine vm, final Nic nic) {
+ final VirtualMachine vm, final Nic nic) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4576,49 +4559,48 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkRemoveNicFromVm.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkRemoveNicFromVm.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkRemoveNicFromVm workInfo = new VmWorkRemoveNicFromVm(user.getId(), account.getId(), vm.getId(),
- nic);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkRemoveNicFromVm.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkRemoveNicFromVm.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkRemoveNicFromVm workInfo = new VmWorkRemoveNicFromVm(user.getId(), account.getId(), vm.getId(),
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, nic);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
public Outcome<VirtualMachine> removeVmFromNetworkThroughJobQueue(
- final VirtualMachine vm, final Network network, final URI broadcastUri) {
+ final VirtualMachine vm, final Network network, final URI broadcastUri) {
final CallContext context = CallContext.current();
final User user = context.getCallingUser();
@@ -4627,44 +4609,43 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkRemoveVmFromNetwork.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkRemoveVmFromNetwork.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkRemoveVmFromNetwork workInfo = new VmWorkRemoveVmFromNetwork(user.getId(), account.getId(), vm.getId(),
- network, broadcastUri);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkRemoveVmFromNetwork.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkRemoveVmFromNetwork.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkRemoveVmFromNetwork workInfo = new VmWorkRemoveVmFromNetwork(user.getId(), account.getId(), vm.getId(),
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, network, broadcastUri);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
@@ -4680,45 +4661,114 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
Transaction.execute(new TransactionCallbackNoReturn() {
@Override
public void doInTransactionWithoutResult(TransactionStatus status) {
-
- _vmDao.lockRow(vm.getId(), true);
-
- List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
- VirtualMachine.Type.Instance, vm.getId(),
- VmWorkReconfigure.class.getName());
-
- VmWorkJobVO workJob = null;
- if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
- assert (pendingWorkJobs.size() == 1);
- workJob = pendingWorkJobs.get(0);
- } else {
-
- workJob = new VmWorkJobVO(context.getContextId());
-
- workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
- workJob.setCmd(VmWorkReconfigure.class.getName());
-
- workJob.setAccountId(account.getId());
- workJob.setUserId(user.getId());
- workJob.setVmType(vm.getType());
- workJob.setVmInstanceId(vm.getId());
-
- // save work context info (there are some duplications)
- VmWorkReconfigure workInfo = new VmWorkReconfigure(user.getId(), account.getId(), vm.getId(),
- oldServiceOffering, reconfiguringOnExistingHost);
- workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
-
- _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
- }
- context.putContextParameter("workJob", workJob);
- context.putContextParameter("jobId", new Long(workJob.getId()));
- }
- });
-
- final long jobId = (Long)context.getContextParameter("jobId");
- AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
-
+ _vmDao.lockRow(vm.getId(), true);
+
+ List<VmWorkJobVO> pendingWorkJobs = _workJobDao.listPendingWorkJobs(
+ VirtualMachine.Type.Instance, vm.getId(),
+ VmWorkReconfigure.class.getName());
+
+ VmWorkJobVO workJob = null;
+ if (pendingWorkJobs != null && pendingWorkJobs.size() > 0) {
+ assert (pendingWorkJobs.size() == 1);
+ workJob = pendingWorkJobs.get(0);
+ } else {
+
+ workJob = new VmWorkJobVO(context.getContextId());
+
+ workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
+ workJob.setCmd(VmWorkReconfigure.class.getName());
+
+ workJob.setAccountId(account.getId());
+ workJob.setUserId(user.getId());
+ workJob.setVmType(vm.getType());
+ workJob.setVmInstanceId(vm.getId());
+
+ // save work context info (there are some duplications)
+ VmWorkReconfigure workInfo = new VmWorkReconfigure(user.getId(), account.getId(), vm.getId(),
+ VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER, oldServiceOffering, reconfiguringOnExistingHost);
+ workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
+
+ _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());
+ }
+ context.putContextParameter("workJob", workJob);
+ context.putContextParameter("jobId", new Long(workJob.getId()));
+ }
+ });
+
+ final long jobId = (Long)context.getContextParameter("jobId");
+ AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(jobId);
+
return new VmJobSyncOutcome((VmWorkJobVO)context.getContextParameter("workJob"), vm.getId());
}
+
+ @Override
+ public Pair<JobInfo.Status, String> handleVmWorkJob(AsyncJob job, VmWork work) throws Exception {
+ VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, work.getVmId());
+ if (vm == null) {
+ s_logger.info("Unable to find vm " + work.getVmId());
+ }
+ assert (vm != null);
+ if (work instanceof VmWorkStart) {
+ VmWorkStart workStart = (VmWorkStart)work;
+ orchestrateStart(vm.getUuid(), workStart.getParams(), workStart.getPlan());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkStop) {
+ VmWorkStop workStop = (VmWorkStop)work;
+ orchestrateStop(vm.getUuid(), workStop.isCleanup());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkMigrate) {
+ VmWorkMigrate workMigrate = (VmWorkMigrate)work;
+ orchestrateMigrate(vm.getUuid(), workMigrate.getSrcHostId(), workMigrate.getDeployDestination());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkMigrateWithStorage) {
+ VmWorkMigrateWithStorage workMigrateWithStorage = (VmWorkMigrateWithStorage)work;
+ orchestrateMigrateWithStorage(vm.getUuid(),
+ workMigrateWithStorage.getSrcHostId(),
+ workMigrateWithStorage.getDestHostId(),
+ workMigrateWithStorage.getVolumeToPool());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkMigrateForScale) {
+ VmWorkMigrateForScale workMigrateForScale = (VmWorkMigrateForScale)work;
+ orchestrateMigrateForScale(vm.getUuid(),
+ workMigrateForScale.getSrcHostId(),
+ workMigrateForScale.getDeployDestination(),
+ workMigrateForScale.getNewServiceOfferringId());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkReboot) {
+ VmWorkReboot workReboot = (VmWorkReboot)work;
+ orchestrateReboot(vm.getUuid(), workReboot.getParams());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkAddVmToNetwork) {
+ VmWorkAddVmToNetwork workAddVmToNetwork = (VmWorkAddVmToNetwork)work;
+ NicProfile nic = orchestrateAddVmToNetwork(vm, workAddVmToNetwork.getNetwork(),
+ workAddVmToNetwork.getRequestedNicProfile());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, JobSerializerHelper.toObjectSerializedString(nic));
+ } else if (work instanceof VmWorkRemoveNicFromVm) {
+ VmWorkRemoveNicFromVm workRemoveNicFromVm = (VmWorkRemoveNicFromVm)work;
+ boolean result = orchestrateRemoveNicFromVm(vm, workRemoveNicFromVm.getNic());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED,
+ JobSerializerHelper.toObjectSerializedString(new Boolean(result)));
+ } else if (work instanceof VmWorkRemoveVmFromNetwork) {
+ VmWorkRemoveVmFromNetwork workRemoveVmFromNetwork = (VmWorkRemoveVmFromNetwork)work;
+ boolean result = orchestrateRemoveVmFromNetwork(vm,
+ workRemoveVmFromNetwork.getNetwork(), workRemoveVmFromNetwork.getBroadcastUri());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED,
+ JobSerializerHelper.toObjectSerializedString(new Boolean(result)));
+ } else if (work instanceof VmWorkReconfigure) {
+ VmWorkReconfigure workReconfigure = (VmWorkReconfigure)work;
+ reConfigureVm(vm.getUuid(), workReconfigure.getNewServiceOffering(),
+ workReconfigure.isSameHost());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else if (work instanceof VmWorkStorageMigration) {
+ VmWorkStorageMigration workStorageMigration = (VmWorkStorageMigration)work;
+ orchestrateStorageMigration(vm.getUuid(), workStorageMigration.getDestStoragePool());
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
+ } else {
+ RuntimeException e = new RuntimeException("Unsupported VM work command: " + job.getCmd());
+ String exceptionJson = JobSerializerHelper.toSerializedString(e);
+ s_logger.error("Serialize exception object into json: " + exceptionJson);
+ return new Pair<JobInfo.Status, String>(JobInfo.Status.FAILED, exceptionJson);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java b/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
index 97396f1..2a577f3 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkAddVmToNetwork.java
@@ -21,22 +21,22 @@ import com.cloud.network.Network;
public class VmWorkAddVmToNetwork extends VmWork {
private static final long serialVersionUID = 8861516006586736813L;
- Network network;
- NicProfile requstedNicProfile;
-
- public VmWorkAddVmToNetwork(long userId, long accountId, long vmId,
- Network network, NicProfile requested) {
- super(userId, accountId, vmId);
-
- this.network = network;
- this.requstedNicProfile = requested;
- }
-
- public Network getNetwork() {
- return this.network;
- }
-
- public NicProfile getRequestedNicProfile() {
- return this.requstedNicProfile;
- }
+ Network network;
+ NicProfile requstedNicProfile;
+
+ public VmWorkAddVmToNetwork(long userId, long accountId, long vmId, String handlerName,
+ Network network, NicProfile requested) {
+ super(userId, accountId, vmId, handlerName);
+
+ this.network = network;
+ requstedNicProfile = requested;
+ }
+
+ public Network getNetwork() {
+ return network;
+ }
+
+ public NicProfile getRequestedNicProfile() {
+ return requstedNicProfile;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/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 7534363..e29a99c 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -16,9 +16,12 @@
// under the License.
package com.cloud.vm;
+import java.util.Map;
+
import javax.inject.Inject;
import org.apache.log4j.Logger;
+
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobDispatcher;
@@ -26,6 +29,7 @@ import org.apache.cloudstack.framework.jobs.AsyncJobManager;
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
import org.apache.cloudstack.jobs.JobInfo;
+import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase;
import com.cloud.vm.dao.VMInstanceDao;
@@ -35,15 +39,25 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
public static final String VM_WORK_QUEUE = "VmWorkJobQueue";
public static final String VM_WORK_JOB_DISPATCHER = "VmWorkJobDispatcher";
public static final String VM_WORK_JOB_WAKEUP_DISPATCHER = "VmWorkJobWakeupDispatcher";
+
+ @Inject private VirtualMachineManagerImpl _vmMgr;
+ @Inject private AsyncJobManager _asyncJobMgr;
+ @Inject private VMInstanceDao _instanceDao;
+
+ private Map<String, VmWorkJobHandler> _handlers;
+
+ public VmWorkJobDispatcher() {
+ }
- @Inject
- private VirtualMachineManagerImpl _vmMgr;
- @Inject
- private AsyncJobManager _asyncJobMgr;
- @Inject
- private VMInstanceDao _instanceDao;
+ public Map<String, VmWorkJobHandler> getHandlers() {
+ return _handlers;
+ }
+
+ public void setHandlers(Map<String, VmWorkJobHandler> handlers) {
+ _handlers = handlers;
+ }
- @Override
+ @Override
public void runJob(AsyncJob job) {
VmWork work = null;
try {
@@ -69,80 +83,26 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
_asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Unable to deserialize VM work");
return;
}
-
- CallContext.register(work.getUserId(), work.getAccountId(), job.getRelated());
-
- VMInstanceVO vm = _instanceDao.findById(work.getVmId());
- if (vm == null) {
- s_logger.info("Unable to find vm " + work.getVmId());
+
+ if (_handlers == null || _handlers.isEmpty()) {
+ s_logger.error("Invalid startup configuration, no work job handler is found. cmd: " + job.getCmd() + ", job info: " + job.getCmdInfo());
+ _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Invalid startup configuration. no job handler is found");
+ return;
}
- assert (vm != null);
- if (work instanceof VmWorkStart) {
- VmWorkStart workStart = (VmWorkStart)work;
- _vmMgr.orchestrateStart(vm.getUuid(), workStart.getParams(), workStart.getPlan());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkStop) {
- VmWorkStop workStop = (VmWorkStop)work;
- _vmMgr.orchestrateStop(vm.getUuid(), workStop.isCleanup());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkMigrate) {
- VmWorkMigrate workMigrate = (VmWorkMigrate)work;
- _vmMgr.orchestrateMigrate(vm.getUuid(), workMigrate.getSrcHostId(), workMigrate.getDeployDestination());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkMigrateWithStorage) {
- VmWorkMigrateWithStorage workMigrateWithStorage = (VmWorkMigrateWithStorage)work;
- _vmMgr.orchestrateMigrateWithStorage(vm.getUuid(),
- workMigrateWithStorage.getSrcHostId(),
- workMigrateWithStorage.getDestHostId(),
- workMigrateWithStorage.getVolumeToPool());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkMigrateForScale) {
- VmWorkMigrateForScale workMigrateForScale = (VmWorkMigrateForScale)work;
- _vmMgr.orchestrateMigrateForScale(vm.getUuid(),
- workMigrateForScale.getSrcHostId(),
- workMigrateForScale.getDeployDestination(),
- workMigrateForScale.getNewServiceOfferringId());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkReboot) {
- VmWorkReboot workReboot = (VmWorkReboot)work;
- _vmMgr.orchestrateReboot(vm.getUuid(), workReboot.getParams());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkAddVmToNetwork) {
- VmWorkAddVmToNetwork workAddVmToNetwork = (VmWorkAddVmToNetwork)work;
- NicProfile nic = _vmMgr.orchestrateAddVmToNetwork(vm, workAddVmToNetwork.getNetwork(),
- workAddVmToNetwork.getRequestedNicProfile());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0,
- JobSerializerHelper.toObjectSerializedString(nic));
- } else if (work instanceof VmWorkRemoveNicFromVm) {
- VmWorkRemoveNicFromVm workRemoveNicFromVm = (VmWorkRemoveNicFromVm)work;
- boolean result = _vmMgr.orchestrateRemoveNicFromVm(vm, workRemoveNicFromVm.getNic());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0,
- JobSerializerHelper.toObjectSerializedString(new Boolean(result)));
- } else if (work instanceof VmWorkRemoveVmFromNetwork) {
- VmWorkRemoveVmFromNetwork workRemoveVmFromNetwork = (VmWorkRemoveVmFromNetwork)work;
- boolean result = _vmMgr.orchestrateRemoveVmFromNetwork(vm,
- workRemoveVmFromNetwork.getNetwork(), workRemoveVmFromNetwork.getBroadcastUri());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0,
- JobSerializerHelper.toObjectSerializedString(new Boolean(result)));
- } else if (work instanceof VmWorkReconfigure) {
- VmWorkReconfigure workReconfigure = (VmWorkReconfigure)work;
- _vmMgr.reConfigureVm(vm.getUuid(), workReconfigure.getNewServiceOffering(),
- workReconfigure.isSameHost());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else if (work instanceof VmWorkStorageMigration) {
- VmWorkStorageMigration workStorageMigration = (VmWorkStorageMigration)work;
- _vmMgr.orchestrateStorageMigration(vm.getUuid(), workStorageMigration.getDestStoragePool());
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
- } else {
- assert (false);
- s_logger.error("Unhandled VM work command: " + job.getCmd());
-
- RuntimeException e = new RuntimeException("Unsupported VM work command: " + job.getCmd());
- String exceptionJson = JobSerializerHelper.toSerializedString(e);
- s_logger.error("Serialize exception object into json: " + exceptionJson);
- _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, exceptionJson);
+
+ VmWorkJobHandler handler = _handlers.get(work.getHandlerName());
+
+ if (handler == null) {
+ s_logger.error("Unable to find work job handler. handler name: " + work.getHandlerName() + ", job cmd: " + job.getCmd() + ", job info: " + job.getCmdInfo());
+ _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.FAILED, 0, "Unable to find work job handler");
+ return;
}
- } catch (Throwable e) {
+
+ CallContext.register(work.getUserId(), work.getAccountId(), job.getRelated());
+
+ Pair<JobInfo.Status, String> result = handler.handleVmWorkJob(job, work);
+ _asyncJobMgr.completeAsyncJob(job.getId(), result.first(), 0, result.second());
+ } catch(Throwable e) {
s_logger.error("Unable to complete " + job, e);
String exceptionJson = JobSerializerHelper.toSerializedString(e);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkJobHandler.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkJobHandler.java b/engine/orchestration/src/com/cloud/vm/VmWorkJobHandler.java
new file mode 100644
index 0000000..6ab1bbc
--- /dev/null
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobHandler.java
@@ -0,0 +1,26 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// 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,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.vm;
+
+import org.apache.cloudstack.framework.jobs.AsyncJob;
+import org.apache.cloudstack.jobs.JobInfo;
+
+import com.cloud.utils.Pair;
+
+public interface VmWorkJobHandler {
+ Pair<JobInfo.Status, String> handleVmWorkJob(AsyncJob job, VmWork work) throws Exception;
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/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 107f5fe..5bcea9a 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
@@ -38,8 +38,9 @@ public class VmWorkMigrate extends VmWork {
private Map<String, String> storage;
long srcHostId;
- public VmWorkMigrate(long userId, long accountId, long vmId, long srcHostId, DeployDestination dst) {
- super(userId, accountId, vmId);
+ public VmWorkMigrate(long userId, long accountId, long vmId, String handlerName,
+ long srcHostId, DeployDestination dst) {
+ super(userId, accountId, vmId, handlerName);
this.srcHostId = srcHostId;
zoneId = dst.getDataCenter() != null ? dst.getDataCenter().getId() : null;
podId = dst.getPod() != null ? dst.getPod().getId() : null;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
index 399ea91..e0ad90e 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateForScale.java
@@ -19,19 +19,19 @@ package com.cloud.vm;
import com.cloud.deploy.DeployDestination;
public class VmWorkMigrateForScale extends VmWork {
- private static final long serialVersionUID = 6854870395568389613L;
-
- long srcHostId;
- DeployDestination deployDestination;
- Long newSvcOfferingId;
-
- public VmWorkMigrateForScale(long userId, long accountId, long vmId, long srcHostId,
- DeployDestination dest, Long newSvcOfferingId) {
-
- super(userId, accountId, vmId);
- this.srcHostId = srcHostId;
- this.deployDestination = dest;
- this.newSvcOfferingId = newSvcOfferingId;
+ private static final long serialVersionUID = 6854870395568389613L;
+
+ long srcHostId;
+ DeployDestination deployDestination;
+ Long newSvcOfferingId;
+
+ public VmWorkMigrateForScale(long userId, long accountId, long vmId, String handlerName, long srcHostId,
+ DeployDestination dest, Long newSvcOfferingId) {
+
+ super(userId, accountId, vmId, handlerName);
+ this.srcHostId = srcHostId;
+ deployDestination = dest;
+ this.newSvcOfferingId = newSvcOfferingId;
}
public long getSrcHostId() {
@@ -39,10 +39,10 @@ public class VmWorkMigrateForScale extends VmWork {
}
public DeployDestination getDeployDestination() {
- return this.deployDestination;
+ return deployDestination;
}
public Long getNewServiceOfferringId() {
- return this.newSvcOfferingId;
+ return newSvcOfferingId;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
index 75024db..3849556 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrateWithStorage.java
@@ -22,31 +22,31 @@ import com.cloud.storage.StoragePool;
import com.cloud.storage.Volume;
public class VmWorkMigrateWithStorage extends VmWork {
- private static final long serialVersionUID = -5626053872453569165L;
-
- long srcHostId;
- long destHostId;
- Map<Volume, StoragePool> volumeToPool;
-
- public VmWorkMigrateWithStorage(long userId, long accountId, long vmId, long srcHostId,
- long destHostId, Map<Volume, StoragePool> volumeToPool) {
-
- super(userId, accountId, vmId);
-
- this.srcHostId = srcHostId;
- this.destHostId = destHostId;
- this.volumeToPool = volumeToPool;
+ private static final long serialVersionUID = -5626053872453569165L;
+
+ long srcHostId;
+ long destHostId;
+ Map<Volume, StoragePool> volumeToPool;
+
+ public VmWorkMigrateWithStorage(long userId, long accountId, long vmId, String handlerName, long srcHostId,
+ long destHostId, Map<Volume, StoragePool> volumeToPool) {
+
+ super(userId, accountId, vmId, handlerName);
+
+ this.srcHostId = srcHostId;
+ this.destHostId = destHostId;
+ this.volumeToPool = volumeToPool;
}
public long getSrcHostId() {
- return this.srcHostId;
+ return srcHostId;
}
public long getDestHostId() {
- return this.destHostId;
+ return destHostId;
}
public Map<Volume, StoragePool> getVolumeToPool() {
- return this.volumeToPool;
+ return volumeToPool;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java b/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
index fecaaef..edecae8 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkReboot.java
@@ -28,18 +28,10 @@ public class VmWorkReboot extends VmWork {
// use serialization friendly map
private Map<String, String> rawParams;
- public VmWorkReboot(long userId, long accountId, long vmId, Map<VirtualMachineProfile.Param, Object> params) {
- super(userId, accountId, vmId);
-
- setParams(params);
- }
-
- public Map<String, String> getRawParams() {
- return rawParams;
- }
-
- public void setRawParams(Map<String, String> params) {
- rawParams = params;
+ public VmWorkReboot(long userId, long accountId, long vmId, String handlerName, Map<VirtualMachineProfile.Param, Object> params) {
+ super(userId, accountId, vmId, handlerName);
+
+ setParams(params);
}
public Map<VirtualMachineProfile.Param, Object> getParams() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java b/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
index 6e2b6d8..c7fd310 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkReconfigure.java
@@ -19,25 +19,25 @@ package com.cloud.vm;
import com.cloud.offering.ServiceOffering;
public class VmWorkReconfigure extends VmWork {
- private static final long serialVersionUID = -4517030323758086615L;
-
- ServiceOffering newServiceOffering;
- boolean sameHost;
-
- public VmWorkReconfigure(long userId, long accountId, long vmId,
- ServiceOffering newServiceOffering, boolean sameHost) {
-
- super(userId, accountId, vmId);
-
- this.newServiceOffering = newServiceOffering;
- this.sameHost = sameHost;
+ private static final long serialVersionUID = -4517030323758086615L;
+
+ ServiceOffering newServiceOffering;
+ boolean sameHost;
+
+ public VmWorkReconfigure(long userId, long accountId, long vmId, String handlerName,
+ ServiceOffering newServiceOffering, boolean sameHost) {
+
+ super(userId, accountId, vmId, handlerName);
+
+ this.newServiceOffering = newServiceOffering;
+ this.sameHost = sameHost;
}
public ServiceOffering getNewServiceOffering() {
- return this.newServiceOffering;
+ return newServiceOffering;
}
public boolean isSameHost() {
- return this.sameHost;
+ return sameHost;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
index 8efe77b..4d400b9 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveNicFromVm.java
@@ -19,15 +19,15 @@ package com.cloud.vm;
public class VmWorkRemoveNicFromVm extends VmWork {
private static final long serialVersionUID = -4265657031064437923L;
- Nic nic;
-
- public VmWorkRemoveNicFromVm(long userId, long accountId, long vmId, Nic nic) {
- super(userId, accountId, vmId);
-
- this.nic = nic;
+ Nic nic;
+
+ public VmWorkRemoveNicFromVm(long userId, long accountId, long vmId, String handlerName, Nic nic) {
+ super(userId, accountId, vmId, handlerName);
+
+ this.nic = nic;
}
public Nic getNic() {
- return this.nic;
+ return nic;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d3827e6/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
index 0e94c2f..0cb02b2 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkRemoveVmFromNetwork.java
@@ -21,23 +21,23 @@ import java.net.URI;
import com.cloud.network.Network;
public class VmWorkRemoveVmFromNetwork extends VmWork {
- private static final long serialVersionUID = -5070392905642149925L;
-
- Network network;
- URI broadcastUri;
-
- public VmWorkRemoveVmFromNetwork(long userId, long accountId, long vmId, Network network, URI broadcastUri) {
- super(userId, accountId, vmId);
-
- this.network = network;
- this.broadcastUri = broadcastUri;
- }
-
- public Network getNetwork() {
- return this.network;
- }
-
- public URI getBroadcastUri() {
- return this.broadcastUri;
- }
+ private static final long serialVersionUID = -5070392905642149925L;
+
+ Network network;
+ URI broadcastUri;
+
+ public VmWorkRemoveVmFromNetwork(long userId, long accountId, long vmId, String handlerName, Network network, URI broadcastUri) {
+ super(userId, accountId, vmId, handlerName);
+
+ this.network = network;
+ this.broadcastUri = broadcastUri;
+ }
+
+ public Network getNetwork() {
+ return network;
+ }
+
+ public URI getBroadcastUri() {
+ return broadcastUri;
+ }
}