mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-20 20:43:43 +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);
|
||||
_dlMgr = new DownloadManagerImpl();
|
||||
_dlMgr.configure("DownloadManager", _params);
|
||||
//_upldMgr = new UploadManagerImpl();
|
||||
//_upldMgr.configure("UploadManager", params);
|
||||
_upldMgr = new UploadManagerImpl();
|
||||
_upldMgr.configure("UploadManager", params);
|
||||
} catch (ConfigurationException e) {
|
||||
s_logger.warn("Caught problem while configuring DownloadManager", e);
|
||||
return false;
|
||||
|
||||
@ -200,11 +200,20 @@ public class UploadMonitorImpl implements UploadMonitor {
|
||||
|
||||
Type type = (template.getFormat() == ImageFormat.ISO) ? Type.ISO : Type.TEMPLATE ;
|
||||
|
||||
//Check if ssvm is up
|
||||
HostVO sserver = storageServers.get(0);
|
||||
if(sserver.getStatus() != com.cloud.host.Status.Up){
|
||||
throw new CloudRuntimeException("Couldnt create extract link - Secondary Storage Vm is not up");
|
||||
}
|
||||
List<HostVO> storageServerVMs = _serverDao.listByTypeDataCenter(Host.Type.SecondaryStorageVM, dataCenterId);
|
||||
//Check if one ssvm is 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");
|
||||
}
|
||||
|
||||
//Check if it already exists.
|
||||
List<UploadVO> extractURLList = _uploadDao.listByTypeUploadStatus(template.getId(), type, UploadVO.Status.DOWNLOAD_URL_CREATED);
|
||||
@ -213,7 +222,7 @@ public class UploadMonitorImpl implements UploadMonitor {
|
||||
}
|
||||
|
||||
// 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);
|
||||
uploadTemplateObj.setInstallPath(vmTemplateHost.getInstallPath());
|
||||
_uploadDao.persist(uploadTemplateObj);
|
||||
@ -221,7 +230,7 @@ public class UploadMonitorImpl implements UploadMonitor {
|
||||
// Create Symlink at ssvm
|
||||
String uuid = UUID.randomUUID().toString() + ".vhd";
|
||||
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){
|
||||
errorString = "Unable to create a link for " +type+ " id:"+template.getId();
|
||||
s_logger.error(errorString);
|
||||
@ -230,7 +239,7 @@ public class UploadMonitorImpl implements UploadMonitor {
|
||||
|
||||
//Construct actual URL locally now that the symlink exists at SSVM
|
||||
List<SecondaryStorageVmVO> ssVms = _secStorageVmDao.getSecStorageVmListInStates(SecondaryStorageVm.Role.templateProcessor, dataCenterId, State.Running);
|
||||
if (ssVms.size() > 0) {
|
||||
if (ssVms.size() > 0) {
|
||||
SecondaryStorageVmVO ssVm = ssVms.get(0);
|
||||
if (ssVm.getPublicIpAddress() == null) {
|
||||
errorString = "A running secondary storage vm has a null public ip?";
|
||||
|
||||
@ -262,12 +262,20 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
|
||||
}
|
||||
}
|
||||
|
||||
HostVO secondaryStorageHost = _storageMgr.getSecondaryStorageHost(zoneId);
|
||||
List<HostVO> sservers = _storageMgr.getSecondaryStorageHosts(zoneId);
|
||||
|
||||
VMTemplateHostVO tmpltHostRef = null;
|
||||
if (secondaryStorageHost != null) {
|
||||
tmpltHostRef = _tmpltHostDao.findByHostTemplate(secondaryStorageHost.getId(), templateId);
|
||||
if (tmpltHostRef != null && tmpltHostRef.getDownloadState() != com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED) {
|
||||
throw new InvalidParameterValueException("The " + desc + " has not been downloaded ");
|
||||
if (sservers != null) {
|
||||
for(HostVO secondaryStorageHost: sservers){
|
||||
tmpltHostRef = _tmpltHostDao.findByHostTemplate(secondaryStorageHost.getId(), templateId);
|
||||
if (tmpltHostRef != null){
|
||||
if (tmpltHostRef.getDownloadState() != com.cloud.storage.VMTemplateStorageResourceAssoc.Status.DOWNLOADED) {
|
||||
throw new InvalidParameterValueException("The " + desc + " has not been downloaded ");
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user