SWIFT : check swift in storage allocator

This commit is contained in:
anthony 2011-12-23 15:45:03 -08:00
parent a24589710a
commit 6e259b2cb1
4 changed files with 21 additions and 2 deletions

View File

@ -46,6 +46,7 @@ import com.cloud.storage.VMTemplateHostVO;
import com.cloud.storage.VMTemplateStoragePoolVO;
import com.cloud.storage.VMTemplateStorageResourceAssoc;
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
import com.cloud.storage.VMTemplateSwiftVO;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.Volume.Type;
import com.cloud.storage.dao.StoragePoolDao;
@ -54,6 +55,7 @@ import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VMTemplateHostDao;
import com.cloud.storage.dao.VMTemplatePoolDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.swift.SwiftManager;
import com.cloud.template.TemplateManager;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
@ -75,6 +77,8 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
@Inject StoragePoolHostDao _poolHostDao;
@Inject ConfigurationDao _configDao;
@Inject ClusterDao _clusterDao;
@Inject
SwiftManager _swiftMgr;
float _storageOverprovisioningFactor;
long _extraBytesPerVolume = 0;
Random _rand;
@ -238,7 +242,15 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
VMTemplateHostVO templateHostVO = _storageMgr.findVmTemplateHost(template.getId(), pool);
if (templateHostVO == null) {
s_logger.info("Did not find template downloaded on secondary hosts in zone " + plan.getDataCenterId());
VMTemplateSwiftVO templateSwiftVO = _swiftMgr.findByTmpltId(template.getId());
if (templateSwiftVO == null) {
s_logger.info("Did not find template downloaded on secondary hosts in zone " + plan.getDataCenterId());
}
long templateSize = templateSwiftVO.getPhysicalSize();
if (templateSize == 0) {
templateSize = templateSwiftVO.getSize();
}
totalAllocatedSize += (templateSize + _extraBytesPerVolume);
return false;
} else {
long templateSize = templateHostVO.getPhysicalSize();

View File

@ -34,6 +34,7 @@ import com.cloud.api.commands.ListSwiftsCmd;
import com.cloud.exception.DiscoveryException;
import com.cloud.storage.Swift;
import com.cloud.storage.SwiftVO;
import com.cloud.storage.VMTemplateSwiftVO;
import com.cloud.utils.component.Manager;
public interface SwiftManager extends Manager {
@ -58,4 +59,6 @@ public interface SwiftManager extends Manager {
Long chooseZoneForTmpltExtract(Long tmpltId);
List<SwiftVO> listSwifts(ListSwiftsCmd cmd);
VMTemplateSwiftVO findByTmpltId(Long tmpltId);
}

View File

@ -278,6 +278,10 @@ public class SwiftManagerImpl implements SwiftManager {
}
@Override
public VMTemplateSwiftVO findByTmpltId(Long tmpltId) {
return _vmTmpltSwiftlDao.findOneByTemplateId(tmpltId);
}
@Override
public boolean stop() {

View File

@ -475,7 +475,7 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
s_logger.warn(errMsg);
return errMsg;
}
VMTemplateSwiftVO tmpltSwift = _tmpltSwiftDao.findOneByTemplateId(templateId);
VMTemplateSwiftVO tmpltSwift = _swiftMgr.findByTmpltId(templateId);
if ( tmpltSwift == null ) {
String errMsg = " Template " + templateId + " doesn't exist in swift";
s_logger.warn(errMsg);