summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java60
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java46
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java7
3 files changed, 77 insertions, 36 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
index 807e32a3..e8877321 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -19,12 +19,12 @@ public abstract class AbstractClient {
protected WebResource resource;
private String securityToken;
private String authHeader;
-
+
public AbstractClient() {
URI baseURI = new ClientUtil().getServerBaseURI();
resource = Client.create(new DefaultClientConfig()).resource(baseURI).path(getResourceName());
}
-
+
public AbstractClient(String securityToken) {
this();
setSecurityToken(securityToken);
@@ -93,8 +93,11 @@ public abstract class AbstractClient {
/**
* Submits given Form using POST method to the resource and returns the object received as response
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -105,9 +108,13 @@ public abstract class AbstractClient {
/**
* Submits given Form using POST method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -118,9 +125,13 @@ public abstract class AbstractClient {
/**
* Submits given Form using PUT method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
protected Object putRequest(String subResourceName, Class responseClass, Form form) {
@@ -130,8 +141,11 @@ public abstract class AbstractClient {
/**
* Submits given Form using PUT method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
* @return Object of given class received as response
*/
protected Object putRequest(String subResourceName, Class responseClass) {
@@ -141,8 +155,11 @@ public abstract class AbstractClient {
/**
* Submits given object to the resource and returns the object received as response
- * @param responseClass Class of the object expected as response
- * @param requestObject the Object to be submitted
+ *
+ * @param responseClass
+ * Class of the object expected as response
+ * @param requestObject
+ * the Object to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -151,6 +168,18 @@ public abstract class AbstractClient {
.post(responseClass, requestObject);
}
+ @SuppressWarnings("unchecked")
+ protected Object deleteResource(Class responseClass, Form form) {
+ return resource.header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ protected Object deleteSubResource(String subResourceName, Class responseClass, String volumeName,
+ String deleteOption) {
+ return resource.path(subResourceName).queryParam("volumeName", volumeName)
+ .queryParam("deleteOption", deleteOption).header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
+ }
+
public abstract String getResourceName();
/**
@@ -161,7 +190,8 @@ public abstract class AbstractClient {
}
/**
- * @param securityToken the securityToken to set
+ * @param securityToken
+ * the securityToken to set
*/
protected void setSecurityToken(String securityToken) {
this.securityToken = securityToken;
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 2a6f053a..9e031ad3 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
@@ -120,7 +120,6 @@ public class GlusterDataModelManager {
initializeGlusterServers(cluster);
initializeVolumes(cluster);
-
initializeAutoDiscoveredServers(cluster);
initializeDisks();
@@ -138,8 +137,9 @@ public class GlusterDataModelManager {
private void initializeVolumeOptionsDefaults() {
VolumeOptionInfoListResponse response = new VolumesClient(getSecurityToken()).getVolumeOptionsDefaults();
- if(!response.getStatus().isSuccess()) {
- throw new GlusterRuntimeException("Error fetching volume option defaults: [" + response.getStatus().getMessage() + "]");
+ if (!response.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException("Error fetching volume option defaults: ["
+ + response.getStatus().getMessage() + "]");
}
this.volumeOptionsDefaults = response.getOptions();
}
@@ -165,7 +165,7 @@ public class GlusterDataModelManager {
private void initializeVolumes(Cluster cluster) {
VolumesClient volumeClient = new VolumesClient(securityToken);
VolumeListResponse response = volumeClient.getAllVolumes();
- if(!response.getStatus().isSuccess()) {
+ if (!response.getStatus().isSuccess()) {
throw new GlusterRuntimeException("Error fetching volume list: [" + response.getStatus() + "]");
}
cluster.setVolumes(response.getVolumes());
@@ -299,8 +299,8 @@ public class GlusterDataModelManager {
/*
* TODO: review the logic
*
- * List<Disk> disks = new ArrayList<Disk>(); for (Disk disk :
- * volume.getDisks()) { if (disk.isReady()) { disks.add(disk); } }
+ * List<Disk> disks = new ArrayList<Disk>(); for (Disk disk : volume.getDisks()) { if (disk.isReady()) {
+ * disks.add(disk); } }
*/
Disk disk = null;
List<Disk> volumeDisks = new ArrayList<Disk>();
@@ -364,23 +364,32 @@ public class GlusterDataModelManager {
}
}
+ public void deleteVolume(Volume volume) {
+ Cluster cluster = model.getCluster();
+ cluster.deleteVolume(volume);
+
+ for (ClusterListener listener : listeners) {
+ listener.volumeDeleted(volume);
+ }
+ }
+
public void updateVolumeStatus(Volume volume, VOLUME_STATUS newStatus) {
volume.setStatus(newStatus);
for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_STATUS_CHANGED, newStatus));
}
}
-
+
public void resetVolumeOptions(Volume volume) {
volume.getOptions().clear();
for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTIONS_RESET, null));
}
}
-
+
public void setVolumeOption(Volume volume, Entry<String, String> entry) {
volume.setOption(entry.getKey(), (String) entry.getValue());
- for(ClusterListener listener : listeners) {
+ for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTION_SET, entry));
}
}
@@ -393,25 +402,25 @@ public class GlusterDataModelManager {
listener.volumeCreated(volume);
}
}
-
+
public List<VolumeOptionInfo> getVolumeOptionsDefaults() {
return volumeOptionsDefaults;
}
public VolumeOptionInfo getVolumeOptionInfo(String optionKey) {
- for(VolumeOptionInfo info : volumeOptionsDefaults) {
- if(info.getName().equals(optionKey)) {
+ for (VolumeOptionInfo info : volumeOptionsDefaults) {
+ if (info.getName().equals(optionKey)) {
return info;
}
}
throw new GlusterRuntimeException("Invalid option key [" + optionKey
+ "] passed to GlusterDataModelManager#getVolumeOptionInfo");
}
-
+
public String getVolumeOptionDefaultValue(String optionKey) {
return getVolumeOptionInfo(optionKey).getDefaultValue();
}
-
+
public String getVolumeOptionDesc(String optionKey) {
return getVolumeOptionInfo(optionKey).getDescription();
}
@@ -420,13 +429,14 @@ public class GlusterDataModelManager {
volume.setAccessControlList(accessControlList);
setVolumeOption(volume, getOptionEntry(volume, Volume.OPTION_AUTH_ALLOW));
}
-
+
private Entry<String, String> getOptionEntry(Volume volume, String optionKey) {
- for(Entry entry : volume.getOptions().entrySet()) {
- if(entry.getKey().equals(optionKey)) {
+ for (Entry entry : volume.getOptions().entrySet()) {
+ if (entry.getKey().equals(optionKey)) {
return entry;
}
}
- throw new GlusterRuntimeException("Couldn't find entry for option [" + optionKey + "] on volume [" + volume.getName());
+ throw new GlusterRuntimeException("Couldn't find entry for option [" + optionKey + "] on volume ["
+ + volume.getName());
}
}
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 1d9ddbff..05b89306 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,12 +20,9 @@
*/
package com.gluster.storage.management.client;
-import java.util.List;
-
import com.gluster.storage.management.core.constants.RESTConstants;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeOptionInfo;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
import com.sun.jersey.api.representation.Form;
@@ -78,6 +75,10 @@ public class VolumesClient extends AbstractClient {
public Volume getVolume(String volumeName) {
return (Volume) fetchSubResource(volumeName, Volume.class);
}
+
+ public Status deleteVolume(Volume volume, String deleteOption) {
+ return (Status) deleteSubResource(volume.getName(), Status.class, volume.getName(), deleteOption);
+ }
public VolumeOptionInfoListResponse getVolumeOptionsDefaults() {
return ((VolumeOptionInfoListResponse) fetchSubResource(RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS,