summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.console
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-08-17 02:56:22 -0700
committerShireesh Anjal <anjalshireesh@gmail.com>2011-08-17 02:56:22 -0700
commit26ca3ab4375a11487cc7ac9406bbcd60bf8cf7d9 (patch)
tree85e8d58d812385086766df1fccd7343b5ed8c763 /src/com.gluster.storage.management.console
parent3a082258c516c82c4208b00b5307be35a468cd51 (diff)
parentadd2c0417ccb9ecd94e733381c7575209308c2cc (diff)
Merge pull request #240 from Selvasundaram/master
Replicate volume total space calculation bug - fix
Diffstat (limited to 'src/com.gluster.storage.management.console')
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumePage1.java1
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumeWizard.java14
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java36
3 files changed, 42 insertions, 9 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumePage1.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumePage1.java
index 8fa27087..d7d98d24 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumePage1.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumePage1.java
@@ -362,7 +362,6 @@ public class CreateVolumePage1 extends WizardPage {
}
addVolumeBricks();
-
return volume;
}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumeWizard.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumeWizard.java
index bfb29ee1..498723d9 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumeWizard.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/CreateVolumeWizard.java
@@ -28,6 +28,7 @@ import com.gluster.storage.management.console.utils.GlusterLogger;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
public class CreateVolumeWizard extends Wizard {
private static final String title = "Gluster Management Console - Create Volume";
@@ -51,8 +52,17 @@ public class CreateVolumeWizard extends Wizard {
try {
volumesClient.createVolume(newVolume);
+
+ // Set proper volume type before assign to model
+ VOLUME_TYPE volumetype = newVolume.getVolumeType();
+ if (volumetype == VOLUME_TYPE.REPLICATE && newVolume.getBricks().size() > newVolume.getReplicaCount()) {
+ newVolume.setVolumeType(VOLUME_TYPE.DISTRIBUTED_REPLICATE);
+ } else if (volumetype == VOLUME_TYPE.STRIPE && newVolume.getBricks().size() > newVolume.getStripeCount()) {
+ newVolume.setVolumeType(VOLUME_TYPE.DISTRIBUTED_STRIPE);
+ }
+
handleSuccess(newVolume, volumesClient);
- } catch(Exception e) {
+ } catch (Exception e) {
String errMsg = e.getMessage();
// the error could be in to post-volume-create processing. check if this is the case.
if (volumesClient.volumeExists(newVolume.getName())) {
@@ -62,7 +72,7 @@ public class CreateVolumeWizard extends Wizard {
return false;
}
}
-
+
return true;
}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
index 9a456626..dfd0c669 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
@@ -3,6 +3,7 @@ package com.gluster.storage.management.console.views;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -664,7 +665,7 @@ public class VolumeSummaryView extends ViewPart {
|| volume.getVolumeType() == VOLUME_TYPE.DISTRIBUTED_REPLICATE) {
replicaCount = (double) volume.getReplicaCount();
}
- totalDiskSpace.setText("" + NumberUtil.formatNumber((getTotalDiskSpace() / 1024) / replicaCount));
+ totalDiskSpace.setText("" + NumberUtil.formatNumber(getTotalDiskSpace() / 1024));
}
private double getDiskSize(String serverName, String deviceName) {
@@ -691,16 +692,39 @@ public class VolumeSummaryView extends ViewPart {
}
private double getTotalDiskSpace() {
+ List<Double> diskSizes = getVolumeDiskSizes();
+ VOLUME_TYPE volumeType = volume.getVolumeType();
double diskSize = 0d;
+ if (volumeType == VOLUME_TYPE.DISTRIBUTE || volumeType == VOLUME_TYPE.STRIPE
+ || volumeType == VOLUME_TYPE.DISTRIBUTED_STRIPE) {
+ for (Double size : diskSizes) {
+ diskSize += size;
+ }
+ } else { // Replicate or distributed replicate
+ int replicaCount = volume.getReplicaCount();
+ if (replicaCount == 0) {
+ replicaCount = Volume.DEFAULT_REPLICA_COUNT;
+ }
+ int startIndex = 0;
+ for (int i = 0; i < (diskSizes.size() / replicaCount); i++) {
+ startIndex = i * replicaCount;
+ diskSize += Collections.min(diskSizes.subList(startIndex, startIndex + replicaCount));
+ }
+ }
+ return diskSize;
+ }
+
+ private List<Double> getVolumeDiskSizes() {
+ List<Double> diskSizes = new ArrayList<Double>();
Device device;
for (Brick brick : volume.getBricks()) {
device = modelManager.getDeviceForBrickDir(brick);
- if (device != null) { // In case of off line server, device becomes null
- diskSize += getDiskSize(brick.getServerName(), device.getName());
- }
+ diskSizes.add( (device == null) ? 0d : getDiskSize(brick.getServerName(), device.getName()) );
}
- return diskSize;
+ return diskSizes;
}
+
+
private void createDiskSpaceField(Composite section) {
Label diskSpaceLabel = toolkit.createLabel(section, "Total Disk Space (GB): ", SWT.NONE);
@@ -712,7 +736,7 @@ public class VolumeSummaryView extends ViewPart {
replicaCount = (double) Volume.DEFAULT_REPLICA_COUNT;
}
totalDiskSpace = toolkit.createLabel(section,
- "" + NumberUtil.formatNumber((getTotalDiskSpace() / 1024) / replicaCount), SWT.NONE);
+ "" + NumberUtil.formatNumber(getTotalDiskSpace() / 1024), SWT.NONE);
toolkit.createLabel(section, "", SWT.NONE); // dummy
}