mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
server: fix failed to remove template/iso if upload from local fails (#4626)
* server: fix failed to remove template/iso if upload from local fails When upload template/iso/volume from local fails, the install_path will not be a full path of file so removing it will fail. ``` mysql> select install_path from template_store_ref; +--------------------------------------------------------------------+ | install_path | +--------------------------------------------------------------------+ | template/tmpl/1/3/805f4763-248e-40ec-b79a-b868cc480d0a.qcow2 | | template/tmpl/1/4/c7e32c9e-5e72-3726-85cf-aa5ccd84118d.qcow2 | | template/tmpl/2/201/bc4f4f08-138a-31b8-af1a-d4450eff7982.qcow2 | | template/tmpl/2/202 | | template/tmpl/2/203/203-2-d47f8cde-a2a8-31e7-a826-2628ad98a6c8.iso | | template/tmpl/2/204 | | template/tmpl/5/205 | | template/tmpl/2/206 | | template/tmpl/2/207 | | template/tmpl/2/208 | | template/tmpl/2/209 | | template/tmpl/2/210 | +--------------------------------------------------------------------+ 12 rows in set (0.00 sec) mysql> select install_path from volume_store_ref; +---------------------------------------------------------+ | install_path | +---------------------------------------------------------+ | volumes/2/22 | | volumes/2/19/f93face9-6521-4184-b89a-cb07f86bbae8.qcow2 | | volumes/2/23 | | volumes/2/24 | +---------------------------------------------------------+ 4 rows in set (0.00 sec) ``` * server: disallow removing template/iso in NotUpload and UploadInProgress state
This commit is contained in:
parent
370d3f2e8e
commit
58a3f90a51
@ -456,6 +456,10 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat
|
||||
throw new InvalidParameterValueException("Please specify a valid template.");
|
||||
}
|
||||
|
||||
if (template.getState() == VirtualMachineTemplate.State.NotUploaded || template.getState() == VirtualMachineTemplate.State.UploadInProgress) {
|
||||
throw new InvalidParameterValueException("The template is either getting uploaded or it may be initiated shortly, please wait for it to be completed");
|
||||
}
|
||||
|
||||
return new TemplateProfile(userId, template, zoneId);
|
||||
}
|
||||
|
||||
@ -495,6 +499,10 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat
|
||||
throw new InvalidParameterValueException("Please specify a valid iso.");
|
||||
}
|
||||
|
||||
if (template.getState() == VirtualMachineTemplate.State.NotUploaded || template.getState() == VirtualMachineTemplate.State.UploadInProgress) {
|
||||
throw new InvalidParameterValueException("The iso is either getting uploaded or it may be initiated shortly, please wait for it to be completed");
|
||||
}
|
||||
|
||||
return new TemplateProfile(userId, template, zoneId);
|
||||
}
|
||||
|
||||
|
||||
@ -2253,6 +2253,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
||||
File tmpltParent = null;
|
||||
if (tmpltPath.exists() && tmpltPath.isDirectory()) {
|
||||
tmpltParent = tmpltPath;
|
||||
} else if (absoluteTemplatePath.endsWith(File.separator + obj.getId())) {
|
||||
// the path ends with <account id>/<template id>, if upload fails
|
||||
tmpltParent = tmpltPath;
|
||||
} else {
|
||||
tmpltParent = tmpltPath.getParentFile();
|
||||
}
|
||||
@ -2357,6 +2360,9 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
||||
if (volPath.exists() && volPath.isDirectory()) {
|
||||
// for vmware, absoluteVolumePath represents a directory where volume files are located.
|
||||
tmpltParent = volPath;
|
||||
} else if (absoluteVolumePath.endsWith(File.separator + obj.getId())) {
|
||||
// the path ends with <account id>/<volume id>, if upload fails
|
||||
tmpltParent = volPath;
|
||||
} else {
|
||||
// for other hypervisors, the volume .vhd or .qcow2 file path is passed
|
||||
tmpltParent = new File(absoluteVolumePath).getParentFile();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user