Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: Enabled to show disperse volume details
......................................................................

gluster: Enabled to show disperse volume details

Enabled the gluster sync job to fetch details of disperse volumes
and display in UI.

Currently addition/removal of brick from disperse volumes and creation
of disperse volumes are not allowed from UI.

Change-Id: I23da86445a52233a8c5412e78cd2c72b7399d3bc
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeRemoveBricksCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumesListReturnForXmlRpc.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
M 
frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M packaging/dbscripts/gluster_volumes_sp.sql
A 
packaging/dbscripts/upgrade/03_05_1380_add_disperse_and_redundancy_count_to_gluster_volume.sql
19 files changed, 179 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/39883/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
index 9a30178..6c5235f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/AddBricksToGlusterVolumeCommand.java
@@ -72,6 +72,14 @@
                 
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CAN_NOT_REDUCE_STRIPE_COUNT);
             }
         }
+        if (getGlusterVolume().getVolumeType().isDispersedType()) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_ADD_BRICK_TO_DISPERSE_VOLUME_NOT_SUPPORTED);
+            return false;
+        }
+        if (getGlusterVolume().getVolumeType().isDistributedDispersedType()) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_ADD_BRICK_TO_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED);
+            return false;
+        }
 
         return updateBrickServerNames(getParameters().getBricks(), true)
                 && validateDuplicateBricks(getParameters().getBricks());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
index dcde1aa..76176e9 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java
@@ -104,6 +104,16 @@
             return false;
         }
 
+        if (volume.getVolumeType().isDispersedType()) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED);
+            return false;
+        }
+
+        if (volume.getVolumeType().isDistributedDispersedType()) {
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CREATION_OF_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED);
+            return false;
+        }
+
         if (volumeNameExists(volume.getName())) {
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_NAME_ALREADY_EXISTS);
             addCanDoActionMessageVariable("volumeName", volume.getName());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeRemoveBricksCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeRemoveBricksCommand.java
index f2132c3..57a8e26 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeRemoveBricksCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeRemoveBricksCommand.java
@@ -53,6 +53,13 @@
             return false;
         }
 
+        if (getGlusterVolume().getVolumeType().isDispersedType()) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED);
+        }
+        if (getGlusterVolume().getVolumeType().isDispersedType()) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED);
+        }
+
         GlusterBrickValidator brickValidator = new GlusterBrickValidator();
         return 
validate(brickValidator.canRemoveBrick(getParameters().getBricks(),
                 getGlusterVolume(),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
index 0b1f4f2..25f85da 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
@@ -61,6 +61,10 @@
     @NotNull(message = "VALIDATION.GLUSTER.VOLUME.STRIPE_COUNT.NOT_NULL", 
groups = { CreateStripedVolume.class })
     private Integer stripeCount;
 
+    private Integer disperseCount;
+
+    private Integer redundancyCount;
+
     @Valid
     private Map<String, GlusterVolumeOptionEntity> options;
 
@@ -145,6 +149,10 @@
         if (!volumeType.isStripedType()) {
             setStripeCount(0);
         }
+        if (!volumeType.isDispersedType()) {
+            setDisperseCount(0);
+            setRedundancyCount(0);
+        }
     }
 
     public void setVolumeType(String volumeType) {
@@ -179,6 +187,22 @@
 
     public void setStripeCount(Integer stripeCount) {
         this.stripeCount = stripeCount;
+    }
+
+    public Integer getDisperseCount() {
+        return this.disperseCount;
+    }
+
+    public void setDisperseCount(Integer disperseCount) {
+        this.disperseCount = disperseCount;
+    }
+
+    public Integer getRedundancyCount() {
+        return this.redundancyCount;
+    }
+
+    public void setRedundancyCount(Integer redundancyCount) {
+        this.redundancyCount = redundancyCount;
     }
 
     public Set<AccessProtocol> getAccessProtocols() {
@@ -404,6 +428,8 @@
         result = prime * result + ((status == null) ? 0 : status.hashCode());
         result = prime * result + ((replicaCount == null) ? 0 : 
replicaCount.hashCode());
         result = prime * result + ((stripeCount == null) ? 0 : 
stripeCount.hashCode());
+        result = prime * result + ((disperseCount == null) ? 0 : 
disperseCount.hashCode());
+        result = prime * result + ((redundancyCount == null) ? 0 : 
redundancyCount.hashCode());
         result = prime * result + ((options == null) ? 0 : options.hashCode());
         result = prime * result + ((accessProtocols == null) ? 0 : 
accessProtocols.hashCode());
         result = prime * result + ((bricks == null) ? 0 : bricks.hashCode());
@@ -431,7 +457,9 @@
                 && volumeType == volume.getVolumeType()
                 && status == volume.getStatus()
                 && ObjectUtils.objectsEqual(replicaCount, 
volume.getReplicaCount())
-                && ObjectUtils.objectsEqual(stripeCount, 
volume.getStripeCount()))) {
+                && ObjectUtils.objectsEqual(stripeCount, 
volume.getStripeCount())
+                && ObjectUtils.objectsEqual(disperseCount, 
volume.getDisperseCount())
+                && ObjectUtils.objectsEqual(redundancyCount, 
volume.getRedundancyCount()))) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeType.java
index dcdf6c8..4136f10 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeType.java
@@ -36,7 +36,15 @@
     /**
      * Distributes striped data across replicated bricks.
      */
-    DISTRIBUTED_STRIPED_REPLICATE;
+    DISTRIBUTED_STRIPED_REPLICATE,
+    /**
+     * Erasure encoded volume
+     */
+    DISPERSE,
+    /**
+     * Distributed Erasure encoded volume
+     */
+    DISTRIBUTED_DISPERSE;
 
     public String value() {
         return name().toUpperCase();
@@ -61,4 +69,12 @@
     public boolean isDistributedType() {
         return value().contains("DISTRIBUTE");
     }
+
+    public boolean isDispersedType() {
+        return value().contains("DISPERSE");
+    }
+
+    public boolean isDistributedDispersedType() {
+        return value().contains("DISTRIBUTED_DISPERSE");
+    }
 }
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 f9e9f00..68b062c 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
@@ -917,6 +917,12 @@
     ACTION_TYPE_FAILED_CAN_NOT_REDUCE_STRIPE_COUNT(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_BRICK_ALREADY_EXISTS_IN_VOLUME(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_DUPLICATE_BRICKS(ErrorType.CONFLICT),
+    
ACTION_TYPE_FAILED_ADD_BRICK_TO_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_ADD_BRICK_TO_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
+    
ACTION_TYPE_FAILED_CREATION_OF_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.NOT_SUPPORTED),
     ACTION_TYPE_FAILED_NO_UP_SERVER_FOUND(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_GLUSTER_HOOK_ID_IS_REQUIRED(ErrorType.BAD_PARAMETERS),
     ACTION_TYPE_FAILED_GLUSTER_HOOK_DOES_NOT_EXIST(ErrorType.BAD_PARAMETERS),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
index e7f4ed8..465e403 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
@@ -376,6 +376,8 @@
             entity.setStatus(GlusterStatus.valueOf(rs.getString("status")));
             entity.setReplicaCount(rs.getInt("replica_count"));
             entity.setStripeCount(rs.getInt("stripe_count"));
+            entity.setDisperseCount(rs.getInt("disperse_count"));
+            entity.setRedundancyCount(rs.getInt("redundancy_count"));
             entity.setSnapshotsCount(rs.getInt("snapshot_count"));
             entity.setSnapshotScheduled(rs.getBoolean("snapshot_scheduled"));
             return entity;
@@ -456,7 +458,9 @@
                         .addValue("vol_type", 
EnumUtils.nameOrNull(volume.getVolumeType()))
                         .addValue("status", 
EnumUtils.nameOrNull(volume.getStatus()))
                         .addValue("replica_count", volume.getReplicaCount())
-                        .addValue("stripe_count", volume.getStripeCount()));
+                        .addValue("stripe_count", volume.getStripeCount())
+                        .addValue("disperse_count", volume.getDisperseCount())
+                        .addValue("redundancy_count", 
volume.getRedundancyCount()));
     }
 
     @Override
@@ -488,7 +492,9 @@
                 .addValue("vol_type", 
EnumUtils.nameOrNull(volume.getVolumeType()))
                 .addValue("status", EnumUtils.nameOrNull(volume.getStatus()))
                 .addValue("replica_count", volume.getReplicaCount())
-                .addValue("stripe_count", volume.getStripeCount());
+                .addValue("stripe_count", volume.getStripeCount())
+                .addValue("disperse_count", volume.getDisperseCount())
+                .addValue("redundancy_count", volume.getRedundancyCount());
     }
 
     @Override
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 830e81c..4f1fdb9 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1104,6 +1104,13 @@
 ACTION_TYPE_FAILED_NO_UP_SERVER_FOUND=Cannot ${action} ${type}. No up server 
found in ${clusterName}.
 ACTION_TYPE_FAILED_BRICK_ALREADY_EXISTS_IN_VOLUME=Cannot ${action} ${type}. 
Brick ${brick} is already used by the volume ${volumeName}.
 ACTION_TYPE_FAILED_DUPLICATE_BRICKS=Cannot ${action} ${type}. Duplicate 
entries found for brick ${brick}.
+ACTION_TYPE_FAILED_ADD_BRICK_TO_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot ${action} 
${type}. Addition of bricks to disperse volume is not supported.
+ACTION_TYPE_FAILED_ADD_BRICK_TO_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Addition of bricks to distributed disperse volume is not 
supported.
+ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot 
${action} ${type}. Removal of bricks from disperse volume is not supported.
+ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Removal of bricks from distributed disperse volume is not 
supported.
+ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot ${action} 
${type}. Creation of disperse volume is not supported.
+ACTION_TYPE_FAILED_CREATION_OF_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Creation of distriuted disperse volume is not supported.
+
 ACTION_TYPE_FAILED_GLUSTER_HOOK_ID_IS_REQUIRED=Cannot ${action} ${type}. 
Gluster hook id is required.
 ACTION_TYPE_FAILED_GLUSTER_HOOK_DOES_NOT_EXIST=Cannot ${action} ${type}. 
Gluster hook does not exist.
 ERROR_GET_STORAGE_DOMAIN_LIST=Cannot get Storage Domains list.
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 0c41686..cc56298 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -6496,6 +6496,8 @@
         <column>status</column>
         <column>replica_count</column>
         <column>stripe_count</column>
+        <column>disperse_count</column>
+        <column>redundancy_count</column>
         <column>snapshot_count</column>
         <column>_create_date</column>
         <column>_update_date</column>
@@ -6505,6 +6507,8 @@
             <value>test-vol-distribute-1</value>
             <value>DISTRIBUTE</value>
             <value>UP</value>
+            <value>0</value>
+            <value>0</value>
             <value>0</value>
             <value>0</value>
             <value>2</value>
@@ -6520,6 +6524,8 @@
             <value>2</value>
             <value>0</value>
             <value>0</value>
+            <value>0</value>
+            <value>0</value>
             <value>2010-10-21 03:38:22</value>
             <value>2010-11-29 15:57:10</value>
         </row>
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumesListReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumesListReturnForXmlRpc.java
index 1e40c17..c3474d8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumesListReturnForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumesListReturnForXmlRpc.java
@@ -35,6 +35,8 @@
     private static final String VOLUME_STATUS_ONLINE = "ONLINE";
     private static final String REPLICA_COUNT = "replicaCount";
     private static final String STRIPE_COUNT = "stripeCount";
+    private static final String DISPERSE_COUNT = "disperseCount";
+    private static final String REDUNDANCY_COUNT = "redundancyCount";
     private static final String BRICKS_INFO = "bricksInfo"; //contains brick 
name and server uuid
     private static final String NAME = "name";
     private static final String HOST_UUID = "hostUuid";
@@ -79,6 +81,10 @@
             if (volume.getVolumeType().isStripedType()) {
                 volume.setStripeCount(Integer.valueOf((String) 
map.get(STRIPE_COUNT)));
             }
+            if (volume.getVolumeType().isDispersedType()) {
+                volume.setDisperseCount(Integer.valueOf((String) 
map.get(DISPERSE_COUNT)));
+                volume.setRedundancyCount(Integer.valueOf((String) 
map.get(REDUNDANCY_COUNT)));
+            }
         }
 
         for(Object transportType : (Object[])map.get(TRANSPORT_TYPE)) {
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 5707e0d..3716a8f 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
@@ -2952,6 +2952,24 @@
     @DefaultStringValue("Cannot ${action} ${type}. Duplicate entries found for 
brick ${brick}.")
     String ACTION_TYPE_FAILED_DUPLICATE_BRICKS();
 
+    @DefaultStringValue("Cannot ${action} ${type}. Addition of bricks to 
disperse volume is not supported.")
+    String ACTION_TYPE_FAILED_ADD_BRICK_TO_DISPERSE_VOLUME_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Addition of bricks to 
distributed disperse volume is not supported.")
+    String 
ACTION_TYPE_FAILED_ADD_BRICK_TO_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Removal of bricks from 
disperse volume is not supported.")
+    String 
ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Removal of bricks from 
distributed disperse volume is not supported.")
+    String 
ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Creation of disperse volume 
is not supported.")
+    String ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED();
+
+    @DefaultStringValue("Cannot ${action} ${type}. Creation of distributed 
disperse volume is not supported.")
+    String 
ACTION_TYPE_FAILED_CREATION_OF_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED();
+
     @DefaultStringValue("Cannot ${action} ${type}. Brick ${brick} is already 
used by the volume ${volumeName}.")
     String ACTION_TYPE_FAILED_BRICK_ALREADY_EXISTS_IN_VOLUME();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
index 02ca742..f2c51a5 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
@@ -15,6 +15,8 @@
     private String volumeType;
     private String replicaCount;
     private String stripeCount;
+    private String disperseCount;
+    private String redundancyCount;
     private String numOfBricks;
     private String glusterMountPoint;
     private String nfsMountPoint;
@@ -64,6 +66,22 @@
 
     public void setStripeCount(String stripeCount) {
         this.stripeCount = stripeCount;
+    }
+
+    public String getDisperseCount() {
+        return disperseCount;
+    }
+
+    public void setDisperseCount(String disperseCount) {
+        this.disperseCount = disperseCount;
+    }
+
+    public String getRedundancyCount() {
+        return redundancyCount;
+    }
+
+    public void setRedundancyCount(String redundancyCount) {
+        this.redundancyCount = redundancyCount;
     }
 
     public String getNumOfBricks() {
@@ -120,6 +138,8 @@
         setVolumeType(entity.getVolumeType() != null ? 
entity.getVolumeType().toString() : null);
         setReplicaCount(entity.getReplicaCount() != null ? 
Integer.toString(entity.getReplicaCount()) : null);
         setStripeCount(entity.getStripeCount() != null ? 
Integer.toString(entity.getStripeCount()) : null);
+        setDisperseCount(entity.getDisperseCount() != null ? 
Integer.toString(entity.getDisperseCount()) : null);
+        setRedundancyCount(entity.getRedundancyCount() != null ? 
Integer.toString(entity.getRedundancyCount()) : null);
         setNumOfBricks(entity.getBricks() != null ? 
Integer.toString(entity.getBricks().size()) : null);
         setTransportTypes(entity.getTransportTypes());
         setSnapMaxLimit(entity.getSnapMaxLimit() != null ? 
entity.getSnapMaxLimit().toString() : null);
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
index ee17626..7efa845 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java
@@ -305,6 +305,10 @@
 
     String GlusterVolumeType___DISTRIBUTED_STRIPED_REPLICATE();
 
+    String GlusterVolumeType___DISPERSE();
+
+    String GlusterVolumeType___DISTRIBUTED_DISPERSE();
+
     String GlusterStatus___UP();
 
     String GlusterStatus___DOWN();
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
index 5ba2164..679dfd1 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
+++ 
b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties
@@ -157,6 +157,8 @@
 GlusterVolumeType___DISTRIBUTED_STRIPE=Distributed Stripe
 GlusterVolumeType___STRIPED_REPLICATE=Striped Replicate
 GlusterVolumeType___DISTRIBUTED_STRIPED_REPLICATE=Distributed Striped Replicate
+GlusterVolumeType___DISPERSE=Disperse
+GlusterVolumeType___DISTRIBUTED_DISPERSE=Distributed Disperse
 GlusterStatus___UP=Up
 GlusterStatus___DOWN=Down
 TransportType___TCP=TCP
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index b2990e9..fd60de5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -2790,6 +2790,12 @@
     @DefaultStringValue("Maximum no of snapshots")
     String maxNumberOfSnapshotsVolume();
 
+    @DefaultStringValue("Disperse Count")
+    String disperseCount();
+
+    @DefaultStringValue("Redundancy Count")
+    String redundancyCount();
+
     @DefaultStringValue("Activities")
     String activitiesOnVolume();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
index 975d5ef..50ce5a6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
@@ -40,6 +40,8 @@
     TextBoxLabel volumeType = new TextBoxLabel();
     TextBoxLabel replicaCount = new TextBoxLabel();
     TextBoxLabel stripeCount = new TextBoxLabel();
+    TextBoxLabel disperseCount = new TextBoxLabel();
+    TextBoxLabel redundancyCount = new TextBoxLabel();
     TextBoxLabel numOfBricks = new TextBoxLabel();
     VolumeTransportTypeLabel transportTypes = new VolumeTransportTypeLabel();
     TextBoxLabel snapMaxLimit = new TextBoxLabel();
@@ -62,7 +64,7 @@
         driver.initialize(this);
 
         // Build a form using the FormBuilder
-        formBuilder = new FormBuilder(formPanel, 1, 8);
+        formBuilder = new FormBuilder(formPanel, 1, 10);
 
         formBuilder.addFormItem(new FormItem(constants.NameVolume(), name, 0, 
0));
         formBuilder.addFormItem(new FormItem(constants.volumeIdVolume(), 
volumeId, 1, 0));
@@ -77,6 +79,8 @@
         formBuilder.addFormItem(new FormItem(constants.numberOfBricksVolume(), 
numOfBricks, 5, 0));
         formBuilder.addFormItem(new FormItem(constants.transportTypesVolume(), 
transportTypes, 6, 0));
         formBuilder.addFormItem(new 
FormItem(constants.maxNumberOfSnapshotsVolume(), snapMaxLimit, 7, 0));
+        formBuilder.addFormItem(new FormItem(constants.disperseCount(), 
disperseCount, 8, 0));
+        formBuilder.addFormItem(new FormItem(constants.redundancyCount(), 
redundancyCount, 9, 0));
 
         getDetailModel().getPropertyChangedEvent().addListener(new 
IEventListener() {
             @Override
@@ -95,6 +99,8 @@
 
         
replicaFormItem.setIsAvailable(selectedItem.getVolumeType().isReplicatedType());
         
stripeFormItem.setIsAvailable(selectedItem.getVolumeType().isStripedType());
+        
disperseCount.setVisible(selectedItem.getVolumeType().isDispersedType());
+        
redundancyCount.setVisible(selectedItem.getVolumeType().isDispersedType());
 
         formBuilder.update(getDetailModel());
     }
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 15ea453..7fdc96f 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
@@ -1091,6 +1091,12 @@
 ACTION_TYPE_FAILED_CAN_NOT_INCREASE_STRIPE_COUNT_MORE_THAN_ONE=Cannot 
${action} ${type}. Stripe count cannot be increased by more than one.
 ACTION_TYPE_FAILED_CAN_NOT_REDUCE_STRIPE_COUNT=Cannot ${action} ${type}. 
Stripe count can not be reduced.
 ACTION_TYPE_FAILED_DUPLICATE_BRICKS=Cannot ${action} ${type}. Duplicate 
entries found for brick ${brick}.
+ACTION_TYPE_FAILED_ADD_BRICK_TO_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot ${action} 
${type}. Addition of bricks to disperse volume is not supported.
+ACTION_TYPE_FAILED_ADD_BRICK_TO_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Addition of bricks to distributed disperse volume is not 
supported.
+ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot 
${action} ${type}. Removal of bricks from disperse volume is not supported.
+ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Removal of bricks from distributed disperse volume is not 
supported.
+ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot ${action} 
${type}. Creation of disperse volume is not supported.
+ACTION_TYPE_FAILED_CREATION_OF_DISTRIBUTED_DISPERSE_VOLUME_NOT_SUPPORTED=Cannot
 ${action} ${type}. Creation of distriuted disperse volume is not supported.
 ACTION_TYPE_FAILED_BRICK_ALREADY_EXISTS_IN_VOLUME=Cannot ${action} ${type}. 
Brick ${brick} is already used by the volume ${volumeName}.
 ACTION_TYPE_FAILED_NO_UP_SERVER_FOUND=Cannot ${action} ${type}. No up server 
found in ${clusterName}.
 ACTION_TYPE_FAILED_GLUSTER_HOOK_ID_IS_REQUIRED=Cannot ${action} ${type}. 
Gluster hook id is required.
diff --git a/packaging/dbscripts/gluster_volumes_sp.sql 
b/packaging/dbscripts/gluster_volumes_sp.sql
index 03efc8d..516569f 100644
--- a/packaging/dbscripts/gluster_volumes_sp.sql
+++ b/packaging/dbscripts/gluster_volumes_sp.sql
@@ -13,14 +13,16 @@
                                                 v_vol_type VARCHAR(32),
                                                 v_status VARCHAR(32),
                                                 v_replica_count INTEGER,
-                                                v_stripe_count INTEGER)
+                                                v_stripe_count INTEGER,
+                                                v_disperse_count INTEGER,
+                                                v_redundancy_count INTEGER)
     RETURNS VOID
     AS $procedure$
 BEGIN
     INSERT INTO gluster_volumes (id, cluster_id, vol_name, vol_type,
-        status, replica_count, stripe_count)
+        status, replica_count, stripe_count, disperse_count, redundancy_count)
     VALUES (v_id,  v_cluster_id, v_vol_name, v_vol_type,
-        v_status, v_replica_count,  v_stripe_count);
+        v_status, v_replica_count,  v_stripe_count, v_disperse_count, 
v_redundancy_count);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -423,7 +425,9 @@
                                                 v_vol_type VARCHAR(32),
                                                 v_status VARCHAR(32),
                                                 v_replica_count INTEGER,
-                                                v_stripe_count INTEGER)
+                                                v_stripe_count INTEGER,
+                                                v_disperse_count INTEGER,
+                                                v_redundancy_count INTEGER)
     RETURNS VOID
     AS $procedure$
 BEGIN
@@ -434,6 +438,8 @@
         status = v_status,
         replica_count = v_replica_count,
         stripe_count = v_stripe_count,
+        disprse_count = v_disperse_count,
+        redundancy_count = v_redundancy_count,
         _update_date = LOCALTIMESTAMP
     WHERE id = v_id;
 END; $procedure$
diff --git 
a/packaging/dbscripts/upgrade/03_05_1380_add_disperse_and_redundancy_count_to_gluster_volume.sql
 
b/packaging/dbscripts/upgrade/03_05_1380_add_disperse_and_redundancy_count_to_gluster_volume.sql
new file mode 100644
index 0000000..46b369f
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_05_1380_add_disperse_and_redundancy_count_to_gluster_volume.sql
@@ -0,0 +1,2 @@
+SELECT fn_db_add_column('gluster_volumes', 'disperse_count', 'INTEGER NOT NULL 
DEFAULT 0');
+SELECT fn_db_add_column('gluster_volumes', 'redundancy_count', 'INTEGER NOT 
NULL DEFAULT 0');


-- 
To view, visit https://gerrit.ovirt.org/39883
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I23da86445a52233a8c5412e78cd2c72b7399d3bc
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5-gluster
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