Federico Simoncelli has uploaded a new change for review.

Change subject: core: encapsulate isLastMaster logic
......................................................................

core: encapsulate isLastMaster logic

Change-Id: I1cbbf89d26c8c4e8f90e68bb89472bb4a6ee4518
Signed-off-by: Federico Simoncelli <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
2 files changed, 43 insertions(+), 42 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/28445/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java
index f11d3a6..d5d9233 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java
@@ -52,8 +52,6 @@
 public class DeactivateStorageDomainCommand<T extends 
StorageDomainPoolParametersBase> extends
         StorageDomainCommandBase<T> {
 
-    protected boolean _isLastMaster;
-
     public DeactivateStorageDomainCommand(T parameters) {
         super(parameters);
     }
@@ -187,8 +185,7 @@
 
         final StorageDomain newMaster = electNewMaster();
         final Guid newMasterId = newMaster != null ? newMaster.getId() : 
Guid.Empty;
-
-        proceedStorageDomainTreatmentByDomainType(newMaster, true);
+        final boolean _isLastMaster = 
proceedStorageDomainTreatmentByDomainType(newMaster, true);
 
         if (_isLastMaster) {
             executeInNewTransaction(new TransactionMethod<Object>() {
@@ -303,43 +300,46 @@
      *
      * @param lockNewMaster If true the new master domain will not be locked
      */
-    protected void proceedStorageDomainTreatmentByDomainType(final 
StorageDomain newMaster,
-                                                             final boolean 
lockNewMaster) {
-        if (getStorageDomain().getStorageDomainType() == 
StorageDomainType.Master) {
-            if (newMaster != null) {
-                
newMaster.getStorageStaticData().setLastTimeUsedAsMaster(System.currentTimeMillis());
-
-                if (newMaster.getStorageDomainType() != 
StorageDomainType.Master) {
-                    executeInNewTransaction(new TransactionMethod<Object>() {
-
-                        @Override
-                        public Object runInTransaction() {
-                            StoragePoolIsoMap newMasterMap = 
newMaster.getStoragePoolIsoMapData();
-                            
getCompensationContext().snapshotEntityUpdated(newMaster.getStorageStaticData());
-                            
newMaster.setStorageDomainType(StorageDomainType.Master);
-                            if (!lockNewMaster) {
-                                
newMasterMap.setStatus(StorageDomainStatus.Unknown);
-                                
getCompensationContext().snapshotEntityStatus(newMasterMap);
-                                
newMaster.setStatus(StorageDomainStatus.Locked);
-                                
getStoragePoolIsoMapDAO().updateStatus(newMasterMap.getId(), 
newMasterMap.getStatus());
-                            }
-                            
updateStorageDomainStaticData(newMaster.getStorageStaticData());
-                            
getCompensationContext().snapshotEntityUpdated(getStorageDomain().getStorageStaticData());
-                            
getStorageDomain().setStorageDomainType(StorageDomainType.Data);
-                            
updateStorageDomainStaticData(getStorageDomain().getStorageStaticData());
-                            getCompensationContext().stateChanged();
-                            return null;
-                        }
-                    });
-                } else {
-                    
updateStorageDomainStaticData(newMaster.getStorageStaticData());
-                }
-
-                updateStoragePoolMasterDomainVersionInDiffTransaction();
-            } else {
-                _isLastMaster = true;
-            }
+    protected boolean proceedStorageDomainTreatmentByDomainType(final 
StorageDomain newMaster,
+                                                                final boolean 
lockNewMaster) {
+        if (newMaster == null) {
+            return true;
         }
+
+        if (getStorageDomain().getStorageDomainType() != 
StorageDomainType.Master) {
+            return false;
+        }
+
+        
newMaster.getStorageStaticData().setLastTimeUsedAsMaster(System.currentTimeMillis());
+
+        if (newMaster.getStorageDomainType() != StorageDomainType.Master) {
+            executeInNewTransaction(new TransactionMethod<Object>() {
+                @Override
+                public Object runInTransaction() {
+                    StoragePoolIsoMap newMasterMap = 
newMaster.getStoragePoolIsoMapData();
+                    
getCompensationContext().snapshotEntityUpdated(newMaster.getStorageStaticData());
+                    newMaster.setStorageDomainType(StorageDomainType.Master);
+                    if (!lockNewMaster) {
+                        newMasterMap.setStatus(StorageDomainStatus.Unknown);
+                        
getCompensationContext().snapshotEntityStatus(newMasterMap);
+                        newMaster.setStatus(StorageDomainStatus.Locked);
+                        
getStoragePoolIsoMapDAO().updateStatus(newMasterMap.getId(), 
newMasterMap.getStatus());
+                    }
+                    
updateStorageDomainStaticData(newMaster.getStorageStaticData());
+                    
getCompensationContext().snapshotEntityUpdated(getStorageDomain().getStorageStaticData());
+                    
getStorageDomain().setStorageDomainType(StorageDomainType.Data);
+                    
updateStorageDomainStaticData(getStorageDomain().getStorageStaticData());
+                    getCompensationContext().stateChanged();
+                    return null;
+                }
+            });
+        } else {
+            updateStorageDomainStaticData(newMaster.getStorageStaticData());
+        }
+
+        updateStoragePoolMasterDomainVersionInDiffTransaction();
+
+        return false;
     }
 
     private void updateStorageDomainStaticData(StorageDomainStatic 
storageDomainStatic) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
index 69dcfb1..a52ff06 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ReconstructMasterDomainCommand.java
@@ -37,6 +37,8 @@
 
     protected StorageDomain _newMaster;
 
+    protected boolean _isLastMaster;
+
     protected Guid _newMasterStorageDomainId = Guid.Empty;
 
     protected boolean canChooseInactiveDomainAsMaster;
@@ -114,10 +116,9 @@
         addCanDoActionMessage(String.format("$status %1$s", status));
     }
 
-
     protected boolean reconstructMaster() {
         _newMasterStorageDomainId = getNewMaster().getId();
-        proceedStorageDomainTreatmentByDomainType(getNewMaster(), true);
+        _isLastMaster = 
proceedStorageDomainTreatmentByDomainType(getNewMaster(), true);
 
         // To issue a reconstructMaster you need to set the domain inactive 
unless the selected domain is the current master
         if (getParameters().isInactive() && 
!getStorageDomain().getId().equals(getNewMasterId())) {


-- 
To view, visit http://gerrit.ovirt.org/28445
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1cbbf89d26c8c4e8f90e68bb89472bb4a6ee4518
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to