diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java index d28ace6d576..cb650e24b2f 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java @@ -121,7 +121,7 @@ public class LibvirtDomainXMLParser { } def.defFileBasedDisk(diskFile, diskLabel, DiskDef.DiskBus.valueOf(bus.toUpperCase()), fmt); } else if (device.equalsIgnoreCase("cdrom")) { - def.defISODisk(diskFile , i+1); + def.defISODisk(diskFile, i+1, diskLabel); } } else if (type.equalsIgnoreCase("block")) { def.defBlockBasedDisk(diskDev, diskLabel, diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java index e8af21cc681..17767506445 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java @@ -860,17 +860,31 @@ public class LibvirtVMDef { } public void defISODisk(String volPath, Integer devId) { - if (devId == null) { + defISODisk(volPath, devId, null); + } + + public void defISODisk(String volPath, Integer devId, String diskLabel) { + if (devId == null && StringUtils.isBlank(diskLabel)) { + s_logger.debug(String.format("No ID or label informed for volume [%s].", volPath)); defISODisk(volPath); - } else { - _diskType = DiskType.FILE; - _deviceType = DeviceType.CDROM; - _sourcePath = volPath; - _diskLabel = getDevLabel(devId, DiskBus.IDE, true); - _diskFmtType = DiskFmtType.RAW; - _diskCacheMode = DiskCacheMode.NONE; - _bus = DiskBus.IDE; + return; } + + _diskType = DiskType.FILE; + _deviceType = DeviceType.CDROM; + _sourcePath = volPath; + + if (StringUtils.isNotBlank(diskLabel)) { + s_logger.debug(String.format("Using informed label [%s] for volume [%s].", diskLabel, volPath)); + _diskLabel = diskLabel; + } else { + _diskLabel = getDevLabel(devId, DiskBus.IDE, true); + s_logger.debug(String.format("Using device ID [%s] to define the label [%s] for volume [%s].", devId, _diskLabel, volPath)); + } + + _diskFmtType = DiskFmtType.RAW; + _diskCacheMode = DiskCacheMode.NONE; + _bus = DiskBus.IDE; } public void defISODisk(String volPath, Integer devId,boolean isSecure) {