Skip to content

Commit bd7d41b

Browse files
authored
server: fix VM with ISO attached migration issue (#3935)
As previously described by PR #3929: If vm has attached ISO, the migration fails with error message "org.libvirt.LibvirtException: Cannot access storage file /mnt/b33e5a1d-e4ea-3465-b6ac-c98dc8ff8af0/207-2-cc5fd717-2d57-3bb3-bcf6-2c930268db6c.iso"
1 parent 4be7001 commit bd7d41b

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public class TemplateDataFactoryImpl implements TemplateDataFactory {
6868
@Override
6969
public TemplateInfo getTemplate(long templateId, DataStore store) {
7070
VMTemplateVO templ = imageDataDao.findById(templateId);
71-
if (store == null) {
71+
if (store == null && !templ.isDirectDownload()) {
7272
TemplateObject tmpl = TemplateObject.getTemplate(templ, null);
7373
return tmpl;
7474
}

server/src/main/java/com/cloud/template/TemplateManagerImpl.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -584,10 +584,8 @@ public void prepareIsoForVmProfile(VirtualMachineProfile profile, DeployDestinat
584584
}
585585
poolId = storagePool.getId();
586586
}
587-
template = prepareIso(vm.getIsoId(), vm.getDataCenterId(), dest.getHost().getId(), poolId);
588-
} else {
589-
template = _tmplFactory.getTemplate(vm.getIsoId(), DataStoreRole.Primary, dest.getDataCenter().getId());
590587
}
588+
template = prepareIso(vm.getIsoId(), vm.getDataCenterId(), dest.getHost().getId(), poolId);
591589

592590
if (template == null){
593591
s_logger.error("Failed to prepare ISO on secondary or cache storage");

0 commit comments

Comments
 (0)