bug 9909: upload manager support multiple secondary storage

This commit is contained in:
Abhinandan Prateek 2011-05-30 12:39:15 +05:30
parent baa638a352
commit d006fd141c
3 changed files with 32 additions and 15 deletions

View File

@ -539,8 +539,8 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
_params.put(StorageLayer.InstanceConfigKey, _storage); _params.put(StorageLayer.InstanceConfigKey, _storage);
_dlMgr = new DownloadManagerImpl(); _dlMgr = new DownloadManagerImpl();
_dlMgr.configure("DownloadManager", _params); _dlMgr.configure("DownloadManager", _params);
//_upldMgr = new UploadManagerImpl(); _upldMgr = new UploadManagerImpl();
//_upldMgr.configure("UploadManager", params); _upldMgr.configure("UploadManager", params);
} catch (ConfigurationException e) { } catch (ConfigurationException e) {
s_logger.warn("Caught problem while configuring DownloadManager", e); s_logger.warn("Caught problem while configuring DownloadManager", e);
return false; return false;

View File

@ -200,9 +200,18 @@ public class UploadMonitorImpl implements UploadMonitor {
Type type = (template.getFormat() == ImageFormat.ISO) ? Type.ISO : Type.TEMPLATE ; Type type = (template.getFormat() == ImageFormat.ISO) ? Type.ISO : Type.TEMPLATE ;
//Check if ssvm is up List<HostVO> storageServerVMs = _serverDao.listByTypeDataCenter(Host.Type.SecondaryStorageVM, dataCenterId);
HostVO sserver = storageServers.get(0); //Check if one ssvm is up
if(sserver.getStatus() != com.cloud.host.Status.Up){ boolean no_vm_up = true;
HostVO use_ssvm = null;
for (HostVO ssvm: storageServerVMs){
if(ssvm.getStatus() == com.cloud.host.Status.Up){
no_vm_up = false;
use_ssvm = ssvm;
break;
}
}
if(no_vm_up){
throw new CloudRuntimeException("Couldnt create extract link - Secondary Storage Vm is not up"); throw new CloudRuntimeException("Couldnt create extract link - Secondary Storage Vm is not up");
} }
@ -213,7 +222,7 @@ public class UploadMonitorImpl implements UploadMonitor {
} }
// It doesn't exist so create a DB entry. // It doesn't exist so create a DB entry.
UploadVO uploadTemplateObj = new UploadVO(sserver.getId(), template.getId(), new Date(), UploadVO uploadTemplateObj = new UploadVO(use_ssvm.getId(), template.getId(), new Date(),
Status.DOWNLOAD_URL_NOT_CREATED, 0, type, Mode.HTTP_DOWNLOAD); Status.DOWNLOAD_URL_NOT_CREATED, 0, type, Mode.HTTP_DOWNLOAD);
uploadTemplateObj.setInstallPath(vmTemplateHost.getInstallPath()); uploadTemplateObj.setInstallPath(vmTemplateHost.getInstallPath());
_uploadDao.persist(uploadTemplateObj); _uploadDao.persist(uploadTemplateObj);
@ -221,7 +230,7 @@ public class UploadMonitorImpl implements UploadMonitor {
// Create Symlink at ssvm // Create Symlink at ssvm
String uuid = UUID.randomUUID().toString() + ".vhd"; String uuid = UUID.randomUUID().toString() + ".vhd";
CreateEntityDownloadURLCommand cmd = new CreateEntityDownloadURLCommand(vmTemplateHost.getInstallPath(), uuid); CreateEntityDownloadURLCommand cmd = new CreateEntityDownloadURLCommand(vmTemplateHost.getInstallPath(), uuid);
long result = send(sserver.getId(), cmd, null); long result = send(use_ssvm.getId(), cmd, null);
if (result == -1){ if (result == -1){
errorString = "Unable to create a link for " +type+ " id:"+template.getId(); errorString = "Unable to create a link for " +type+ " id:"+template.getId();
s_logger.error(errorString); s_logger.error(errorString);

View File

@ -262,13 +262,21 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
} }
} }
HostVO secondaryStorageHost = _storageMgr.getSecondaryStorageHost(zoneId); List<HostVO> sservers = _storageMgr.getSecondaryStorageHosts(zoneId);
VMTemplateHostVO tmpltHostRef = null; VMTemplateHostVO tmpltHostRef = null;
if (secondaryStorageHost != null) { if (sservers != null) {
for(HostVO secondaryStorageHost: sservers){
tmpltHostRef = _tmpltHostDao.findByHostTemplate(secondaryStorageHost.getId(), templateId); tmpltHostRef = _tmpltHostDao.findByHostTemplate(secondaryStorageHost.getId(), templateId);
if (tmpltHostRef != null && tmpltHostRef.getDownloadState() != com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED) { if (tmpltHostRef != null){
if (tmpltHostRef.getDownloadState() != com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED) {
throw new InvalidParameterValueException("The " + desc + " has not been downloaded "); throw new InvalidParameterValueException("The " + desc + " has not been downloaded ");
} }
else {
break;
}
}
}
} }
Upload.Mode extractMode; Upload.Mode extractMode;