You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by li...@apache.org on 2014/05/02 14:39:40 UTC
[11/13] git commit: updated refs/heads/multiple-disk-ova to 3532ffe
CLOUDSTACK-4757. Template copy - Copy all Datadisk templates that belong to the template along with the template.
Disallow individual copy of Datadisk templates
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6a384415
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6a384415
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6a384415
Branch: refs/heads/multiple-disk-ova
Commit: 6a3844155d405e750af0d7b74d43ffcbb5b8e605
Parents: 07d514f
Author: Likitha Shetty <li...@citrix.com>
Authored: Tue Apr 29 17:48:34 2014 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Fri May 2 17:52:12 2014 +0530
----------------------------------------------------------------------
.../com/cloud/template/TemplateManagerImpl.java | 25 ++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6a384415/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java
index 1268f24..8083be7 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -656,12 +656,33 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
UsageEventUtils.publishUsageEvent(copyEventType, account.getId(), dstZoneId, tmpltId, null, null, null, srcTmpltStore.getPhysicalSize(),
srcTmpltStore.getSize(), template.getClass().getName(), template.getUuid());
}
- return true;
+ // Copy every Datadisk template that belongs to the template to Destination zone
+ List<VMTemplateVO> dataDiskTemplates = _tmpltDao.listByParentTemplatetId(template.getId());
+ if (dataDiskTemplates != null && !dataDiskTemplates.isEmpty()) {
+ for (VMTemplateVO dataDiskTemplate : dataDiskTemplates) {
+ s_logger.debug("Copying " + dataDiskTemplates.size() + " for source template " + template.getId() + ". Copy all Datadisk templates to destination datastore " + dstSecStore.getName());
+ TemplateInfo srcDataDiskTemplate = _tmplFactory.getTemplate(dataDiskTemplate.getId(), srcSecStore);
+ AsyncCallFuture<TemplateApiResult> dataDiskCopyFuture = _tmpltSvr.copyTemplate(srcDataDiskTemplate, dstSecStore);
+ try {
+ TemplateApiResult dataDiskCopyResult = dataDiskCopyFuture.get();
+ if (dataDiskCopyResult.isFailed()) {
+ s_logger.error("Copy of datadisk template: " + srcDataDiskTemplate.getId() + " to image store: " + dstSecStore.getName()
+ + " failed with error: " + dataDiskCopyResult.getResult() + " , will try copying the next one");
+ continue; // Continue to copy next Datadisk template
+ }
+ _tmpltDao.addTemplateToZone(dataDiskTemplate, dstZoneId);
+ _resourceLimitMgr.incrementResourceCount(dataDiskTemplate.getAccountId(), ResourceType.secondary_storage, dataDiskTemplate.getSize());
+ } catch (Exception ex) {
+ s_logger.error("Failed to copy datadisk template: " + srcDataDiskTemplate.getId() + " to image store: " + dstSecStore.getName()
+ + " , will try copying the next one");
+ }
+ }
+ }
} catch (Exception ex) {
s_logger.debug("failed to copy template to image store:" + dstSecStore.getName() + " ,will try next one");
}
}
- return false;
+ return true;
}