Sahina Bose has uploaded a new change for review. Change subject: gluster: Reset statusconflict flag on enable/disable ......................................................................
gluster: Reset statusconflict flag on enable/disable Reset the status conflict flag on enable/disable of gluster hooks. After resetting of flag, if conflict status is 0, remove the entries of conflicting server hooks as conflicts have been resolved Refactored the command class to use GlusterHookParameters class. Change-Id: I9913900175e0f5be33bb1ec45b882e770a09fde4 Signed-off-by: Sahina Bose <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookStatusChangeCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommandTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommandTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookCommandTest.java D backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterHookStatusChangeParameters.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java 8 files changed, 50 insertions(+), 99 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/42/15242/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommand.java index 064d50e..8558687 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommand.java @@ -3,7 +3,7 @@ import org.ovirt.engine.core.bll.LockIdNameAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookStatus; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.dal.VdcBllMessages; @@ -13,11 +13,11 @@ */ @NonTransactiveCommandAttribute @LockIdNameAttribute(isWait = true) -public class DisableGlusterHookCommand extends GlusterHookStatusChangeCommand { +public class DisableGlusterHookCommand<T extends GlusterHookParameters> extends GlusterHookStatusChangeCommand<T> { private static final long serialVersionUID = 2267182025441596357L; - public DisableGlusterHookCommand(GlusterHookStatusChangeParameters params) { + public DisableGlusterHookCommand(T params) { super(params); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommand.java index 3afe965..e80c2a9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommand.java @@ -1,14 +1,14 @@ package org.ovirt.engine.core.bll.gluster; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookStatus; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.dal.VdcBllMessages; -public class EnableGlusterHookCommand extends GlusterHookStatusChangeCommand { +public class EnableGlusterHookCommand<T extends GlusterHookParameters> extends GlusterHookStatusChangeCommand<T> { - public EnableGlusterHookCommand(GlusterHookStatusChangeParameters params) { + public EnableGlusterHookCommand(T params) { super(params); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookStatusChangeCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookStatusChangeCommand.java index b5c0d3f..6b4ae0b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookStatusChangeCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookStatusChangeCommand.java @@ -9,7 +9,7 @@ import org.apache.commons.lang.SystemUtils; import org.ovirt.engine.core.bll.LockIdNameAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookStatus; @@ -28,20 +28,29 @@ */ @NonTransactiveCommandAttribute @LockIdNameAttribute(isWait = true) -public abstract class GlusterHookStatusChangeCommand extends GlusterHookCommandBase<GlusterHookStatusChangeParameters> { +public abstract class GlusterHookStatusChangeCommand<T extends GlusterHookParameters> extends GlusterHookCommandBase<T> { private GlusterHookEntity entity; protected List<String> errors = new ArrayList<String>(); - public GlusterHookStatusChangeCommand(GlusterHookStatusChangeParameters params) { + private List<VDS> upServers = null; + + public GlusterHookStatusChangeCommand(T params) { super(params); - setVdsGroupId(params.getClusterId()); - } + } protected GlusterHookEntity getGlusterHook() { if (entity == null) { entity = getGlusterHooksDao().getById(getParameters().getHookId(),true); + setVdsGroupId(entity.getClusterId()); } return entity; + } + + private List<VDS> getAllUpServers() { + if (upServers == null) { + upServers = getAllUpServers(getGlusterHook().getClusterId()); + } + return upServers; } @Override @@ -49,13 +58,8 @@ if (!super.canDoAction()) { return false; } - if (getParameters().getClusterId() == null) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CLUSTER_IS_NOT_VALID); - return false; - } - List <VDS> servers = getAllUpServers(getParameters().getClusterId()); - if (servers == null || servers.isEmpty()) { + if (getAllUpServers() == null || getAllUpServers().isEmpty()) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_NO_UP_SERVER_FOUND); return false; } @@ -67,15 +71,14 @@ protected void executeCommand() { entity = getGlusterHook(); addCustomValue(GlusterConstants.HOOK_NAME, entity.getName()); - List <VDS> servers = getAllUpServers(getParameters().getClusterId()); List<GlusterServerHook> serverHooks = entity.getServerHooks(); - if (servers.size() < getClusterUtils().getServerCount(getParameters().getClusterId())) { + if (getAllUpServers().size() < getClusterUtils().getServerCount(getGlusterHook().getClusterId())) { errors.add(VdcBllMessages.CLUSTER_ALL_SERVERS_NOT_UP.toString()); } List<Callable<Pair<VDS, VDSReturnValue>>> taskList = new ArrayList<Callable<Pair<VDS, VDSReturnValue>>>(); - for (final VDS upServer : servers) { + for (final VDS upServer : getAllUpServers()) { taskList.add(new Callable<Pair<VDS, VDSReturnValue>>() { @Override public Pair<VDS, VDSReturnValue> call() throws Exception { @@ -116,7 +119,13 @@ //The intention was to enable/disable hook. So we update the entity with new status if command succeeded if (getSucceeded()) { entity.setStatus(getNewStatus()); + //no longer conflicts as all hooks have same status + entity.removeStatusConflict(); updateHookInDb(entity); + if (entity.getConflictStatus() == 0) { + //all conflicts have been resolved, remove server hooks + getGlusterHooksDao().removeGlusterServerHook(entity.getId()); + } } } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommandTest.java index 991c6e2..9c40857 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DisableGlusterHookCommandTest.java @@ -10,36 +10,29 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.dal.VdcBllMessages; @RunWith(MockitoJUnitRunner.class) -public class DisableGlusterHookCommandTest extends GlusterHookCommandTest<DisableGlusterHookCommand> { +public class DisableGlusterHookCommandTest extends GlusterHookCommandTest<DisableGlusterHookCommand<GlusterHookParameters>> { /** * The command under test. */ @Mock - private DisableGlusterHookCommand cmd; + private DisableGlusterHookCommand<GlusterHookParameters> cmd; @Test public void canDoActionSucceeds() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new DisableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); assertTrue(cmd.canDoAction()); } - @Test - public void canDoActionFailsOnNullCluster() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(null, HOOK_ID))); - setupMocks(cmd); - assertFalse(cmd.canDoAction()); - assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_CLUSTER_IS_NOT_VALID.toString())); - } @Test public void canDoActionFailsOnNullHookId() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, null))); + cmd = spy(new DisableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(null))); setupMocks(cmd); assertFalse(cmd.canDoAction()); assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_HOOK_ID_IS_REQUIRED.toString())); @@ -48,7 +41,7 @@ @Test public void canDoActionFailsOnNullHook() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new DisableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd,false); assertFalse(cmd.canDoAction()); assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_HOOK_DOES_NOT_EXIST.toString())); @@ -56,7 +49,7 @@ @Test public void executeCommand() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new DisableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); mockBackendStatusChange(cmd,true); cmd.executeCommand(); @@ -66,7 +59,7 @@ @Test public void executeCommandWhenFailed() { - cmd = spy(new DisableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new DisableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); mockBackendStatusChange(cmd,false); cmd.executeCommand(); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommandTest.java index 1d06f2f..8f7369e 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/EnableGlusterHookCommandTest.java @@ -13,22 +13,22 @@ import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerHook; import org.ovirt.engine.core.dal.VdcBllMessages; @RunWith(MockitoJUnitRunner.class) -public class EnableGlusterHookCommandTest extends GlusterHookCommandTest<EnableGlusterHookCommand> { +public class EnableGlusterHookCommandTest extends GlusterHookCommandTest<EnableGlusterHookCommand<GlusterHookParameters>> { /** * The command under test. */ - EnableGlusterHookCommand cmd; + EnableGlusterHookCommand<GlusterHookParameters> cmd; @Test public void executeCommand() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new EnableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); mockBackendStatusChange(cmd,true); cmd.executeCommand(); @@ -38,7 +38,7 @@ @Test public void executeCommandWhenFailed() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new EnableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); mockBackendStatusChange(cmd,false); cmd.executeCommand(); @@ -48,22 +48,14 @@ @Test public void canDoActionSucceeds() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new EnableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd); assertTrue(cmd.canDoAction()); } @Test - public void canDoActionFailsOnNullCluster() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(null, HOOK_ID))); - setupMocks(cmd); - assertFalse(cmd.canDoAction()); - assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_CLUSTER_IS_NOT_VALID.toString())); - } - - @Test public void canDoActionFailsOnNullHookId() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, null))); + cmd = spy(new EnableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(null))); setupMocks(cmd); assertFalse(cmd.canDoAction()); assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_HOOK_ID_IS_REQUIRED.toString())); @@ -71,7 +63,7 @@ @Test public void canDoActionFailsOnNoHook() { - cmd = spy(new EnableGlusterHookCommand(new GlusterHookStatusChangeParameters(CLUSTER_ID, HOOK_ID))); + cmd = spy(new EnableGlusterHookCommand<GlusterHookParameters>(new GlusterHookParameters(HOOK_ID))); setupMocks(cmd,false); assertFalse(cmd.canDoAction()); assertTrue(cmd.getReturnValue().getCanDoActionMessages().contains(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_HOOK_DOES_NOT_EXIST.toString())); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookCommandTest.java index 1930d77..bd5223a 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookCommandTest.java @@ -12,6 +12,7 @@ import org.mockito.Mock; import org.ovirt.engine.core.bll.interfaces.BackendInternal; import org.ovirt.engine.core.bll.utils.ClusterUtils; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VDSStatus; @@ -31,7 +32,7 @@ import org.ovirt.engine.core.utils.MockConfigRule; -public class GlusterHookCommandTest<T extends GlusterHookCommandBase> { +public class GlusterHookCommandTest<T extends GlusterHookCommandBase<? extends GlusterHookParameters>> { private static final Guid[] GUIDS = {Guid.createGuidFromString("afce7a39-8e8c-4819-ba9c-796d316592e6"), Guid.createGuidFromString("afce7a39-8e8c-4819-ba9c-796d316592e7"), diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterHookStatusChangeParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterHookStatusChangeParameters.java deleted file mode 100644 index 656dfca..0000000 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/GlusterHookStatusChangeParameters.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.ovirt.engine.core.common.action.gluster; - -import javax.validation.constraints.NotNull; - -import org.ovirt.engine.core.compat.Guid; - -/** - * Parameter class with Gluster cluster id, hook id as parameters. <br> - * This will be used by enable and disable gluster hook commands. <br> - */ -public class GlusterHookStatusChangeParameters extends GlusterHookParameters { - private static final long serialVersionUID = 3398376087476446699L; - - @NotNull(message = "VALIDATION.GLUSTER.VOLUME.CLUSTER_ID.NOT_NULL") - private Guid clusterId; - - @NotNull(message = "VALIDATION.GLUSTER.GLUSTER_HOOK_ID.NOT_NULL") - private Guid hookId; - - public GlusterHookStatusChangeParameters(Guid clusterId, - Guid hookId) { - super(hookId); - setClusterId(clusterId); - } - - public void setClusterId(Guid clusterId) { - this.clusterId = clusterId; - } - - public Guid getClusterId() { - return clusterId; - } - - @Override - public Guid getHookId() { - return hookId; - } - - @Override - public void setHookId(Guid hookId) { - this.hookId = hookId; - } - -} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java index dede62c..d5abf6b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterGlusterHookListModel.java @@ -5,7 +5,7 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.action.gluster.GlusterHookStatusChangeParameters; +import org.ovirt.engine.core.common.action.gluster.GlusterHookParameters; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookContentType; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity; @@ -82,7 +82,7 @@ ArrayList<VdcActionParametersBase> list = new ArrayList<VdcActionParametersBase>(); for (Object item : getSelectedItems()) { GlusterHookEntity hook = (GlusterHookEntity) item; - list.add(new GlusterHookStatusChangeParameters(getEntity().getId(), hook.getId())); + list.add(new GlusterHookParameters(hook.getId())); } Frontend.RunMultipleAction(VdcActionType.EnableGlusterHook, list, null, null); } @@ -134,7 +134,7 @@ for (Object item : getSelectedItems()) { GlusterHookEntity hook = (GlusterHookEntity) item; - list.add(new GlusterHookStatusChangeParameters(getEntity().getId(), hook.getId())); + list.add(new GlusterHookParameters(hook.getId())); } model.startProgress(null); -- To view, visit http://gerrit.ovirt.org/15242 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9913900175e0f5be33bb1ec45b882e770a09fde4 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
