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 <[email protected]> --- 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/validator/gluster/GlusterBrickValidator.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_06_0950_add_disperse_and_redundancy_count_to_gluster_volume.sql 19 files changed, 138 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/06/38306/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 7675712..603bc3c 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,10 @@ 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; + } 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 c8eaf9e..d42bb11 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,11 @@ return false; } + if (volume.getVolumeType().isDispersedType()) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CREATION_OF_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/validator/gluster/GlusterBrickValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/gluster/GlusterBrickValidator.java index b60edc0..2c6e3e3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/gluster/GlusterBrickValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/gluster/GlusterBrickValidator.java @@ -47,6 +47,9 @@ return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CAN_NOT_INCREASE_REPLICA_COUNT); } } + if (volumeEntity.getVolumeType().isDispersedType()) { + return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED); + } for (GlusterBrickEntity brick : bricks) { if (brick.getId(false) == null && brick.getQualifiedName() == null) { 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..cccbcef 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,11 @@ /** * Distributes striped data across replicated bricks. */ - DISTRIBUTED_STRIPED_REPLICATE; + DISTRIBUTED_STRIPED_REPLICATE, + /** + * Erasure encoded volume + */ + DISPERSE; public String value() { return name().toUpperCase(); @@ -61,4 +65,8 @@ public boolean isDistributedType() { return value().contains("DISTRIBUTE"); } + + public boolean isDispersedType() { + return value().contains("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 44a2a8c..ad58bb5 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 @@ -947,6 +947,9 @@ 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.BAD_PARAMETERS), + ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.BAD_PARAMETERS), + ACTION_TYPE_FAILED_CREATION_OF_DISPERSE_VOLUME_NOT_SUPPORTED(ErrorType.BAD_PARAMETERS), 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 7b59986..afbfe4b 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 @@ -374,6 +374,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; @@ -454,7 +456,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 @@ -486,7 +490,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 d9fcb7a..c19b092 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -1131,6 +1131,9 @@ 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_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED="Cannot ${action} ${type}. Removal of bricks from 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_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 bfa2b5a..2a4fb21 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -6821,6 +6821,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> @@ -6830,6 +6832,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> @@ -6845,6 +6849,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 0e96c72..318ce91 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"; @@ -80,6 +82,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 2574b5d..2de3bb5 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 @@ -3008,6 +3008,15 @@ @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}. Removal of bricks from disperse volume is not supported.") + String ACTION_TYPE_FAILED_REMOVE_BRICK_FROM_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}. 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 519278e..5121f18 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 f1e711b..90544ae 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 @@ -319,6 +319,8 @@ String GlusterVolumeType___DISTRIBUTED_STRIPED_REPLICATE(); + String GlusterVolumeType___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 d1f2bb3..d38415e 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 @@ -164,6 +164,7 @@ GlusterVolumeType___DISTRIBUTED_STRIPE=Distributed Stripe GlusterVolumeType___STRIPED_REPLICATE=Striped Replicate GlusterVolumeType___DISTRIBUTED_STRIPED_REPLICATE=Distributed Striped Replicate +GlusterVolumeType___DISPERSE=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 b59d8ff..a26b356 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 @@ -2835,6 +2835,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 2fbc6b2..46abf6b 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 @@ -44,6 +44,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(); @@ -68,7 +70,7 @@ generateIds(); // 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)); @@ -84,6 +86,10 @@ 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<PropertyChangedEventArgs>() { @Override @@ -107,6 +113,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 404d8f4..a70854d 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 @@ -1115,6 +1115,9 @@ 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_REMOVE_BRICK_FROM_DISPERSE_VOLUME_NOT_SUPPORTED="Cannot ${action} ${type}. Removal of bricks from 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_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_06_0950_add_disperse_and_redundancy_count_to_gluster_volume.sql b/packaging/dbscripts/upgrade/03_06_0950_add_disperse_and_redundancy_count_to_gluster_volume.sql new file mode 100644 index 0000000..46b369f --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0950_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/38306 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I23da86445a52233a8c5412e78cd2c72b7399d3bc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shubhendu Tripathi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
