diff options
Diffstat (limited to 'src/com.gluster.storage.management.client')
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, |
