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