summaryrefslogtreecommitdiffstats
path: root/src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-11-25 20:13:35 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-11-25 20:13:35 +0530
commit1142b0e41de39010de7845cf70d71dbb001fc1dc (patch)
tree3513487f65c1a7df47996bd2852393aceaac1b8a /src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java
parent92c52d8edf285945d31e446503fc742fde9dcc49 (diff)
Renamed projects / packages com.gluster.* to org.gluster.*
Diffstat (limited to 'src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java')
-rw-r--r--src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java369
1 files changed, 369 insertions, 0 deletions
diff --git a/src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java b/src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java
new file mode 100644
index 00000000..71c9e081
--- /dev/null
+++ b/src/org.gluster.storage.management.gateway/src/org/gluster/storage/management/gateway/services/GlusterInterface.java
@@ -0,0 +1,369 @@
+package org.gluster.storage.management.gateway.services;
+
+import java.util.List;
+import java.util.Map;
+
+import org.gluster.storage.management.core.model.TaskStatus;
+import org.gluster.storage.management.core.model.Volume;
+import org.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
+import org.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
+import org.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
+
+
+/**
+ * Interface for interacting with GlusterFS. Every version of GlusterFS supported by the Gluster Management Gateway will
+ * have a corresponding implementation of this interface.
+ */
+public interface GlusterInterface {
+
+ /**
+ * Returns the GlusterFS version on given server.
+ *
+ * @param serverName
+ * Server on which Gluster version is to be checked.
+ * @return
+ */
+ public abstract String getVersion(String serverName);
+
+ /**
+ * Adds the new server to an existing cluster.
+ *
+ * @param existingServer
+ * Server part of the existing cluster.
+ * @param newServer
+ * Server to be added to the cluster.
+ */
+ public abstract void addServer(String existingServer, String newServer);
+
+ /**
+ * Removes given server from the cluster by executing appropriate Gluster command on given server.
+ *
+ * @param existingServer
+ * Server part of the existing cluster.
+ * @param serverName
+ * Server to be removed from the cluster.
+ */
+ public abstract void removeServer(String existingServer, String serverName);
+
+ /**
+ * Starts the given volume by executing appropriate Gluster command on given server.
+ *
+ * @param volumeName
+ * Volume to be started.
+ * @param serverName
+ * Server on which the Gluster command is to be executed. This server must be part of the cluster to
+ * which the volume belongs.
+ * @param force
+ * Flag indicating whether the "force" option should be used for starting the Volume. This is typically
+ * used when Volume is already started, but at least one of its bricks is offline, and results in
+ * bringing up the offline bricks.
+ */
+ public abstract void startVolume(String volumeName, String serverName, Boolean force);
+
+ /**
+ * Stops the given volume by executing appropriate Gluster command on given server.
+ *
+ * @param volumeName
+ * Volume to be stopped.
+ * @param serverName
+ * Server on which the Gluster command is to be executed. This server must be part of the cluster to
+ * which the volume belongs.
+ * @param force
+ * Flag indicating whether the Volume should be stopped forcefully. This is typically used if the regular
+ * stop option fails because of issues like rebalance / brick migration / geo-replication being in
+ * progress. This results in forcefully stopping the volume, leaving the other processes intact.
+ */
+ public abstract void stopVolume(String volumeName, String serverName, Boolean force);
+
+ /**
+ * Resets volume options on the given volume by executing appropriate Gluster command on given server.
+ *
+ * @param volumeName
+ * Volume on which options are to be reset.
+ * @param serverName
+ * Server on which the Gluster command is to be executed. This server must be part of the cluster to
+ * which the volume belongs.
+ */
+ public abstract void resetOptions(String volumeName, String serverName);
+
+ /**
+ * Creates a volume on given volume using given properties.
+ *
+ * @param serverName
+ * Server on which the Gluster command for creating the volume will be executed. This must be part of the
+ * cluster in which the volume is to be created.
+ * @param volumeName
+ * Name of the volume.
+ * @param volumeType
+ * Type of the volume e.g. DISTRIBUTE, REPLICATE, STRIPE, etc. See {@link VOLUME_TYPE} for full list of
+ * valid values.
+ * @param transportType
+ * Transport type of the volume e.g. ETHERNET. See {@link TRANSPORT_TYPE} for full list of valid values.
+ * @param replOrStripeCount
+ * Replica Count or Stripe count depending on the volume type. Ignored in case of pure distribute volumes
+ * (no replicate, no stripe).
+ * @param bricks
+ * Comma separated list of volume brick directories in following format: <br>
+ * server1:dir1,server2:dir2,server3:dir3,...,servern:dirn
+ * @param accessProtocols
+ * Optional parameter indicating access protocols to be enabled for the volume. If empty/null, GLUSTERFS
+ * and NFS will be enabled.
+ * @param options
+ * A comma separated list of volume options to be set on the newly created volume in following format: <br>
+ * key1=value1,key2=value2,key3=value3,...,keyn=valuen
+ */
+ public abstract void createVolume(String serverName, String volumeName, String volumeType, String transportType,
+ Integer replOrStripeCount, String bricks, String accessProtocols, String options);
+
+ /**
+ * Creates / Sets the given options on the given volume by executing appropriate Gluster command on the given
+ * server.
+ *
+ * @param volumeName
+ * Volume on which the options are to be set.
+ * @param options
+ * Map containing the volume options to be set. Key = option key, Value = option value.
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void createOptions(String volumeName, Map<String, String> options, String serverName);
+
+ /**
+ * Sets the given option on given volume by executing appropriate Gluster command on the given server.
+ *
+ * @param volumeName
+ * Volume on which the option is to be set.
+ * @param key
+ * Option key (name)
+ * @param value
+ * Option value
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void setOption(String volumeName, String key, String value, String serverName);
+
+ /**
+ * Deletes the given volume by executing appropriate Gluster command on the given server.
+ *
+ * @param volumeName
+ * Volume to be deleted.
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void deleteVolume(String volumeName, String serverName);
+
+ /**
+ * Fetches properties of the given Volume by executing appropriate Gluster command on the given server.
+ *
+ * @param volumeName
+ * Volume whose properties are to be fetched.
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @return A {@link Volume} object containing all properties of the given volume
+ */
+ public abstract Volume getVolume(String volumeName, String serverName);
+
+ /**
+ * Fetches the list of all volumes (along with their properties) by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @return A list of {@link Volume} objects representing every volume present in the cluster to which the given
+ * server belongs.
+ */
+ public abstract List<Volume> getAllVolumes(String serverName);
+
+ /**
+ * Adds given list of bricks to given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param volumeName
+ * Volume to which the bricks are to be added.
+ * @param bricks
+ * List of bricks to be added, each in the format serverName:brickDirectory
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void addBricks(String volumeName, List<String> bricks, String serverName);
+
+ /**
+ * Removes given list of bricks from given volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param volumeName
+ * Volume from which the bricks are to be removed
+ * @param bricks
+ * List of bricks to be removed, each in the format serverName:brickDirectory
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void removeBricks(String volumeName, List<String> bricks, String serverName);
+
+ /**
+ * Returns the log location of given brick of given volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param volumeName
+ * Volume for which log location is to be fetched.
+ * @param brickName
+ * Brick of the volume for which log location is to be fetched.
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @return Full path of the log file location (directory) for the given Volume Brick.
+ */
+ public abstract String getLogLocation(String volumeName, String brickName, String serverName);
+
+ /**
+ * Returns the log file name for given brick directory.
+ *
+ * @param serverName
+ * Server to which the brick belongs
+ * @param brickDir
+ * Brick directory for which log file name is to be returned.
+ * @return The log file name (without path) for the given brick directory.
+ */
+ public abstract String getLogFileNameForBrickDir(String serverName, String brickDir);
+
+ /**
+ * Checks the status of "Rebalance" operation on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose rebalance status is to be checked.
+ * @return Object of {@link TaskStatus} representing the status of Volume Rebalance.
+ */
+ public abstract TaskStatus checkRebalanceStatus(String serverName, String volumeName);
+
+ /**
+ * Stops "Rebalance" operation running on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Rebalance is to be stopped.
+ */
+ public abstract void stopRebalance(String serverName, String volumeName);
+
+ /**
+ * Starts Brick Migration (replace-brick) on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Brick is to be migrated/replaced.
+ * @param fromBrick
+ * The source Brick (to be replaced).
+ * @param toBrick
+ * The destination Brick (will replace the source Brick).
+ */
+ public abstract void startBrickMigration(String serverName, String volumeName, String fromBrick, String toBrick);
+
+ /**
+ * Pauses Brick Migration (replace-brick) running on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Brick is being migrated/replaced.
+ * @param fromBrick
+ * The source Brick (being replaced).
+ * @param toBrick
+ * The destination Brick (which is replacing the source Brick).
+ */
+ public abstract void pauseBrickMigration(String serverName, String volumeName, String fromBrick, String toBrick);
+
+ /**
+ * Aborts Brick Migration (replace-brick) running on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Brick is being migrated/replaced.
+ * @param fromBrick
+ * The source Brick (being replaced).
+ * @param toBrick
+ * The destination Brick (which is replacing the source Brick)
+ */
+ public abstract void stopBrickMigration(String serverName, String volumeName, String fromBrick, String toBrick);
+
+ /**
+ * Commits Brick Migration (replace-brick) running on given Volume by executing appropriate Gluster command on the
+ * given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Brick is being migrated/replaced.
+ * @param fromBrick
+ * The source Brick (being replaced).
+ * @param toBrick
+ * The destination Brick (which is replacing the source Brick)
+ */
+ public abstract void commitBrickMigration(String serverName, String volumeName, String fromBrick, String toBrick);
+
+ /**
+ * Checks status of Brick Migration (replace-brick) running on given Volume by executing appropriate Gluster command
+ * on the given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @param volumeName
+ * Volume whose Brick is being migrated/replaced.
+ * @param fromBrick
+ * The source Brick (being replaced).
+ * @param toBrick
+ * The destination Brick (which is replacing the source Brick)
+ * @return A {@link TaskStatus} object representing the status of Brick Migration
+ */
+ public abstract TaskStatus checkBrickMigrationStatus(String serverName, String volumeName, String fromBrick,
+ String toBrick);
+
+ /**
+ * Returns information about all the supported Volume Options by executing appropriate Gluster command
+ * on the given server.
+ *
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ * @return A {@link VolumeOptionInfoListResponse} object containing information about each and every supported
+ * Volume Option
+ */
+ public abstract VolumeOptionInfoListResponse getVolumeOptionsInfo(String serverName);
+
+ /**
+ * Rotates the logs for given Bricks of given Volume by executing appropriate Gluster command
+ * on the given server.
+ *
+ * @param volumeName
+ * Volume whose logs are to be rotated.
+ * @param brickList
+ * List of bricks whose logs are to be rotated, each in the format serverName:brickDirectory <br>
+ * This is an optional parameter. If null or empty, all logs of the Volume will be rotated.
+ * @param serverName
+ * The server on which the Gluster command will be executed. This must be part of the cluster to which
+ * the volume belongs.
+ */
+ public abstract void logRotate(String volumeName, List<String> brickList, String serverName);
+} \ No newline at end of file