From 8d19f86ade0f523b64d1ed5d0e2ea89ae2810608 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 31 May 2021 18:28:18 +0530 Subject: [PATCH 1/2] xenserver: attempt eject and destroying patch VBD separately This tries to separately eject and destroy cd-rom VBD for systemvms. Signed-off-by: Rohit Yadav --- .../resource/CitrixResourceBase.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 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 315ce17c78ad..52962f3baf8f 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 void destroyPatchVbd(final Connection conn, final Set vms) throws Xml 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-")) { + return; + } + 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 void destroyPatchVbd(final Connection conn, final Set vms) throws Xml vbd.insert(conn, patchVDI); vbd.eject(conn); } + } catch (Exception e) { + s_logger.debug("Cannot eject CD-ROM device for VM " + vmName + " due to " + e.toString(), e); + } + try { vbd.destroy(conn); - break; + } 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); } } } From 99139c2f4a52bbb31d346feadf43c8999012344d Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Tue, 1 Jun 2021 13:17:21 +0530 Subject: [PATCH 2/2] fix boo-boo Signed-off-by: Rohit Yadav --- .../cloud/hypervisor/xenserver/resource/CitrixResourceBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 52962f3baf8f..c5c33e40042d 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 @@ -1508,7 +1508,7 @@ public void destroyPatchVbd(final Connection conn, final Set vms) throws Xml for (final VM vm : vms) { final String vmName = vm.getNameLabel(conn); if (!vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-")) { - return; + continue; } final Set vbds = vm.getVBDs(conn); for (final VBD vbd : vbds) {