summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gateway
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-09-28 15:51:45 +0530
committerDhandapani <dhandapani@gluster.com>2011-09-28 15:52:39 +0530
commit41443888c6cfbc9d5debb675df9f484d1a9131bb (patch)
treea48d9336666610b3924e1e040d6f94d4152f0f19 /src/com.gluster.storage.management.gateway
parentdb1784e5e95ea4c4a2b0ab41da862868834099d0 (diff)
Story #41: Volume Log Rotate
Diffstat (limited to 'src/com.gluster.storage.management.gateway')
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java5
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java21
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/GlusterUtil.java10
3 files changed, 35 insertions, 1 deletions
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java
index b892df32..d26f6acb 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java
@@ -193,7 +193,8 @@ public class VolumesResource extends AbstractResource {
@FormParam(FORM_PARAM_FIX_LAYOUT) Boolean isFixLayout,
@FormParam(FORM_PARAM_MIGRATE_DATA) Boolean isMigrateData,
@FormParam(FORM_PARAM_FORCED_DATA_MIGRATE) Boolean isForcedDataMigrate,
- @FormParam(FORM_PARAM_CIFS_ENABLE) Boolean enableCifs, @FormParam(FORM_PARAM_CIFS_USERS) String cifsUsers) {
+ @FormParam(FORM_PARAM_CIFS_ENABLE) Boolean enableCifs, @FormParam(FORM_PARAM_CIFS_USERS) String cifsUsers,
+ @FormParam(FORM_PARAM_BRICKS) String brickList) {
if (clusterName == null || clusterName.isEmpty()) {
throw new GlusterValidationException("Cluster name must not be empty!");
}
@@ -228,6 +229,8 @@ public class VolumesResource extends AbstractResource {
}
volumeService.deleteCifsUsers(clusterName, volumeName);
}
+ } else if (operation.equals(RESTConstants.FORM_PARAM_LOG_ROTATE)) {
+ volumeService.logRotate(clusterName, volumeName, brickList);
} else {
volumeService.performVolumeOperation(clusterName, volumeName, operation);
}
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
index eb585b98..6a8d75a4 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
@@ -686,6 +686,27 @@ public class VolumeService {
}
}
+ public void logRotate(String clusterName, String volumeName, String bricks) {
+ GlusterServer onlineServer = clusterService.getOnlineServer(clusterName);
+ List<String> brickList = Arrays.asList(bricks.split(","));
+ try {
+ if (onlineServer == null) {
+ throw new GlusterRuntimeException("No online servers found in cluster [" + clusterName + "]");
+ }
+
+ glusterUtil.logRotate(volumeName, brickList, onlineServer.getName());
+ } catch (Exception e) {
+ // check if online server has gone offline. If yes, try again one more time.
+ if (e instanceof ConnectionException || serverUtil.isServerOnline(onlineServer) == false) {
+ // online server has gone offline! try with a different one.
+ onlineServer = clusterService.getNewOnlineServer(clusterName);
+ glusterUtil.logRotate(volumeName, brickList, onlineServer.getName());
+ } else {
+ throw new GlusterRuntimeException(e.getMessage());
+ }
+ }
+ }
+
public void performVolumeOperation(String clusterName, String volumeName, String operation) {
GlusterServer onlineServer = clusterService.getOnlineServer(clusterName);
try {
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/GlusterUtil.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/GlusterUtil.java
index 3bcd5826..a7a96ccd 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/utils/GlusterUtil.java
@@ -180,6 +180,16 @@ public class GlusterUtil {
public void stopVolume(String volumeName, String knownServer) {
serverUtil.executeOnServer(knownServer, "gluster --mode=script volume stop " + volumeName);
}
+
+ public void logRotate(String volumeName, List<String> brickList, String knownServer) {
+ if (brickList.size() > 0) {
+ for (String brickDir : brickList) {
+ serverUtil.executeOnServer(knownServer, "gluster volume log rotate " + volumeName + " " + brickDir);
+ }
+ } else {
+ serverUtil.executeOnServer(knownServer, "gluster volume log rotate " + volumeName);
+ }
+ }
public void resetOptions(String volumeName, String knownServer) {
serverUtil.executeOnServer(knownServer, "gluster volume reset " + volumeName);