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