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

Reply via email to