aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvalerijf <valerijf@yahoo-inc.com>2016-07-12 11:02:14 +0200
committervalerijf <valerijf@yahoo-inc.com>2016-07-12 11:02:14 +0200
commitdf358e58620470bca056bba443cbc7c2f03d47da (patch)
treebef41016b01f637196c662094c0bfa850f457564
parent4adefbcd4c2aac3856222fdb2cea57fb6e6c77ae (diff)
Rewritten Maintainer to parse command line arguments
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java83
1 files changed, 64 insertions, 19 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java
index 510520169a0..bdd41a4b77a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java
@@ -1,34 +1,79 @@
package com.yahoo.vespa.hosted.node.admin.maintenance;
-import java.util.Arrays;
+import io.airlift.command.Cli;
+import io.airlift.command.Command;
+import io.airlift.command.Help;
+import io.airlift.command.Option;
+import io.airlift.command.ParseArgumentsUnexpectedException;
+import io.airlift.command.ParseOptionMissingException;
/**
* @author valerijf
*/
public class Maintainer {
public static void main(String[] args) {
- if (args.length == 0) {
- System.err.println("Please specify job name. Valid job names:");
- System.err.println(Arrays.asList(JobName.values()));
- return;
- }
+ Cli.CliBuilder<Runnable> builder = Cli.<Runnable>builder("maintainer.jar")
+ .withDescription("This tool makes it easy to delete old log files and other node-admin app data.")
+ .withDefaultCommand(Help.class)
+ .withCommands(Help.class, DeleteOldAppDataArguments.class, DeleteOldLogsArguments.class);
+ Cli<Runnable> gitParser = builder.build();
try {
- JobName jobName = JobName.valueOf(args[0]);
- args = Arrays.copyOfRange(args, 1, args.length);
- switch (jobName) {
- case delete_old_app_data:
- DeleteOldAppData.main(args);
- break;
- }
-
- } catch (IllegalArgumentException e) {
- System.err.println("Invalid job name. Valid job names:");
- System.err.println(Arrays.asList(JobName.values()));
+ gitParser.parse(args).run();
+ } catch (ParseArgumentsUnexpectedException | ParseOptionMissingException e) {
+ System.err.println(e.getMessage());
+ gitParser.parse("help").run();
+ }
+ }
+
+
+ @Command(name = "delete-old-app-data", description = "Deletes all data within a folder and its sub-folders which matches the criteria")
+ private static class DeleteOldAppDataArguments implements Runnable {
+ @Option(name = {"--path"},
+ required = true,
+ description = "Path to directory which contains the app data")
+ private String path;
+
+ @Option(name = {"--max_age"},
+ description = "Delete files older than (in seconds)")
+ private long maxAge = DeleteOldAppData.DEFAULT_MAX_AGE_IN_SECONDS;
+
+ @Option(name = {"--prefix"},
+ description = "Delete files that start with prefix")
+ private String prefix;
+
+ @Option(name = {"--suffix"},
+ description = "Delete files that end with suffix")
+ private String suffix;
+
+ @Override
+ public void run() {
+ DeleteOldAppData.deleteOldAppData(path, maxAge, prefix, suffix, true);
}
}
- private enum JobName {
- delete_old_app_data
+ @Command(name = "delete-old-logs", description = "Deletes all log files that match the criteria in path")
+ private static class DeleteOldLogsArguments implements Runnable {
+ @Option(name = {"--path"},
+ required = true,
+ description = "Path to directory which contains the app data")
+ private String path;
+
+ @Option(name = {"--max_age"},
+ description = "Delete files older than (in seconds)")
+ private long maxAge = DeleteOldAppData.DEFAULT_MAX_AGE_IN_SECONDS;
+
+ @Option(name = {"--prefix"},
+ description = "Delete files that start with prefix")
+ private String prefix;
+
+ @Option(name = {"--suffix"},
+ description = "Delete files that end with suffix")
+ private String suffix;
+
+ @Override
+ public void run() {
+ DeleteOldAppData.deleteOldAppData(path, maxAge, prefix, suffix, false);
+ }
}
}