Search in sources :

Example 11 with AsyncJobVO

use of org.apache.cloudstack.framework.jobs.impl.AsyncJobVO in project cloudstack by apache.

the class VolumeApiServiceImpl method attachVolumeToVmThroughJobQueue.

public Outcome<Volume> attachVolumeToVmThroughJobQueue(final Long vmId, final Long volumeId, final Long deviceId) {
    final CallContext context = CallContext.current();
    final User callingUser = context.getCallingUser();
    final Account callingAccount = context.getCallingAccount();
    final VMInstanceVO vm = _vmInstanceDao.findById(vmId);
    VmWorkJobVO workJob = new VmWorkJobVO(context.getContextId());
    workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER);
    workJob.setCmd(VmWorkAttachVolume.class.getName());
    workJob.setAccountId(callingAccount.getId());
    workJob.setUserId(callingUser.getId());
    workJob.setStep(VmWorkJobVO.Step.Starting);
    workJob.setVmType(VirtualMachine.Type.Instance);
    workJob.setVmInstanceId(vm.getId());
    workJob.setRelated(AsyncJobExecutionContext.getOriginJobId());
    // save work context info (there are some duplications)
    VmWorkAttachVolume workInfo = new VmWorkAttachVolume(callingUser.getId(), callingAccount.getId(), vm.getId(), VolumeApiServiceImpl.VM_WORK_JOB_HANDLER, volumeId, deviceId);
    workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
    _jobMgr.submitAsyncJob(workJob, VmWorkConstants.VM_WORK_QUEUE, vm.getId());
    AsyncJobVO jobVo = _jobMgr.getAsyncJob(workJob.getId());
    s_logger.debug("New job " + workJob.getId() + ", result field: " + jobVo.getResult());
    AsyncJobExecutionContext.getCurrentExecutionContext().joinJob(workJob.getId());
    return new VmJobVolumeOutcome(workJob, volumeId);
}
Also used : Account(com.cloud.user.Account) User(com.cloud.user.User) VmWorkAttachVolume(com.cloud.vm.VmWorkAttachVolume) VMInstanceVO(com.cloud.vm.VMInstanceVO) CallContext(org.apache.cloudstack.context.CallContext) VmWorkJobVO(org.apache.cloudstack.framework.jobs.impl.VmWorkJobVO) AsyncJobVO(org.apache.cloudstack.framework.jobs.impl.AsyncJobVO)

Aggregations

AsyncJobVO (org.apache.cloudstack.framework.jobs.impl.AsyncJobVO)11 Account (com.cloud.user.Account)4 Filter (com.cloud.utils.db.Filter)4 SnapshotScheduleVO (com.cloud.storage.SnapshotScheduleVO)2 VmWorkAttachVolume (com.cloud.vm.VmWorkAttachVolume)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 ConfigurationException (javax.naming.ConfigurationException)2 CallContext (org.apache.cloudstack.context.CallContext)2 DispatchTask (com.cloud.api.dispatch.DispatchTask)1 DataCenterVO (com.cloud.dc.DataCenterVO)1 ConcurrentOperationException (com.cloud.exception.ConcurrentOperationException)1 InsufficientStorageCapacityException (com.cloud.exception.InsufficientStorageCapacityException)1 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)1 StorageUnavailableException (com.cloud.exception.StorageUnavailableException)1 SnapshotVO (com.cloud.storage.SnapshotVO)1 VolumeVO (com.cloud.storage.VolumeVO)1 AccountVO (com.cloud.user.AccountVO)1 User (com.cloud.user.User)1 UserAccount (com.cloud.user.UserAccount)1