mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-21 21:13:53 +01:00
bug 9909: upload manager support multiple secondary storage
This commit is contained in:
parent
baa638a352
commit
d006fd141c
@ -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;
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user