summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-05-20 15:12:17 +0530
committerDhandapani <dhandapani@gluster.com>2011-05-25 18:03:35 +0530
commit5b70e0e1270ba91fef2fe28f50b1fb87cc1e9b27 (patch)
tree169be3cab5d4f335369486eb05b73d3f7ae0373a /src/com.gluster.storage.management.client
parentb321add074a8b8413f9285bac7458a1d4ceea60c (diff)
parentdfc27f51da469160e50e20d8ff59e714b5942546 (diff)
Merge branch 'disk-to-brick'
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java80
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java101
2 files changed, 111 insertions, 70 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index e639f615..36da2631 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map.Entry;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
+import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.Disk;
@@ -106,7 +107,7 @@ public class GlusterDataModelManager {
private void addDiscoveredServer(List<Server> servers, Entity parent, String name, int numOfCPUs, double cpuUsage,
double totalMemory, double memoryInUse, double totalDiskSpace, double diskSpaceInUse) {
Server server = new Server(name, parent, numOfCPUs, cpuUsage, totalMemory, memoryInUse);
- server.addDisk(new Disk(server, "sda", totalDiskSpace, diskSpaceInUse, DISK_STATUS.READY));
+ server.addDisk(new Disk(server, "sda", "/export/md1", totalDiskSpace, diskSpaceInUse, DISK_STATUS.READY));
addNetworkInterface(server, "eth0");
servers.add(server);
@@ -172,21 +173,21 @@ public class GlusterDataModelManager {
}
private void initializeDisks() {
- s1da = new Disk(server1, "sda", 100d, 80d, DISK_STATUS.READY);
- s1db = new Disk(server1, "sdb", 100d, 67.83, DISK_STATUS.READY);
+ s1da = new Disk(server1, "sda", "/export/md0", 100d, 80d, DISK_STATUS.READY);
+ s1db = new Disk(server1, "sdb", "/export/md1", 100d, 67.83, DISK_STATUS.READY);
- s2da = new Disk(server2, "sda", 200d, 157.12, DISK_STATUS.READY);
- s2db = new Disk(server2, "sdb", 200d, 182.27, DISK_STATUS.READY);
- s2dc = new Disk(server2, "sdc", 200d, -1d, DISK_STATUS.UNINITIALIZED);
- s2dd = new Disk(server2, "sdd", 200d, 124.89, DISK_STATUS.READY);
+ s2da = new Disk(server2, "sda", "/export/md0", 200d, 157.12, DISK_STATUS.READY);
+ s2db = new Disk(server2, "sdb", "/export/md1", 200d, 182.27, DISK_STATUS.READY);
+ s2dc = new Disk(server2, "sdc", "/export/md0", 200d, -1d, DISK_STATUS.UNINITIALIZED);
+ s2dd = new Disk(server2, "sdd", "/export/md1", 200d, 124.89, DISK_STATUS.READY);
// disk name unavailable since server is offline
- s3da = new Disk(server3, "NA", -1d, -1d, DISK_STATUS.OFFLINE);
+ s3da = new Disk(server3, "NA", "NA", -1d, -1d, DISK_STATUS.OFFLINE);
- s4da = new Disk(server4, "sda", 100d, 85.39, DISK_STATUS.READY);
+ s4da = new Disk(server4, "sda", "/export/md0", 100d, 85.39, DISK_STATUS.READY);
- s5da = new Disk(server5, "sda", 100d, 92.83, DISK_STATUS.READY);
- s5db = new Disk(server5, "sdb", 200d, 185.69, DISK_STATUS.READY);
+ s5da = new Disk(server5, "sda", "/export/md1", 100d, 92.83, DISK_STATUS.READY);
+ s5db = new Disk(server5, "sdb", "/export/md1", 200d, 185.69, DISK_STATUS.READY);
}
private void addDisksToServers() {
@@ -279,11 +280,29 @@ public class GlusterDataModelManager {
return logMessages;
}
- public Disk getVolumeDisk(String volumeDisk) {
+ /**
+ * @param serverPartition Qualified name of the disk to be returned (serverName:diskName)
+ * @return The disk object for given qualified name
+ */
+ public Disk getDisk(String serverPartition) {
List<Disk> allDisks = getReadyDisksOfAllServers();
- String brickInfo[] = volumeDisk.split(":");
+ String diskInfo[] = serverPartition.split(":");
for (Disk disk : allDisks) {
- if (disk.getServerName().equals(brickInfo[0]) && disk.getName().equals(brickInfo[1])) {
+ if (disk.getServerName().equals(diskInfo[0]) && disk.getName().equals(diskInfo[1])) {
+ return disk;
+ }
+ }
+ return null;
+ }
+
+ /*
+ * @param diskName (sda)
+ * @return The disk object for given disk name
+ */
+ public Disk getDiskDetails(String diskName) {
+ List<Disk> allDisks = getReadyDisksOfAllServers();
+ for (Disk disk : allDisks) {
+ if (disk.getName().equals(diskName)) {
return disk;
}
}
@@ -300,14 +319,34 @@ public class GlusterDataModelManager {
Disk disk = null;
List<Disk> volumeDisks = new ArrayList<Disk>();
for (String volumeDisk : volume.getDisks()) {
- disk = getVolumeDisk(volumeDisk);
+ disk = getDisk(volumeDisk);
if (disk != null && disk.isReady()) {
volumeDisks.add(disk);
}
}
return volumeDisks;
}
-
+
+
+ public List<Brick> getOnlineBricks(Volume volume) {
+ List<Brick> onlineBricks = new ArrayList<Brick>();
+ for(Brick brick : volume.getBricks()) {
+ if (isOnlineDisk(brick.getDiskName())) {
+ onlineBricks.add(brick);
+ }
+ }
+ return onlineBricks;
+ }
+
+ public boolean isOnlineDisk(String diskName) {
+ for( Disk disk : getReadyDisksOfAllServers() ) {
+ if (disk.getName().equals(diskName) && disk.isReady()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public List<Disk> getReadyDisksOfAllVolumes() {
List<Disk> disks = new ArrayList<Disk>();
for (Volume volume : model.getCluster().getVolumes()) {
@@ -424,6 +463,15 @@ public class GlusterDataModelManager {
volume.setAccessControlList(accessControlList);
setVolumeOption(volume, getOptionEntry(volume, Volume.OPTION_AUTH_ALLOW));
}
+
+ public Server getGlusterServer(String serverName) {
+ for(Server server : model.getCluster().getServers() ) {
+ if (server.getName().equals(serverName)) {
+ return server;
+ }
+ }
+ return null;
+ }
private Entry<String, String> getOptionEntry(Volume volume, String optionKey) {
for (Entry entry : volume.getOptions().entrySet()) {
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java
index c0ce8620..0555e322 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java
@@ -20,7 +20,6 @@
*/
package com.gluster.storage.management.client;
-import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -29,11 +28,9 @@ import javax.ws.rs.core.MultivaluedMap;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.constants.GlusterConstants;
import com.gluster.storage.management.core.constants.RESTConstants;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
+import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.response.LogMessageListResponse;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
@@ -92,7 +89,7 @@ public class VolumesClient extends AbstractClient {
}
public Status deleteVolume(Volume volume, boolean deleteOption) {
- MultivaluedMap<String, String> queryParams = prepareGetDeleteVolumeQueryParams(volume.getName(), deleteOption);
+ MultivaluedMap<String, String> queryParams = prepareDeleteVolumeQueryParams(volume.getName(), deleteOption);
return (Status) deleteSubResource(volume.getName(), Status.class, queryParams);
}
@@ -100,17 +97,11 @@ public class VolumesClient extends AbstractClient {
return ((VolumeOptionInfoListResponse) fetchSubResource(RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS,
VolumeOptionInfoListResponse.class));
}
-
- public Status addDisks(String volumeName, List<Disk> diskList) {
- String disks = StringUtil.ListToString( GlusterCoreUtil.getQualifiedDiskNames(diskList), ",");
- Form form = new Form();
- form.add(RESTConstants.QUERY_PARAM_DISKS, disks);
- return (Status) postRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
- }
- public Status addDisks(String volumeName, String disks) {
+ public Status addBricks(String volumeName, List<String> brickList) {
+ String bricks = StringUtil.ListToString(brickList, ",");
Form form = new Form();
- form.add(RESTConstants.QUERY_PARAM_DISKS, disks);
+ form.add(RESTConstants.FORM_PARAM_BRICKS, bricks);
return (Status) postRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
}
@@ -133,51 +124,54 @@ public class VolumesClient extends AbstractClient {
* Number of most recent log messages to be fetched (from each disk)
* @return Log Message List response received from the Gluster Management Server.
*/
- public LogMessageListResponse getLogs(String volumeName, String diskName, String severity, Date fromTimestamp, Date toTimestamp, int messageCount) {
+ public LogMessageListResponse getLogs(String volumeName, String diskName, String severity, Date fromTimestamp,
+ Date toTimestamp, int messageCount) {
MultivaluedMap<String, String> queryParams = prepareGetLogQueryParams(diskName, severity, fromTimestamp,
toTimestamp, messageCount);
return (LogMessageListResponse) fetchSubResource(volumeName + "/" + RESTConstants.SUBRESOURCE_LOGS,
queryParams, LogMessageListResponse.class);
}
-
+
public void downloadLogs(String volumeName, String filePath) {
- downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/" + RESTConstants.SUBRESOURCE_DOWNLOAD, filePath);
+ downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/"
+ + RESTConstants.SUBRESOURCE_DOWNLOAD, filePath);
}
-
- public Status removeBricks(String volumeName, List<Disk> diskList, boolean deleteOption) {
- String disks = StringUtil.ListToString( GlusterCoreUtil.getQualifiedDiskNames(diskList), ",");
- MultivaluedMap<String, String> queryParams = prepareGetRemoveBrickQueryParams(volumeName, disks, deleteOption);
+
+ public Status removeBricks(String volumeName, List<Brick> BrickList, boolean deleteOption) {
+ String bricks = StringUtil.ListToString(GlusterCoreUtil.getQualifiedBrickList(BrickList), ",");
+ MultivaluedMap<String, String> queryParams = prepareRemoveBrickQueryParams(volumeName, bricks, deleteOption);
return (Status) deleteSubResource(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, queryParams);
}
-
- private MultivaluedMap<String, String> prepareGetRemoveBrickQueryParams(String volumeName, String disks, boolean deleteOption) {
+
+ private MultivaluedMap<String, String> prepareRemoveBrickQueryParams(String volumeName, String bricks,
+ boolean deleteOption) {
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName);
- queryParams.add(RESTConstants.QUERY_PARAM_DISKS, disks);
+ queryParams.add(RESTConstants.QUERY_PARAM_BRICKS, bricks);
queryParams.add(RESTConstants.QUERY_PARAM_DELETE_OPTION, "" + deleteOption);
return queryParams;
}
- private MultivaluedMap<String, String> prepareGetDeleteVolumeQueryParams(String volumeName, boolean deleteOption) {
+ private MultivaluedMap<String, String> prepareDeleteVolumeQueryParams(String volumeName, boolean deleteOption) {
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName);
queryParams.add(RESTConstants.QUERY_PARAM_DELETE_OPTION, "" + deleteOption);
return queryParams;
}
-
+
private MultivaluedMap<String, String> prepareGetLogQueryParams(String diskName, String severity,
Date fromTimestamp, Date toTimestamp, int messageCount) {
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add(RESTConstants.QUERY_PARAM_LINE_COUNT, "" + messageCount);
- if(!diskName.equals(CoreConstants.ALL)) {
+ if (!diskName.equals(CoreConstants.ALL)) {
queryParams.add(RESTConstants.QUERY_PARAM_DISK_NAME, diskName);
}
-
+
if (!severity.equals(CoreConstants.ALL)) {
queryParams.add(RESTConstants.QUERY_PARAM_LOG_SEVERITY, severity);
}
-
+
if (fromTimestamp != null) {
queryParams.add(RESTConstants.QUERY_PARAM_FROM_TIMESTAMP,
DateUtil.dateToString(fromTimestamp, CoreConstants.DATE_WITH_TIME_FORMAT));
@@ -190,43 +184,42 @@ public class VolumesClient extends AbstractClient {
return queryParams;
}
- public Status startMigration( String volumeName, String diskFrom, String diskTo) {
+ public Status startMigration(String volumeName, String brickFrom, String brickTo) {
Form form = new Form();
- form.add(RESTConstants.FORM_PARAM_VALUE_SOURCE, diskFrom);
- form.add(RESTConstants.FORM_PARAM_VALUE_TARGET, diskTo);
+ form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom);
+ form.add(RESTConstants.FORM_PARAM_TARGET, brickTo);
form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_START);
-
- return (Status) putRequest( volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
+
+ return (Status) putRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
}
-
- public Status stopMigration(String volumeName, String diskFrom, String diskTo) {
+
+ public Status stopMigration(String volumeName, String brickFrom, String brickkTo) {
Form form = new Form();
- form.add(RESTConstants.FORM_PARAM_VALUE_SOURCE, diskFrom);
- form.add(RESTConstants.FORM_PARAM_VALUE_TARGET, diskTo);
+ form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom);
+ form.add(RESTConstants.FORM_PARAM_TARGET, brickkTo);
form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_STOP);
-
- return (Status) putRequest( volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
+
+ return (Status) putRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
}
-
- public Status pauseMigration(String volumeName, String diskFrom, String diskTo) {
+
+ public Status pauseMigration(String volumeName, String brickFrom, String brickTo) {
Form form = new Form();
- form.add(RESTConstants.FORM_PARAM_VALUE_SOURCE, diskFrom);
- form.add(RESTConstants.FORM_PARAM_VALUE_TARGET, diskTo);
+ form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom);
+ form.add(RESTConstants.FORM_PARAM_TARGET, brickTo);
form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_PAUSE);
-
- return (Status) putRequest( volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
+
+ return (Status) putRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
}
-
- public Status statusMigration(String volumeName, String diskFrom, String diskTo) {
+
+ public Status statusMigration(String volumeName, String brickFrom, String brickTo) {
Form form = new Form();
- form.add(RESTConstants.FORM_PARAM_VALUE_SOURCE, diskFrom);
- form.add(RESTConstants.FORM_PARAM_VALUE_TARGET, diskTo);
+ form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom);
+ form.add(RESTConstants.FORM_PARAM_TARGET, brickTo);
form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.FORM_PARAM_VALUE_STATUS);
-
- return (Status) putRequest( volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
+
+ return (Status) putRequest(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, form);
}
-
-
+
public static void main(String[] args) {
UsersClient usersClient = new UsersClient();
if (usersClient.authenticate("gluster", "gluster").isSuccess()) {