Skip to content

Commit 4d76054

Browse files
stephankrugggStephan Krug
andauthored
Fix volume snapshot in VM with attached ISO (#7037)
Co-authored-by: Stephan Krug <stephan.krug@scclouds.com.br>
1 parent af59e76 commit 4d76054

2 files changed

Lines changed: 22 additions & 8 deletions

File tree

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public boolean parseDomainXML(String domXML) {
121121
}
122122
def.defFileBasedDisk(diskFile, diskLabel, DiskDef.DiskBus.valueOf(bus.toUpperCase()), fmt);
123123
} else if (device.equalsIgnoreCase("cdrom")) {
124-
def.defISODisk(diskFile , i+1);
124+
def.defISODisk(diskFile, i+1, diskLabel);
125125
}
126126
} else if (type.equalsIgnoreCase("block")) {
127127
def.defBlockBasedDisk(diskDev, diskLabel,

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -860,17 +860,31 @@ public void defISODisk(String volPath, boolean isUefiEnabled) {
860860
}
861861

862862
public void defISODisk(String volPath, Integer devId) {
863-
if (devId == null) {
863+
defISODisk(volPath, devId, null);
864+
}
865+
866+
public void defISODisk(String volPath, Integer devId, String diskLabel) {
867+
if (devId == null && StringUtils.isBlank(diskLabel)) {
868+
s_logger.debug(String.format("No ID or label informed for volume [%s].", volPath));
864869
defISODisk(volPath);
870+
return;
871+
}
872+
873+
_diskType = DiskType.FILE;
874+
_deviceType = DeviceType.CDROM;
875+
_sourcePath = volPath;
876+
877+
if (StringUtils.isNotBlank(diskLabel)) {
878+
s_logger.debug(String.format("Using informed label [%s] for volume [%s].", diskLabel, volPath));
879+
_diskLabel = diskLabel;
865880
} else {
866-
_diskType = DiskType.FILE;
867-
_deviceType = DeviceType.CDROM;
868-
_sourcePath = volPath;
869881
_diskLabel = getDevLabel(devId, DiskBus.IDE, true);
870-
_diskFmtType = DiskFmtType.RAW;
871-
_diskCacheMode = DiskCacheMode.NONE;
872-
_bus = DiskBus.IDE;
882+
s_logger.debug(String.format("Using device ID [%s] to define the label [%s] for volume [%s].", devId, _diskLabel, volPath));
873883
}
884+
885+
_diskFmtType = DiskFmtType.RAW;
886+
_diskCacheMode = DiskCacheMode.NONE;
887+
_bus = DiskBus.IDE;
874888
}
875889

876890
public void defISODisk(String volPath, Integer devId,boolean isSecure) {

0 commit comments

Comments
 (0)