Martin Mucha has uploaded a new change for review.

Change subject: core: handle potential rollbacks
......................................................................

core: handle potential rollbacks

if rollback occured, revert related pool setting back to former state.

Change-Id: I2ffeedf85605f9ea9b3f4c0fad9c320da3b238c4
Bug-Url: https://bugzilla.redhat.com/1078844
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
3 files changed, 26 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/26803/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
index 673c7ba..7e37cdd 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
@@ -38,13 +38,20 @@
         setDataCenterDetails();
         addStoragePoolToDb();
 
-        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).createPool(getStoragePool().getMacPoolRanges());
      //TODO MM: handle rollbacks!
+        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).createPool(getStoragePool().getMacPoolRanges());
 
         getReturnValue().setActionReturnValue(getStoragePool().getId());
         addDefaultNetworks();
         setSucceeded(true);
     }
 
+    @Override
+    protected void compensate() {
+        super.compensate();
+        //try to remove pool if it was by any chance created before 
error/rollback occurred.
+        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).removePool();
+    }
+
     private void setDataCenterDetails() {
         StoragePool dc = getParameters().getStoragePool();
         setCompatibilityVersion(dc.getcompatibility_version().toString());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
index f492301..584d611 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
@@ -90,10 +90,18 @@
 
         getStoragePoolDAO().remove(storagePoolId);
         
ScopedMacPoolManager.scopeFor().storagePool(storagePoolId).getPool().freeMacs(macsToRemove);
-        
ScopedMacPoolManager.scopeFor().storagePool(storagePoolId).removePool();      
//TODO MM: handle rollbacks!
+        
ScopedMacPoolManager.scopeFor().storagePool(storagePoolId).removePool();
         setSucceeded(true);
     }
 
+    @Override
+    protected void compensate() {
+        super.compensate();
+        //try to remove pool if it was by any chance created before 
error/rollback occurred.
+        final String originalRangesSetting = 
getStoragePool().getMacPoolRanges();
+        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).createPool(originalRangesSetting);
+    }
+
     private void removeNetworks() {
         final List<Network> networks = 
getNetworkDAO().getAllForDataCenter(getStoragePoolId());
         for (Network network : networks) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
index cc8da17..582fc25 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
@@ -72,10 +72,18 @@
         getStoragePoolDAO().updatePartial(getStoragePool());
 
         updateStoragePoolFormatType();
-        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).modifyPool(getStoragePool().getMacPoolRanges());
        //TODO MM: handle rollbacks!
+        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).modifyPool(getStoragePool().getMacPoolRanges());
         setSucceeded(true);
     }
 
+    @Override
+    protected void compensate() {
+        super.compensate();
+        //try to remove pool if it was by any chance created before 
error/rollback occurred.
+        final String originalRangesSetting = 
_oldStoragePool.getMacPoolRanges();
+        
ScopedMacPoolManager.scopeFor().storagePool(getStoragePool().getId()).modifyPool(originalRangesSetting);
+    }
+
     private void updateQuotaCache() {
         if(wasQuotaEnforcementChanged()){
             
getQuotaManager().removeStoragePoolFromCache(getStoragePool().getId());


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2ffeedf85605f9ea9b3f4c0fad9c320da3b238c4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <mmu...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to