fixed a template creation bug

This commit is contained in:
anthony 2011-06-28 17:55:21 -07:00
parent b058a0226d
commit f85fb432ba
4 changed files with 22 additions and 10 deletions

View File

@ -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.

View File

@ -431,12 +431,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);
}
}

View File

@ -204,4 +204,6 @@ public interface StorageManager extends Manager {
List<VMInstanceVO> listByStoragePool(long storagePoolId);
StoragePoolVO findLocalStorageOnHost(long hostId);
VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId);
}

View File

@ -980,6 +980,21 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag
return null;
}
@Override
public VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId) {
List<HostVO> 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<HostVO> hosts = _hostDao.listSecondaryStorageHosts(zoneId);