bug 4286: Making ExtractVolumeCommand async and some code cleanup

This commit is contained in:
nit 2010-09-19 18:33:47 +05:30
parent 1a30ffbdc0
commit 3b8c811143
1 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,38 @@
package com.cloud.async.executor;
import org.apache.log4j.Logger;
import com.cloud.api.BaseCmd;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobResult;
import com.cloud.async.AsyncJobVO;
import com.cloud.async.BaseAsyncJobExecutor;
import com.cloud.serializer.GsonHelper;
import com.cloud.server.ManagementServer;
import com.google.gson.Gson;
public class ExtractVolumeExecutor extends BaseAsyncJobExecutor {
public static final Logger s_logger = Logger.getLogger(ExtractVolumeExecutor.class.getName());
@Override
public boolean execute() {
Gson gson = GsonHelper.getBuilder().create();
AsyncJobManager asyncMgr = getAsyncJobMgr();
AsyncJobVO job = getJob();
ExtractTemplateParam param = gson.fromJson(job.getCmdInfo(), ExtractTemplateParam.class);
ManagementServer managementServer = asyncMgr.getExecutorContext().getManagementServer();
try {
managementServer.extractVolume(param.getUrl(), param.getTemplateId(), param.getZoneId(), param.getEventId(), getJob().getId());
} catch (Exception e) {
s_logger.warn("Unable to extract volume: " + e.getMessage(), e);
asyncMgr.completeAsyncJob(getJob().getId(), AsyncJobResult.STATUS_FAILED, BaseCmd.INTERNAL_ERROR, e.getMessage());
}
return true;
}
}