Repository: cloudstack Updated Branches: refs/heads/master 29fbc4b42 -> f983e6ed8
Un-plug any remaining VBDs and PBDs Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f983e6ed Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f983e6ed Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f983e6ed Branch: refs/heads/master Commit: f983e6ed82a8ba3c838a09789c9fc4ff01173bc5 Parents: 29fbc4b Author: Mike Tutkowski <[email protected]> Authored: Thu Jan 22 12:43:54 2015 -0700 Committer: Mike Tutkowski <[email protected]> Committed: Thu Jan 22 17:36:04 2015 -0700 ---------------------------------------------------------------------- .../xenserver/resource/CitrixResourceBase.java | 27 ++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f983e6ed/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 07318b8..a3c894d 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -2868,6 +2868,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (sr == null) { return; } + if (s_logger.isDebugEnabled()) { s_logger.debug(logX(sr, "Removing SR")); } @@ -2875,34 +2876,49 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe for (int i = 0; i < 2; i++) { try { Set<VDI> vdis = sr.getVDIs(conn); + for (VDI vdi : vdis) { + Set<VBD> vbds = vdi.getVBDs(conn); + + for (VBD vbd : vbds) { + vbd.unplug(conn); + } + vdi.forget(conn); } + Set<PBD> pbds = sr.getPBDs(conn); + for (PBD pbd : pbds) { if (s_logger.isDebugEnabled()) { s_logger.debug(logX(pbd, "Unplugging pbd")); } - if (pbd.getCurrentlyAttached(conn)) { - pbd.unplug(conn); - } + +// if (pbd.getCurrentlyAttached(conn)) { + pbd.unplug(conn); +// } + pbd.destroy(conn); } pbds = sr.getPBDs(conn); + if (pbds.size() == 0) { if (s_logger.isDebugEnabled()) { s_logger.debug(logX(sr, "Forgetting")); } + sr.forget(conn); + return; } if (s_logger.isDebugEnabled()) { - s_logger.debug(logX(sr, "There are still pbd attached")); + s_logger.debug(logX(sr, "There is still one or more PBDs attached.")); + if (s_logger.isTraceEnabled()) { for (PBD pbd : pbds) { - s_logger.trace(logX(pbd, " Still attached")); + s_logger.trace(logX(pbd, "Still attached")); } } } @@ -2912,6 +2928,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe s_logger.debug(logX(sr, "Catch Exception: " + e.getMessage())); } } + s_logger.warn(logX(sr, "Unable to remove SR")); }
