From d902d313b744b6ab4cba305782ce657348acb15a Mon Sep 17 00:00:00 2001 From: anthony Date: Tue, 28 Jun 2011 19:17:34 -0700 Subject: [PATCH] fixed a template creation bug Conflicts: server/src/com/cloud/storage/StorageManager.java --- build/cloud.properties | 8 ++++---- server/src/com/cloud/api/ApiDBUtils.java | 7 +------ server/src/com/cloud/storage/StorageManager.java | 6 ++++++ .../src/com/cloud/storage/StorageManagerImpl.java | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/build/cloud.properties b/build/cloud.properties index 65b9f126d5e..b3a50c6c154 100755 --- a/build/cloud.properties +++ b/build/cloud.properties @@ -3,12 +3,12 @@ # major.minor.patch versioning scheme for vmops company.major.version=2 company.minor.version=2 -company.patch.version=4 +company.patch.version=8 svn.revision=2 # copyright year -company.copyright.year=2008-2010 -company.url=http://www.vmops.com +company.copyright.year=2008-2011 +company.url=http://www.cloud.com company.license.name=GPL -company.name=VMOps Inc. +company.name=Cloud.com Inc. diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 7cd1dd0f339..4c209c98825 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -435,12 +435,7 @@ public class ApiDBUtils { if (vmTemplate.getHypervisorType() == HypervisorType.BareMetal) { return _templateHostDao.listByTemplateId(templateId).get(0); } else { - HostVO secondaryStorageHost = _storageMgr.getSecondaryStorageHost(zoneId); - if (secondaryStorageHost == null) { - return null; - } else { - return _templateHostDao.findByHostTemplate(secondaryStorageHost.getId(), templateId); - } + return _storageMgr.getTemplateHostRef(zoneId, templateId); } } diff --git a/server/src/com/cloud/storage/StorageManager.java b/server/src/com/cloud/storage/StorageManager.java index ec1dbd45774..4dd67699036 100755 --- a/server/src/com/cloud/storage/StorageManager.java +++ b/server/src/com/cloud/storage/StorageManager.java @@ -200,4 +200,10 @@ public interface StorageManager extends Manager { List getSecondaryStorageHosts(long zoneId); List ListByDataCenterHypervisor(long datacenterId, HypervisorType type); + + List listByStoragePool(long storagePoolId); + + StoragePoolVO findLocalStorageOnHost(long hostId); + + VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId); } diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 819c44988a2..eda26080dcb 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -974,6 +974,21 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag return null; } + @Override + public VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId) { + List hosts = _hostDao.listSecondaryStorageHosts(zoneId); + if( hosts == null || hosts.size() == 0) { + return null; + } + for( HostVO host : hosts ) { + VMTemplateHostVO tmpltHost = _vmTemplateHostDao.findByHostTemplate(host.getId(), tmpltId); + if (tmpltHost != null && !tmpltHost.getDestroyed() && tmpltHost.getDownloadState() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) { + return tmpltHost; + } + } + return null; + } + @Override public HostVO getSecondaryStorageHost(long zoneId) { List hosts = _hostDao.listSecondaryStorageHosts(zoneId);