Added -help option for commands. -help is similar to the unix' man command
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_stabilization_ioc_installer@1309 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommand.java
index 8ebdea5..7329929 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommand.java
@@ -14,16 +14,17 @@
*/
package edu.uci.ics.asterix.installer.command;
-
import org.apache.log4j.Logger;
import org.kohsuke.args4j.CmdLineParser;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
+
public abstract class AbstractCommand implements ICommand {
protected static final Logger LOGGER = Logger.getLogger(AbstractCommand.class.getName());
protected CommandConfig config;
-
+
protected String usageDescription;
public void execute(String[] args) throws Exception {
@@ -32,7 +33,11 @@
config = getCommandConfig();
CmdLineParser parser = new CmdLineParser(config);
parser.parseArgument(cmdArgs);
- execCommand();
+ if (config.helpMode()) {
+ System.out.println(getUsageDescription());
+ } else {
+ execCommand();
+ }
}
abstract protected void execCommand() throws Exception;
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommandConfig.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommandConfig.java
new file mode 100644
index 0000000..f28dfd9
--- /dev/null
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AbstractCommandConfig.java
@@ -0,0 +1,15 @@
+package edu.uci.ics.asterix.installer.command;
+
+import org.kohsuke.args4j.Option;
+
+public class AbstractCommandConfig implements CommandConfig {
+
+ @Option(name = "-help", required = false, usage = "Help")
+ public boolean help = false;
+
+ @Override
+ public boolean helpMode() {
+ return help;
+ }
+
+}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AlterCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AlterCommand.java
index 7cb15d9..8d6f051 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AlterCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/AlterCommand.java
@@ -19,6 +19,7 @@
import org.kohsuke.args4j.Option;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.model.AsterixInstance;
import edu.uci.ics.asterix.installer.model.AsterixInstance.State;
@@ -29,6 +30,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String instanceName = ((AlterConfig) config).name;
InstallerUtil.validateAsterixInstanceExists(instanceName, State.INACTIVE);
ILookupService lookupService = ServiceProvider.INSTANCE.getLookupService();
@@ -48,18 +50,18 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nAlter the instance's configuration settings."
+ + "\nPrior to running this command, the instance is required to be INACTIVE state."
+ + "\n\nAvailable arguments/options"
+ + "\n-n name of the ASTERIX instance"
+ + "\n-conf path to the ASTERIX configuration file.";
}
}
-class AlterConfig implements CommandConfig {
+class AlterConfig extends AbstractCommandConfig {
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
-
- @Option(name = "-n", required = true, usage = "Name of Asterix Instance")
+ @Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
@Option(name = "-conf", required = false, usage = "Path to instance configuration")
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/BackupCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/BackupCommand.java
index 58c309a..7ca400a 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/BackupCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/BackupCommand.java
@@ -20,6 +20,7 @@
import org.kohsuke.args4j.Option;
import edu.uci.ics.asterix.event.schema.pattern.Patterns;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.events.PatternCreator;
import edu.uci.ics.asterix.installer.model.AsterixInstance;
@@ -31,6 +32,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((BackupConfig) config).name;
AsterixInstance instance = InstallerUtil.validateAsterixInstanceExists(asterixInstanceName, State.INACTIVE);
List<BackupInfo> backupInfo = instance.getBackupInfo();
@@ -51,17 +53,21 @@
@Override
protected String getUsageDescription() {
- return null;
+ return "\nIn an undesirable event of data loss either due to a disk/system"
+ + "\nfailure or accidental execution of a DDL statement (drop dataverse/dataset),"
+ + "\nyou may need to recover the lost data. The backup command allows you to take a"
+ + "\nbackup of the data stored with an ASTERIX instance. "
+ + "\nThe backed up snapshot is stored in HDFS."
+ + "\n\nAvailable arguments/options:"
+ + "\n-n name of the Asterix instance";
+
}
}
-class BackupConfig implements CommandConfig {
+class BackupConfig extends AbstractCommandConfig {
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
-
- @Option(name = "-n", required = true, usage = "Name of the Asterix instance")
+ @Option(name = "-n", required = false, usage = "Name of the Asterix instance")
public String name;
@Option(name = "-local", required = false, usage = "Path on the local file system for backup")
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CommandConfig.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CommandConfig.java
index c0dd480..94aa935 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CommandConfig.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CommandConfig.java
@@ -16,4 +16,5 @@
public interface CommandConfig {
+ public boolean helpMode();
}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ConfigureCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ConfigureCommand.java
index 597824f..b1901b5 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ConfigureCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ConfigureCommand.java
@@ -7,8 +7,6 @@
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import org.kohsuke.args4j.Option;
-
import edu.uci.ics.asterix.event.schema.cluster.Cluster;
import edu.uci.ics.asterix.event.schema.cluster.WorkingDir;
import edu.uci.ics.asterix.installer.driver.InstallerDriver;
@@ -50,8 +48,8 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nAuto-generates the ASTERIX installer configruation settings and ASTERIX cluster "
+ + "\n configuration settings for a single node setup.";
}
@Override
@@ -61,9 +59,6 @@
}
-class ConfigureConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class ConfigureConfig extends AbstractCommandConfig {
}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CreateCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CreateCommand.java
index 38c542f..e65848d 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CreateCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/CreateCommand.java
@@ -42,6 +42,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
ValidateCommand validateCommand = new ValidateCommand();
boolean valid = validateCommand.validateCluster(((CreateConfig) config).clusterPath);
if (!valid) {
@@ -95,22 +96,23 @@
@Override
protected String getUsageDescription() {
- return null;
+ return "\nCreates an ASTERIX instance with a specified name."
+ + "\n\nPost creation, the instance is in ACTIVE state, signifying its "
+ + "\navailability for executing statements/queries." + "\n\nUsage arguments/options:"
+ + "\n-n Name of the ASTERIX instance." + "\n-c Path to the cluster configuration file"
+ + "\n-a Path to the ASTERIX configuration file";
}
}
-class CreateConfig implements CommandConfig {
+class CreateConfig extends AbstractCommandConfig {
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
-
- @Option(name = "-n", required = true, usage = "Name of Asterix Instance")
+ @Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
- @Option(name = "-c", required = true, usage = "Path to cluster configuration")
+ @Option(name = "-c", required = false, usage = "Path to cluster configuration")
public String clusterPath;
- @Option(name = "-a", required = true, usage = "Path to cluster configuration")
+ @Option(name = "-a", required = false, usage = "Path to cluster configuration")
public String asterixConf;
}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DeleteCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DeleteCommand.java
index dc4d53e..22ef630 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DeleteCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DeleteCommand.java
@@ -17,6 +17,7 @@
import org.kohsuke.args4j.Option;
import edu.uci.ics.asterix.event.schema.pattern.Patterns;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.events.PatternCreator;
import edu.uci.ics.asterix.installer.model.AsterixInstance;
@@ -27,6 +28,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((DeleteConfig) config).name;
AsterixInstance instance = InstallerUtil.validateAsterixInstanceExists(asterixInstanceName, State.INACTIVE);
PatternCreator pc = new PatternCreator();
@@ -43,16 +45,13 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nPermanently deletes an ASTERIX instance." + "\n" + "The instance must be in the INACTIVE state."
+ + "\n\nAvailable arguments/options" + "\n-n name of the ASTERIX instance.";
}
}
-class DeleteConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class DeleteConfig extends AbstractCommandConfig {
@Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DescribeCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DescribeCommand.java
index 977acaf..63dcc30 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DescribeCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/DescribeCommand.java
@@ -18,6 +18,7 @@
import org.kohsuke.args4j.Option;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.error.InstallerException;
import edu.uci.ics.asterix.installer.error.VerificationUtil;
@@ -30,6 +31,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((DescribeConfig) config).name;
boolean adminView = ((DescribeConfig) config).admin;
if (asterixInstanceName != null) {
@@ -72,16 +74,13 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nProvides information about an ASTERIX instance." + "\n\nUsage arguments/options:-"
+ + "\n[-n] Name of the ASTERIX instance." + "\n[-admin] Provides a detailed description";
}
}
-class DescribeConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class DescribeConfig extends AbstractCommandConfig {
@Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/RestoreCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/RestoreCommand.java
index 777d179..69d34e0 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/RestoreCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/RestoreCommand.java
@@ -17,6 +17,7 @@
import org.kohsuke.args4j.Option;
import edu.uci.ics.asterix.event.schema.pattern.Patterns;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.events.PatternCreator;
import edu.uci.ics.asterix.installer.model.AsterixInstance;
@@ -26,6 +27,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((RestoreConfig) config).name;
AsterixInstance instance = InstallerUtil.validateAsterixInstanceExists(asterixInstanceName, State.INACTIVE);
int backupId = ((RestoreConfig) config).backupId;
@@ -45,21 +47,19 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nRestores an ASTERIX instance's data from a previously taken backup snapshot."
+ + "\n\nAvailable arguments/options" + "\n-n name of the ASTERIX instance"
+ + "\n-b id of the backed up snapshot ";
}
}
-class RestoreConfig implements CommandConfig {
+class RestoreConfig extends AbstractCommandConfig {
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
-
- @Option(name = "-n", required = true, usage = "Name of the Asterix instance")
+ @Option(name = "-n", required = false, usage = "Name of the Asterix instance")
public String name;
- @Option(name = "-b", required = true, usage = "Id corresponding to the backed up version")
+ @Option(name = "-b", required = false, usage = "Id corresponding to the backed up version")
public int backupId;
}
\ No newline at end of file
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ShutdownCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ShutdownCommand.java
index a897516..0224876 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ShutdownCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ShutdownCommand.java
@@ -14,8 +14,6 @@
*/
package edu.uci.ics.asterix.installer.command;
-import org.kohsuke.args4j.Option;
-
import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.service.ILookupService;
import edu.uci.ics.asterix.installer.service.ServiceProvider;
@@ -35,15 +33,11 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nShuts down the installer's backgrouund processes";
}
}
-class ShutdownConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class ShutdownConfig extends AbstractCommandConfig {
}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StartCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StartCommand.java
index 99dfaa5..818b8d9 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StartCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StartCommand.java
@@ -32,6 +32,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((StartConfig) config).name;
AsterixInstance instance = InstallerUtil.validateAsterixInstanceExists(asterixInstanceName, State.INACTIVE);
InstallerUtil.createAsterixZip(instance, false);
@@ -53,16 +54,14 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nStarts an ASTERIX instance that is in INACTIVE state."
+ + "\nAfter executing the start command, the ASTERIX instance transits to the ACTIVE state,"
+ + "\nindicating that it is now available for executing statements/queries."
+ + "\n\nAvailable arguments/options" + "\n-n name of the ASTERIX instance. ";
}
-
}
-class StartConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class StartConfig extends AbstractCommandConfig {
@Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StopCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StopCommand.java
index 81b147a..cab6065 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StopCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/StopCommand.java
@@ -24,6 +24,7 @@
import edu.uci.ics.asterix.event.schema.cluster.Node;
import edu.uci.ics.asterix.event.schema.pattern.Pattern;
import edu.uci.ics.asterix.event.schema.pattern.Patterns;
+import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.driver.InstallerUtil;
import edu.uci.ics.asterix.installer.events.PatternCreator;
import edu.uci.ics.asterix.installer.model.AsterixInstance;
@@ -34,6 +35,7 @@
@Override
protected void execCommand() throws Exception {
+ InstallerDriver.initConfig();
String asterixInstanceName = ((StopConfig) config).name;
AsterixInstance asterixInstance = InstallerUtil.validateAsterixInstanceExists(asterixInstanceName,
State.ACTIVE, State.UNUSABLE);
@@ -68,18 +70,19 @@
@Override
protected String getUsageDescription() {
- // TODO Auto-generated method stub
- return null;
+ return "\nShuts an ASTERIX instance that is in ACTIVE/UNUSABLE state."
+ + "\nAfter executing the stop command, the ASTERIX instance transits"
+ + "\nto the INACTIVE state, indicating that it is no longer available"
+ + "\nfor executing statements/queries." + "\n\nAvailable arguments/options"
+ + "\n-n name of the ASTERIX instance.";
+
}
}
-class StopConfig implements CommandConfig {
+class StopConfig extends AbstractCommandConfig {
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
-
- @Option(name = "-n", required = true, usage = "Name of Asterix Instance")
+ @Option(name = "-n", required = false, usage = "Name of Asterix Instance")
public String name;
}
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ValidateCommand.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ValidateCommand.java
index 426e1b2..9638ac6 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ValidateCommand.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/command/ValidateCommand.java
@@ -32,8 +32,6 @@
import edu.uci.ics.asterix.installer.driver.InstallerDriver;
import edu.uci.ics.asterix.installer.schema.conf.Configuration;
import edu.uci.ics.asterix.installer.schema.conf.Zookeeper;
-import edu.uci.ics.asterix.installer.service.ILookupService;
-import edu.uci.ics.asterix.installer.service.ServiceProvider;
public class ValidateCommand extends AbstractCommand {
@@ -67,7 +65,10 @@
@Override
protected String getUsageDescription() {
- return null;
+ return "\nValidate the installer's configuration or a cluster configuration" + "\nUsage"
+ + "\nFor validating the installer configuration" + "\n use $ managix validate"
+ + "\n\nFor validating a cluster configuration"
+ + "\n$ use managix validate -c <path to the cluster configuration file>";
}
public boolean validateEnvironment() throws Exception {
@@ -233,10 +234,7 @@
}
-class ValidateConfig implements CommandConfig {
-
- @Option(name = "-h", required = false, usage = "Help")
- public boolean help = false;
+class ValidateConfig extends AbstractCommandConfig {
@Option(name = "-c", required = false, usage = "Path to the cluster configuration xml")
public String cluster;
diff --git a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/driver/InstallerDriver.java b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/driver/InstallerDriver.java
index d22e9b2..b6add8f 100644
--- a/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/driver/InstallerDriver.java
+++ b/asterix-installer/src/main/java/edu/uci/ics/asterix/installer/driver/InstallerDriver.java
@@ -54,7 +54,7 @@
return conf;
}
- private static void initConfig() throws Exception {
+ public static void initConfig() throws Exception {
File configFile = new File(managixHome + File.separator + MANAGIX_CONF_XML);
JAXBContext configCtx = JAXBContext.newInstance(Configuration.class);
Unmarshaller unmarshaller = configCtx.createUnmarshaller();
@@ -101,10 +101,6 @@
try {
if (args.length != 0) {
managixHome = System.getenv(ENV_MANAGIX_HOME);
- CommandType cmdType = CommandType.valueOf(args[0].toUpperCase());
- if (!cmdType.equals(CommandType.VALIDATE) && !cmdType.equals(CommandType.CONFIGURE)) {
- initConfig();
- }
CommandHandler cmdHandler = new CommandHandler();
cmdHandler.processCommand(args);
} else {