Yaniv Bronhaim has uploaded a new change for review. Change subject: core: allow putting host on maintenance if lonley in dc also for SPM host ......................................................................
core: allow putting host on maintenance if lonley in dc also for SPM host fixup to commit 998c17 which introduced this ability but didn't cleanup irsBrokerCommand cached mCurrentVdsId value, which leaded to keep requesting for SPMStatus from unreachable or deleted host. Change-Id: Ib0dc1bb6e4318fc1465b51652d519574a3af4f99 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1055455 Signed-off-by: Yaniv Bronhaim <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FenceVdsManualyCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java 2 files changed, 37 insertions(+), 34 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/24907/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FenceVdsManualyCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FenceVdsManualyCommand.java index 514514e..703b7e8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FenceVdsManualyCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/FenceVdsManualyCommand.java @@ -95,13 +95,6 @@ setVdsName(_problematicVds.getName()); if (_problematicVds.getSpmStatus() == VdsSpmStatus.SPM) { result = activateDataCenter(); - if (getVdsDAO().getAllForStoragePool(getStoragePool().getId()).size() == 1) { - //reset SPM flag fot this Host - StoragePool sp = getStoragePool(); - sp.setspm_vds_id(null); - getStoragePoolDAO().update(sp); - result = true; - } } if ((getParameters()).getClearVMs() && result) { VdsActionParameters tempVar = new VdsActionParameters(_problematicVds.getId()); @@ -173,34 +166,40 @@ && (masterDomain.getStatus() == StorageDomainStatus.Active || masterDomain.getStatus() == StorageDomainStatus.Unknown || masterDomain.getStatus() == StorageDomainStatus.InActive)) { if (!getStoragePool().isLocal()) { - for (VDS vds : getAllRunningVdssInPool()) { - try { - SpmStatusResult statusResult = (SpmStatusResult) Backend - .getInstance() - .getResourceManager() - .RunVdsCommand(VDSCommandType.SpmStatus, - new SpmStatusVDSCommandParameters(vds.getId(), getStoragePool().getId())) - .getReturnValue(); - log.infoFormat("Trying to fence spm {0} via vds {1}", - _problematicVds.getName(), - vds.getName()); - if (Backend - .getInstance() - .getResourceManager() - .RunVdsCommand( - VDSCommandType.FenceSpmStorage, - new FenceSpmStorageVDSCommandParameters(vds.getId(), - getStoragePool().getId(), - statusResult.getSpmId(), - statusResult.getSpmLVER())) - .getSucceeded()) { - resetIrs(); - result = true; - _fenceSpmCalled = true; - break; + // if only one\"the fenced" host connected to sp in dc + if (getAmountOfVdssInPoll() == 1) { + resetIrs(); + result = true; + } else { + for (VDS vds : getAllRunningVdssInPool()) { + try { + SpmStatusResult statusResult = (SpmStatusResult) Backend + .getInstance() + .getResourceManager() + .RunVdsCommand(VDSCommandType.SpmStatus, + new SpmStatusVDSCommandParameters(vds.getId(), getStoragePool().getId())) + .getReturnValue(); + log.infoFormat("Trying to fence spm {0} via vds {1}", + _problematicVds.getName(), + vds.getName()); + if (Backend + .getInstance() + .getResourceManager() + .RunVdsCommand( + VDSCommandType.FenceSpmStorage, + new FenceSpmStorageVDSCommandParameters(vds.getId(), + getStoragePool().getId(), + statusResult.getSpmId(), + statusResult.getSpmLVER())) + .getSucceeded()) { + resetIrs(); + result = true; + _fenceSpmCalled = true; + break; + } + } catch (java.lang.Exception e) { + log.warnFormat("Could not fence spm on vds {0}", vds.getName()); } - } catch (java.lang.Exception e) { - log.warnFormat("Could not fence spm on vds {0}", vds.getName()); } } } else { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java index 722b92c..4b08fbf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java @@ -72,6 +72,10 @@ return DbFacade.getInstance().getVdsDao().getAllForStoragePoolAndStatus(pool.getId(), VDSStatus.Up); } + protected int getAmountOfVdssInPoll() { + return getVdsDAO().getAllForStoragePool(getStoragePool().getId()).size(); + } + protected List<VDS> getAllRunningVdssInPool() { return getVdsDAO().getAllForStoragePoolAndStatus(getStoragePool().getId(), VDSStatus.Up); } -- To view, visit http://gerrit.ovirt.org/24907 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib0dc1bb6e4318fc1465b51652d519574a3af4f99 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yaniv Bronhaim <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
