From 8c7e39eb890d44b45b239f7c84281c24999cda69 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 1 Jun 2021 20:55:57 +0530 Subject: [PATCH] xenserver: attempt eject and destroying patch VBD separately (#5053) Loop through all VMs and try to eject and remove systemvm.iso VBD upon host connect. Signed-off-by: Rohit Yadav --- .../resource/CitrixResourceBase.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 315ce17c78a..c5c33e40042 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -1507,13 +1507,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe final VDI patchVDI = findPatchIsoVDI(conn, sr); for (final VM vm : vms) { final String vmName = vm.getNameLabel(conn); - try { - if (!vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-")) { - return; - } - final Set vbds = vm.getVBDs(conn); - for (final VBD vbd : vbds) { - if (Types.VbdType.CD.equals(vbd.getType(conn))) { + if (!vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-")) { + continue; + } + final Set vbds = vm.getVBDs(conn); + for (final VBD vbd : vbds) { + if (Types.VbdType.CD.equals(vbd.getType(conn))) { + try { if (!vbd.getEmpty(conn)) { vbd.eject(conn); } @@ -1522,12 +1522,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe vbd.insert(conn, patchVDI); vbd.eject(conn); } - vbd.destroy(conn); - break; + } catch (Exception e) { + s_logger.debug("Cannot eject CD-ROM device for VM " + vmName + " due to " + e.toString(), e); } + try { + vbd.destroy(conn); + } catch (Exception e) { + s_logger.debug("Cannot destroy CD-ROM device for VM " + vmName + " due to " + e.toString(), e); + } + break; } - } catch (final Exception e) { - s_logger.debug("Cannot destroy CD-ROM device for VM " + vmName + " due to " + e.toString(), e); } } }