fixed a template creation bug

Conflicts:

	server/src/com/cloud/storage/StorageManager.java
This commit is contained in:
anthony 2011-06-28 19:17:34 -07:00
parent e186369c51
commit d902d313b7
4 changed files with 26 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

@ -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);
}
}

View File

@ -200,4 +200,10 @@ public interface StorageManager extends Manager {
List<HostVO> getSecondaryStorageHosts(long zoneId);
List<StoragePoolVO> ListByDataCenterHypervisor(long datacenterId, HypervisorType type);
List<VMInstanceVO> listByStoragePool(long storagePoolId);
StoragePoolVO findLocalStorageOnHost(long hostId);
VMTemplateHostVO getTemplateHostRef(long zoneId, long tmpltId);
}

View File

@ -974,6 +974,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);