diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-07-12 11:02:14 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-07-12 11:02:14 +0200 |
commit | df358e58620470bca056bba443cbc7c2f03d47da (patch) | |
tree | bef41016b01f637196c662094c0bfa850f457564 | |
parent | 4adefbcd4c2aac3856222fdb2cea57fb6e6c77ae (diff) |
Rewritten Maintainer to parse command line arguments
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/Maintainer.java | 83 |
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); + } } } |