From 3b8c8111437571e4b948541bc6c295657c024107 Mon Sep 17 00:00:00 2001 From: nit Date: Sun, 19 Sep 2010 18:33:47 +0530 Subject: [PATCH] bug 4286: Making ExtractVolumeCommand async and some code cleanup --- .../async/executor/ExtractVolumeExecutor.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 server/src/com/cloud/async/executor/ExtractVolumeExecutor.java diff --git a/server/src/com/cloud/async/executor/ExtractVolumeExecutor.java b/server/src/com/cloud/async/executor/ExtractVolumeExecutor.java new file mode 100644 index 00000000000..34cde577654 --- /dev/null +++ b/server/src/com/cloud/async/executor/ExtractVolumeExecutor.java @@ -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; + } + +}