Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: Added additional can do action check
......................................................................

gluster: Added additional can do action check

Added additional canDoAction check for stop and commit remove brick
actions. If the set of bricks passed as parameter during stop/commit
od remove bricks action does not match with the set of bricks used
during starting the remove brick, it would throw an error.

Change-Id: Id7f5d3b48985552aa5f74178008beb39ee7a06f9
Bug-Url: https://bugzilla.redhat.com/1040686
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
10 files changed, 130 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/53/22353/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommand.java
index 9deedc2..40c2bd7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommand.java
@@ -43,10 +43,6 @@
             return false;
         }
 
-        if (getParameters().getBricks().isEmpty()) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_BRICKS_REQUIRED);
-        }
-
         if (!(getGlusterTaskUtils().isTaskOfType(volume, 
GlusterTaskType.REMOVE_BRICK))
                 || !(getGlusterTaskUtils().isTaskStatus(volume, 
JobExecutionStatus.FINISHED))) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_FINISHED);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncCommandBase.java
index 0d4db34..9b92f29 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncCommandBase.java
@@ -3,6 +3,7 @@
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.ovirt.engine.core.bll.LockMessagesMatchUtil;
@@ -11,7 +12,10 @@
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.bll.job.JobRepositoryFactory;
 import org.ovirt.engine.core.common.action.gluster.GlusterVolumeParameters;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeRemoveBricksParameters;
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
+import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.core.common.constants.gluster.GlusterConstants;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
@@ -44,6 +48,35 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_SHOULD_BE_STARTED);
         }
 
+        GlusterAsyncTask asyncTask = glusterVolume.getAsyncTask();
+        if (asyncTask != null && asyncTask.getType() == 
GlusterTaskType.REMOVE_BRICK) {
+            GlusterVolumeRemoveBricksParameters params = 
(GlusterVolumeRemoveBricksParameters)getParameters();
+            if (params.getBricks().isEmpty()) {
+                return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_BRICKS_REQUIRED);
+            }
+
+            List<GlusterBrickEntity> bricksForTask = 
getGlusterBrickDao().getGlusterVolumeBricksByTaskId(asyncTask.getTaskId());
+            List<GlusterBrickEntity> paramBricks = params.getBricks();
+            if (paramBricks.size() != bricksForTask.size()) {
+                return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_SIZE_DOES_NOT_MATCH);
+            }
+
+            int counter = 0;
+            for (GlusterBrickEntity paramBrick : paramBricks) {
+                for (GlusterBrickEntity brick : bricksForTask) {
+                    // If parameter brick directory matches with any brick no 
need to continue further to check
+                    if 
(paramBrick.getBrickDirectory().equals(brick.getBrickDirectory())) {
+                        break;
+                    }
+                    counter++;
+                    // If the bricks list exhausted, it means the parameter 
brick does found, throw an error
+                    if (counter == bricksForTask.size()) {
+                        return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_INVALID);
+                    }
+                }
+            }
+        }
+
         return true;
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
index 33cc88a..37e99e1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterCommandBase.java
@@ -172,7 +172,7 @@
         return getDbFacade().getVdsStaticDao();
     }
 
-    protected GlusterBrickDao getGlusterBrickDao() {
+    public GlusterBrickDao getGlusterBrickDao() {
         return getDbFacade().getGlusterBrickDao();
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommand.java
index 4e294e2..7499ce5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommand.java
@@ -39,10 +39,6 @@
             return false;
         }
 
-        if (getParameters().getBricks().isEmpty()) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_BRICKS_REQUIRED);
-        }
-
         if (!(getGlusterTaskUtils().isTaskOfType(volume, 
GlusterTaskType.REMOVE_BRICK))
                 || !(getGlusterTaskUtils().isTaskStatus(volume, 
JobExecutionStatus.STARTED) || getGlusterTaskUtils().isTaskStatus(volume,
                         JobExecutionStatus.FINISHED))) {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommandTest.java
index e90f60e..7ab76bc 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/CommitRemoveGlusterVolumeBricksCommandTest.java
@@ -3,6 +3,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doNothing;
@@ -80,6 +81,7 @@
         doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
         
doReturn(getVolumeWithRemoveBricksTask(volumeWithRemoveBricksTask)).when(volumeDao)
                 .getById(volumeWithRemoveBricksTask);
+        doReturn(getBricks(volumeWithoutRemoveBricksTask, 
2)).when(brickDao).getGlusterVolumeBricksByTaskId(any(Guid.class));
         
doReturn(getVolumeWithRemoveBricksTaskNotFinished(volumeWithRemoveBricksTaskNotFinished)).when(volumeDao)
                 .getById(volumeWithRemoveBricksTaskNotFinished);
         
doReturn(getVolume(volumeWithoutAsyncTask)).when(volumeDao).getById(volumeWithoutAsyncTask);
@@ -149,6 +151,31 @@
             brick.setStatus(GlusterStatus.UP);
             bricks.add(brick);
         }
+        return bricks;
+    }
+
+    private List<GlusterBrickEntity> getInvalidNoOfBricks(Guid volumeId) {
+        List<GlusterBrickEntity> bricks = new ArrayList<GlusterBrickEntity>();
+        GlusterBrickEntity brick = new GlusterBrickEntity();
+        brick.setVolumeId(volumeId);
+        brick.setBrickDirectory("/tmp/test-vol1");
+        brick.setStatus(GlusterStatus.UP);
+        bricks.add(brick);
+        return bricks;
+     }
+
+    private List<GlusterBrickEntity> getInvalidBricks(Guid volumeId) {
+        List<GlusterBrickEntity> bricks = new ArrayList<GlusterBrickEntity>();
+        GlusterBrickEntity brick1 = new GlusterBrickEntity();
+        brick1.setVolumeId(volumeId);
+        brick1.setBrickDirectory("/tmp/test-vol11");
+        brick1.setStatus(GlusterStatus.UP);
+        bricks.add(brick1);
+        GlusterBrickEntity brick2 = new GlusterBrickEntity();
+        brick2.setVolumeId(volumeId);
+        brick2.setBrickDirectory("/tmp/test-vol122");
+        brick2.setStatus(GlusterStatus.UP);
+        bricks.add(brick2);
         return bricks;
     }
 
@@ -267,4 +294,17 @@
         prepareMocks(cmd);
         assertFalse(cmd.canDoAction());
     }
+
+    @Test
+    public void canDoActionFailsWithInvalidParams() {
+        List<GlusterBrickEntity> paramBricks1 = 
getInvalidNoOfBricks(volumeWithRemoveBricksTask);
+        cmd = spy(new CommitRemoveGlusterVolumeBricksCommand(new 
GlusterVolumeRemoveBricksParameters(volumeWithRemoveBricksTask, paramBricks1)));
+        prepareMocks(cmd);
+        assertFalse(cmd.canDoAction());
+
+        List<GlusterBrickEntity> paramBricks2 = 
getInvalidBricks(volumeWithRemoveBricksTask);
+        cmd = spy(new CommitRemoveGlusterVolumeBricksCommand(new 
GlusterVolumeRemoveBricksParameters(volumeWithRemoveBricksTask, paramBricks2)));
+        prepareMocks(cmd);
+        assertFalse(cmd.canDoAction());
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommandTest.java
index c25bc3e..17840b5 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/StopRemoveGlusterVolumeBricksCommandTest.java
@@ -3,6 +3,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doNothing;
@@ -43,6 +44,7 @@
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.gluster.GlusterBrickDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -50,6 +52,8 @@
 
     @Mock
     GlusterVolumeDao volumeDao;
+    @Mock
+    GlusterBrickDao brickDao;
     @Mock
     protected BackendInternal backend;
     @Mock
@@ -68,9 +72,11 @@
 
     private void prepareMocks(StopRemoveGlusterVolumeBricksCommand command) {
         doReturn(volumeDao).when(command).getGlusterVolumeDao();
+        doReturn(brickDao).when(command).getGlusterBrickDao();
         doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
         
doReturn(getVolumeWithRemoveBricksTask(volumeWithRemoveBricksTask)).when(volumeDao)
                 .getById(volumeWithRemoveBricksTask);
+        doReturn(getBricks(volumeWithoutRemoveBricksTask, 
2)).when(brickDao).getGlusterVolumeBricksByTaskId(any(Guid.class));
         
doReturn(getVolumeWithRemoveBricksTaskCompleted(volumeWithRemoveBricksTaskCompleted)).when(volumeDao)
                 .getById(volumeWithRemoveBricksTaskCompleted);
         
doReturn(getVolume(volumeWithoutAsyncTask)).when(volumeDao).getById(volumeWithoutAsyncTask);
@@ -132,6 +138,31 @@
             brick.setStatus(GlusterStatus.UP);
             bricks.add(brick);
         }
+        return bricks;
+    }
+
+    private List<GlusterBrickEntity> getInvalidNoOfBricks(Guid volumeId) {
+        List<GlusterBrickEntity> bricks = new ArrayList<GlusterBrickEntity>();
+        GlusterBrickEntity brick = new GlusterBrickEntity();
+        brick.setVolumeId(volumeId);
+        brick.setBrickDirectory("/tmp/test-vol1");
+        brick.setStatus(GlusterStatus.UP);
+        bricks.add(brick);
+        return bricks;
+     }
+
+    private List<GlusterBrickEntity> getInvalidBricks(Guid volumeId) {
+        List<GlusterBrickEntity> bricks = new ArrayList<GlusterBrickEntity>();
+        GlusterBrickEntity brick1 = new GlusterBrickEntity();
+        brick1.setVolumeId(volumeId);
+        brick1.setBrickDirectory("/tmp/test-vol11");
+        brick1.setStatus(GlusterStatus.UP);
+        bricks.add(brick1);
+        GlusterBrickEntity brick2 = new GlusterBrickEntity();
+        brick2.setVolumeId(volumeId);
+        brick2.setBrickDirectory("/tmp/test-vol122");
+        brick2.setStatus(GlusterStatus.UP);
+        bricks.add(brick2);
         return bricks;
     }
 
@@ -258,4 +289,17 @@
         prepareMocks(cmd);
         assertFalse(cmd.canDoAction());
     }
+
+    @Test
+    public void canDoActionFailsWithInvalidParams() {
+        List<GlusterBrickEntity> paramBricks1 = 
getInvalidNoOfBricks(volumeWithRemoveBricksTask);
+        cmd = spy(new StopRemoveGlusterVolumeBricksCommand(new 
GlusterVolumeRemoveBricksParameters(volumeWithRemoveBricksTask, paramBricks1)));
+        prepareMocks(cmd);
+        assertFalse(cmd.canDoAction());
+
+        List<GlusterBrickEntity> paramBricks2 = 
getInvalidBricks(volumeWithRemoveBricksTask);
+        cmd = spy(new StopRemoveGlusterVolumeBricksCommand(new 
GlusterVolumeRemoveBricksParameters(volumeWithRemoveBricksTask, paramBricks2)));
+        prepareMocks(cmd);
+        assertFalse(cmd.canDoAction());
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index b3a63df..cb8e791 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -765,6 +765,8 @@
     ACTION_TYPE_FAILED_NOT_A_GLUSTER_VOLUME_BRICK(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_STARTED(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_FINISHED(ErrorType.CONFLICT),
+    
ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_SIZE_DOES_NOT_MATCH(ErrorType.CONFLICT),
+    
ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_INVALID(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_CAN_NOT_REMOVE_ALL_BRICKS_FROM_VOLUME(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_CAN_NOT_REDUCE_REPLICA_COUNT_MORE_THAN_ONE(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_CAN_NOT_REDUCE_REPLICA_COUNT_WITH_DATA_MIGRATION(ErrorType.CONFLICT),
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 3a10344..59be466 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -958,6 +958,8 @@
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_DISTRIBUTED_AND_HAS_SINGLE_BRICK=Cannot 
${action} ${type}. Gluster Volume has a single brick.
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_STARTED=Cannot ${action} 
${type}. Remove brick not started.
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_FINISHED=Cannot ${action} 
${type}. Remove brick not finished.
+ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_SIZE_DOES_NOT_MATCH=Cannot
 ${action} ${type}. The no of bricks does not match with the bricks used while 
starting the action.
+ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_INVALID=Cannot 
${action} ${type}. The list of bricks does not match with the bricks used while 
starting the action.
 ACTION_TYPE_FAILED_NOT_A_GLUSTER_VOLUME_BRICK=Cannot ${action} ${type}. 
Replacing brick is not a Gluster volume brick.
 ACTION_TYPE_FAILED_NO_GLUSTER_HOST_TO_PEER_PROBE=Cannot ${action} ${type}. 
There is no available server in the cluster to probe the new server.
 ACTION_TYPE_FAILED_CAN_NOT_REDUCE_REPLICA_COUNT_MORE_THAN_ONE=Cannot ${action} 
${type}. Replica count cannot be reduced by more than one.
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 24098c9..36795b9 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -2531,6 +2531,12 @@
     @DefaultStringValue("Cannot ${action} ${type}. Remove brick not started.")
     String ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_STARTED();
 
+    @DefaultStringValue("Cannot ${action} ${type}. The no of bricks does not 
match with the bricks used while starting the action.")
+    String 
ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_SIZE_DOES_NOT_MATCH();
+
+    @DefaultStringValue("Cannot ${action} ${type}. The list of bricks does not 
match with the bricks used while starting the action.")
+    String ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_INVALID();
+
     @DefaultStringValue("Cannot ${action} ${type}. Remove brick not finished.")
     String ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_FINISHED();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 6659c13..0ad291a 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -950,6 +950,8 @@
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_DISTRIBUTED_AND_HAS_SINGLE_BRICK=Cannot 
${action} ${type}. Gluster Volume has a single brick.
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_STARTED=Cannot ${action} 
${type}. Remove brick not started.
 ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_NOT_FINISHED=Cannot ${action} 
${type}. Remove brick not finished.
+ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_SIZE_DOES_NOT_MATCH=Cannot
 ${action} ${type}. The no of bricks does not match with the bricks used while 
starting the action.
+ACTION_TYPE_FAILED_GLUSTER_VOLUME_REMOVE_BRICKS_PARAMS_INVALID=Cannot 
${action} ${type}. The list of bricks does not match with the bricks used while 
starting the action.
 ACTION_TYPE_FAILED_NOT_A_GLUSTER_VOLUME_BRICK=Cannot ${action} ${type}. 
Replacing brick is not a Gluster volume brick.
 VDS_CANNOT_REMOVE_HOST_HAVING_GLUSTER_VOLUME=Cannot ${action} ${type}. Server 
having Gluster volume.
 ACTION_TYPE_FAILED_NO_GLUSTER_HOST_TO_PEER_PROBE=Cannot ${action} ${type}. 
There is no available server in the cluster to probe the new server.


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

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

Reply via email to