diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 90042ffaf0c..91b265ba86c 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -3947,6 +3947,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe while (vifIter.hasNext()) { VIF vif = vifIter.next(); try { + String deviceId = vif.getDevice(conn); + if(vm.getIsControlDomain(conn) || vif.getCurrentlyAttached(conn)) { + usedDeviceNums.add(Integer.valueOf(deviceId)); + } else { + s_logger.debug("Found unplugged VIF " + deviceId + " in VM " + vmName + " destroy it"); + vif.destroy(conn); + } usedDeviceNums.add(Integer.valueOf(vif.getDevice(conn))); } catch (NumberFormatException e) { String msg = "Obtained an invalid value for an allocated VIF device number for VM: " + vmName;