From 0fb3286cb1cfcf255768eb34f49658f6993d78ad Mon Sep 17 00:00:00 2001 From: Min Chen Date: Mon, 22 Jul 2013 16:09:57 -0700 Subject: [PATCH] CLOUDSTACK-3513:[Automation] Failed to copy iso and template between zones. Failed to pass generated copy url to DownloadCommand. --- .../storage/image/TemplateDataFactoryImpl.java | 9 ++++++++- .../com/cloud/storage/download/DownloadMonitorImpl.java | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java index e369c1c033e..be0ce4e6b99 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java @@ -100,6 +100,13 @@ public class TemplateDataFactoryImpl implements TemplateDataFactory { @Override public TemplateInfo getTemplate(DataObject obj, DataStore store) { - return this.getTemplate(obj.getId(), store); + TemplateObject tmpObj = (TemplateObject) this.getTemplate(obj.getId(), store); + // carry over url set in passed in data object, for copyTemplate case + // where url is generated on demand and not persisted in DB. + // need to think of a more generic way to pass these runtime information + // carried through DataObject post 4.2 + TemplateObject origTmpl = (TemplateObject) obj; + tmpObj.setUrl(origTmpl.getUrl()); + return tmpObj; } } diff --git a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java index 4918bf55f1f..f0550855bb5 100755 --- a/server/src/com/cloud/storage/download/DownloadMonitorImpl.java +++ b/server/src/com/cloud/storage/download/DownloadMonitorImpl.java @@ -55,6 +55,7 @@ import com.cloud.agent.api.storage.Proxy; import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.storage.RegisterVolumePayload; +import com.cloud.storage.VMTemplateStorageResourceAssoc; import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.Volume; @@ -215,7 +216,15 @@ public class DownloadMonitorImpl extends ManagerBase implements DownloadMonitor if (isTemplateUpdateable(templateId, store.getId())) { if (template != null && template.getUri() != null) { initiateTemplateDownload(template, callback); + } else { + s_logger.info("Template url is null, cannot download"); + DownloadAnswer ans = new DownloadAnswer("Template url is null", VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR.UNKNOWN); + callback.complete(ans); } + } else { + s_logger.info("Template download is already in progress or already downloaded"); + DownloadAnswer ans = new DownloadAnswer("Template download is already in progress or already downloaded", VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR.UNKNOWN); + callback.complete(ans); } }