Example usage for org.apache.commons.cli Option setArgName

List of usage examples for org.apache.commons.cli Option setArgName

Introduction

In this page you can find the example usage for org.apache.commons.cli Option setArgName.

Prototype

public void setArgName(String argName) 

Source Link

Document

Sets the display name for the argument value.

Usage

From source file:org.apache.hadoop.tools.HadoopArchiveLogs.java

private void handleOpts(String[] args) throws ParseException {
    Options opts = new Options();
    Option helpOpt = new Option(HELP_OPTION, false, "Prints this message");
    Option maxEligibleOpt = new Option(MAX_ELIGIBLE_APPS_OPTION, true,
            "The maximum number of eligible apps to process (default: " + DEFAULT_MAX_ELIGIBLE + " (all))");
    maxEligibleOpt.setArgName("n");
    Option minNumLogFilesOpt = new Option(MIN_NUM_LOG_FILES_OPTION, true,
            "The minimum number of log files required to be eligible (default: " + DEFAULT_MIN_NUM_LOG_FILES
                    + ")");
    minNumLogFilesOpt.setArgName("n");
    Option maxTotalLogsSizeOpt = new Option(MAX_TOTAL_LOGS_SIZE_OPTION, true,
            "The maximum total logs size (in megabytes) required to be eligible" + " (default: "
                    + DEFAULT_MAX_TOTAL_LOGS_SIZE + ")");
    maxTotalLogsSizeOpt.setArgName("megabytes");
    Option memoryOpt = new Option(MEMORY_OPTION, true,
            "The amount of memory (in megabytes) for each container (default: " + DEFAULT_MEMORY + ")");
    memoryOpt.setArgName("megabytes");
    Option verboseOpt = new Option(VERBOSE_OPTION, false, "Print more details.");
    Option forceOpt = new Option(FORCE_OPTION, false,
            "Force recreating the working directory if an existing one is found. "
                    + "This should only be used if you know that another instance is "
                    + "not currently running");
    Option noProxyOpt = new Option(NO_PROXY_OPTION, false,
            "When specified, all processing will be done as the user running this"
                    + " command (or the Yarn user if DefaultContainerExecutor is in "
                    + "use). When not specified, all processing will be done as the "
                    + "user who owns that application; if the user running this command"
                    + " is not allowed to impersonate that user, it will fail");
    opts.addOption(helpOpt);/*from   www  .  j a  v  a2  s. co  m*/
    opts.addOption(maxEligibleOpt);
    opts.addOption(minNumLogFilesOpt);
    opts.addOption(maxTotalLogsSizeOpt);
    opts.addOption(memoryOpt);
    opts.addOption(verboseOpt);
    opts.addOption(forceOpt);
    opts.addOption(noProxyOpt);

    try {
        CommandLineParser parser = new GnuParser();
        CommandLine commandLine = parser.parse(opts, args);
        if (commandLine.hasOption(HELP_OPTION)) {
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("mapred archive-logs", opts);
            System.exit(0);
        }
        if (commandLine.hasOption(MAX_ELIGIBLE_APPS_OPTION)) {
            maxEligible = Integer.parseInt(commandLine.getOptionValue(MAX_ELIGIBLE_APPS_OPTION));
            if (maxEligible == 0) {
                LOG.info("Setting " + MAX_ELIGIBLE_APPS_OPTION + " to 0 accomplishes "
                        + "nothing. Please either set it to a negative value "
                        + "(default, all) or a more reasonable value.");
                System.exit(0);
            }
        }
        if (commandLine.hasOption(MIN_NUM_LOG_FILES_OPTION)) {
            minNumLogFiles = Integer.parseInt(commandLine.getOptionValue(MIN_NUM_LOG_FILES_OPTION));
        }
        if (commandLine.hasOption(MAX_TOTAL_LOGS_SIZE_OPTION)) {
            maxTotalLogsSize = Long.parseLong(commandLine.getOptionValue(MAX_TOTAL_LOGS_SIZE_OPTION));
            maxTotalLogsSize *= 1024L * 1024L;
        }
        if (commandLine.hasOption(MEMORY_OPTION)) {
            memory = Long.parseLong(commandLine.getOptionValue(MEMORY_OPTION));
        }
        if (commandLine.hasOption(VERBOSE_OPTION)) {
            verbose = true;
        }
        if (commandLine.hasOption(FORCE_OPTION)) {
            force = true;
        }
        if (commandLine.hasOption(NO_PROXY_OPTION)) {
            proxy = false;
        }
    } catch (ParseException pe) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("mapred archive-logs", opts);
        throw pe;
    }
}

From source file:org.apache.hadoop.yarn.client.cli.ApplicationCLI.java

@Override
public int run(String[] args) throws Exception {
    Options opts = new Options();
    String title = null;//from w ww .  ja  va  2 s .c  o m
    if (args.length > 0 && args[0].equalsIgnoreCase(APPLICATION)) {
        title = APPLICATION;
        opts.addOption(STATUS_CMD, true, "Prints the status of the application.");
        opts.addOption(LIST_CMD, false,
                "List applications. " + "Supports optional use of -appTypes to filter applications "
                        + "based on application type, "
                        + "and -appStates to filter applications based on application state.");
        opts.addOption(MOVE_TO_QUEUE_CMD, true, "Moves the application to a " + "different queue.");
        opts.addOption(QUEUE_CMD, true,
                "Works with the movetoqueue command to" + " specify which queue to move an application to.");
        opts.addOption(HELP_CMD, false, "Displays help for all commands.");
        Option appTypeOpt = new Option(APP_TYPE_CMD, true, "Works with -list to "
                + "filter applications based on " + "input comma-separated list of application types.");
        appTypeOpt.setValueSeparator(',');
        appTypeOpt.setArgs(Option.UNLIMITED_VALUES);
        appTypeOpt.setArgName("Types");
        opts.addOption(appTypeOpt);
        Option appStateOpt = new Option(APP_STATE_CMD, true,
                "Works with -list " + "to filter applications based on input comma-separated list of "
                        + "application states. " + getAllValidApplicationStates());
        appStateOpt.setValueSeparator(',');
        appStateOpt.setArgs(Option.UNLIMITED_VALUES);
        appStateOpt.setArgName("States");
        opts.addOption(appStateOpt);
        opts.addOption(APP_ID, true, "Specify Application Id to be operated");
        opts.addOption(UPDATE_PRIORITY, true,
                "update priority of an application. ApplicationId can be" + " passed using 'appId' option.");
        Option killOpt = new Option(KILL_CMD, true,
                "Kills the application. " + "Set of applications can be provided separated with space");
        killOpt.setValueSeparator(' ');
        killOpt.setArgs(Option.UNLIMITED_VALUES);
        killOpt.setArgName("Application ID");
        opts.addOption(killOpt);
        opts.getOption(MOVE_TO_QUEUE_CMD).setArgName("Application ID");
        opts.getOption(QUEUE_CMD).setArgName("Queue Name");
        opts.getOption(STATUS_CMD).setArgName("Application ID");
        opts.getOption(APP_ID).setArgName("Application ID");
        opts.getOption(UPDATE_PRIORITY).setArgName("Priority");
    } else if (args.length > 0 && args[0].equalsIgnoreCase(APPLICATION_ATTEMPT)) {
        title = APPLICATION_ATTEMPT;
        opts.addOption(STATUS_CMD, true, "Prints the status of the application attempt.");
        opts.addOption(LIST_CMD, true, "List application attempts for application.");
        opts.addOption(FAIL_CMD, true, "Fails application attempt.");
        opts.addOption(HELP_CMD, false, "Displays help for all commands.");
        opts.getOption(STATUS_CMD).setArgName("Application Attempt ID");
        opts.getOption(LIST_CMD).setArgName("Application ID");
        opts.getOption(FAIL_CMD).setArgName("Application Attempt ID");
    } else if (args.length > 0 && args[0].equalsIgnoreCase(CONTAINER)) {
        title = CONTAINER;
        opts.addOption(STATUS_CMD, true, "Prints the status of the container.");
        opts.addOption(LIST_CMD, true, "List containers for application attempt.");
        opts.addOption(HELP_CMD, false, "Displays help for all commands.");
        opts.getOption(STATUS_CMD).setArgName("Container ID");
        opts.getOption(LIST_CMD).setArgName("Application Attempt ID");
        opts.addOption(SIGNAL_CMD, true,
                "Signal the container. The available signal commands are "
                        + java.util.Arrays.asList(SignalContainerCommand.values())
                        + " Default command is OUTPUT_THREAD_DUMP.");
        opts.getOption(SIGNAL_CMD).setArgName("container ID [signal command]");
        opts.getOption(SIGNAL_CMD).setArgs(3);
    }

    int exitCode = -1;
    CommandLine cliParser = null;
    try {
        cliParser = new GnuParser().parse(opts, args);
    } catch (MissingArgumentException ex) {
        sysout.println("Missing argument for options");
        printUsage(title, opts);
        return exitCode;
    }

    if (cliParser.hasOption(STATUS_CMD)) {
        if (args.length != 3) {
            printUsage(title, opts);
            return exitCode;
        }
        if (args[0].equalsIgnoreCase(APPLICATION)) {
            exitCode = printApplicationReport(cliParser.getOptionValue(STATUS_CMD));
        } else if (args[0].equalsIgnoreCase(APPLICATION_ATTEMPT)) {
            exitCode = printApplicationAttemptReport(cliParser.getOptionValue(STATUS_CMD));
        } else if (args[0].equalsIgnoreCase(CONTAINER)) {
            exitCode = printContainerReport(cliParser.getOptionValue(STATUS_CMD));
        }
        return exitCode;
    } else if (cliParser.hasOption(LIST_CMD)) {
        if (args[0].equalsIgnoreCase(APPLICATION)) {
            allAppStates = false;
            Set<String> appTypes = new HashSet<String>();
            if (cliParser.hasOption(APP_TYPE_CMD)) {
                String[] types = cliParser.getOptionValues(APP_TYPE_CMD);
                if (types != null) {
                    for (String type : types) {
                        if (!type.trim().isEmpty()) {
                            appTypes.add(StringUtils.toUpperCase(type).trim());
                        }
                    }
                }
            }

            EnumSet<YarnApplicationState> appStates = EnumSet.noneOf(YarnApplicationState.class);
            if (cliParser.hasOption(APP_STATE_CMD)) {
                String[] states = cliParser.getOptionValues(APP_STATE_CMD);
                if (states != null) {
                    for (String state : states) {
                        if (!state.trim().isEmpty()) {
                            if (state.trim().equalsIgnoreCase(ALLSTATES_OPTION)) {
                                allAppStates = true;
                                break;
                            }
                            try {
                                appStates.add(
                                        YarnApplicationState.valueOf(StringUtils.toUpperCase(state).trim()));
                            } catch (IllegalArgumentException ex) {
                                sysout.println("The application state " + state + " is invalid.");
                                sysout.println(getAllValidApplicationStates());
                                return exitCode;
                            }
                        }
                    }
                }
            }
            listApplications(appTypes, appStates);
        } else if (args[0].equalsIgnoreCase(APPLICATION_ATTEMPT)) {
            if (args.length != 3) {
                printUsage(title, opts);
                return exitCode;
            }
            listApplicationAttempts(cliParser.getOptionValue(LIST_CMD));
        } else if (args[0].equalsIgnoreCase(CONTAINER)) {
            if (args.length != 3) {
                printUsage(title, opts);
                return exitCode;
            }
            listContainers(cliParser.getOptionValue(LIST_CMD));
        }
    } else if (cliParser.hasOption(KILL_CMD)) {
        if (args.length < 3 || hasAnyOtherCLIOptions(cliParser, opts, KILL_CMD)) {
            printUsage(title, opts);
            return exitCode;
        }
        return killApplication(cliParser.getOptionValues(KILL_CMD));
    } else if (cliParser.hasOption(MOVE_TO_QUEUE_CMD)) {
        if (!cliParser.hasOption(QUEUE_CMD)) {
            printUsage(title, opts);
            return exitCode;
        }
        moveApplicationAcrossQueues(cliParser.getOptionValue(MOVE_TO_QUEUE_CMD),
                cliParser.getOptionValue(QUEUE_CMD));
    } else if (cliParser.hasOption(FAIL_CMD)) {
        if (!args[0].equalsIgnoreCase(APPLICATION_ATTEMPT)) {
            printUsage(title, opts);
            return exitCode;
        }
        failApplicationAttempt(cliParser.getOptionValue(FAIL_CMD));
    } else if (cliParser.hasOption(HELP_CMD)) {
        printUsage(title, opts);
        return 0;
    } else if (cliParser.hasOption(UPDATE_PRIORITY)) {
        if (!cliParser.hasOption(APP_ID)) {
            printUsage(title, opts);
            return exitCode;
        }
        updateApplicationPriority(cliParser.getOptionValue(APP_ID), cliParser.getOptionValue(UPDATE_PRIORITY));
    } else if (cliParser.hasOption(SIGNAL_CMD)) {
        if (args.length < 3 || args.length > 4) {
            printUsage(title, opts);
            return exitCode;
        }
        final String[] signalArgs = cliParser.getOptionValues(SIGNAL_CMD);
        final String containerId = signalArgs[0];
        SignalContainerCommand command = SignalContainerCommand.OUTPUT_THREAD_DUMP;
        if (signalArgs.length == 2) {
            command = SignalContainerCommand.valueOf(signalArgs[1]);
        }
        signalToContainer(containerId, command);
    } else {
        syserr.println("Invalid Command Usage : ");
        printUsage(title, opts);
    }
    return 0;
}

From source file:org.apache.hadoop.yarn.client.cli.LogsCLI.java

@Override
public int run(String[] args) throws Exception {

    Options opts = new Options();
    opts.addOption(HELP_CMD, false, "Displays help for all commands.");
    Option appIdOpt = new Option(APPLICATION_ID_OPTION, true, "ApplicationId (required)");
    appIdOpt.setRequired(true);/*  w  ww. j a  v a 2  s .com*/
    opts.addOption(appIdOpt);
    opts.addOption(CONTAINER_ID_OPTION, true,
            "ContainerId. " + "By default, it will only print syslog if the application is runing."
                    + " Work with -logFiles to get other logs.");
    opts.addOption(NODE_ADDRESS_OPTION, true, "NodeAddress in the format " + "nodename:port");
    opts.addOption(APP_OWNER_OPTION, true, "AppOwner (assumed to be current user if not specified)");
    Option amOption = new Option(AM_CONTAINER_OPTION, true,
            "Prints the AM Container logs for this application. "
                    + "Specify comma-separated value to get logs for related AM Container. "
                    + "For example, If we specify -am 1,2, we will get the logs for "
                    + "the first AM Container as well as the second AM Container. "
                    + "To get logs for all AM Containers, use -am ALL. "
                    + "To get logs for the latest AM Container, use -am -1. "
                    + "By default, it will only print out syslog. Work with -logFiles " + "to get other logs");
    amOption.setValueSeparator(',');
    amOption.setArgs(Option.UNLIMITED_VALUES);
    amOption.setArgName("AM Containers");
    opts.addOption(amOption);
    Option logFileOpt = new Option(CONTAINER_LOG_FILES, true,
            "Work with -am/-containerId and specify comma-separated value "
                    + "to get specified container log files. Use \"ALL\" to fetch all the "
                    + "log files for the container.");
    logFileOpt.setValueSeparator(',');
    logFileOpt.setArgs(Option.UNLIMITED_VALUES);
    logFileOpt.setArgName("Log File Name");
    opts.addOption(logFileOpt);

    opts.getOption(APPLICATION_ID_OPTION).setArgName("Application ID");
    opts.getOption(CONTAINER_ID_OPTION).setArgName("Container ID");
    opts.getOption(NODE_ADDRESS_OPTION).setArgName("Node Address");
    opts.getOption(APP_OWNER_OPTION).setArgName("Application Owner");
    opts.getOption(AM_CONTAINER_OPTION).setArgName("AM Containers");

    Options printOpts = new Options();
    printOpts.addOption(opts.getOption(HELP_CMD));
    printOpts.addOption(opts.getOption(CONTAINER_ID_OPTION));
    printOpts.addOption(opts.getOption(NODE_ADDRESS_OPTION));
    printOpts.addOption(opts.getOption(APP_OWNER_OPTION));
    printOpts.addOption(opts.getOption(AM_CONTAINER_OPTION));
    printOpts.addOption(opts.getOption(CONTAINER_LOG_FILES));

    if (args.length < 1) {
        printHelpMessage(printOpts);
        return -1;
    }
    if (args[0].equals("-help")) {
        printHelpMessage(printOpts);
        return 0;
    }
    CommandLineParser parser = new GnuParser();
    String appIdStr = null;
    String containerIdStr = null;
    String nodeAddress = null;
    String appOwner = null;
    boolean getAMContainerLogs = false;
    String[] logFiles = null;
    List<String> amContainersList = new ArrayList<String>();
    try {
        CommandLine commandLine = parser.parse(opts, args, true);
        appIdStr = commandLine.getOptionValue(APPLICATION_ID_OPTION);
        containerIdStr = commandLine.getOptionValue(CONTAINER_ID_OPTION);
        nodeAddress = commandLine.getOptionValue(NODE_ADDRESS_OPTION);
        appOwner = commandLine.getOptionValue(APP_OWNER_OPTION);
        getAMContainerLogs = commandLine.hasOption(AM_CONTAINER_OPTION);
        if (getAMContainerLogs) {
            String[] amContainers = commandLine.getOptionValues(AM_CONTAINER_OPTION);
            for (String am : amContainers) {
                boolean errorInput = false;
                if (!am.trim().equalsIgnoreCase("ALL")) {
                    try {
                        int id = Integer.parseInt(am.trim());
                        if (id != -1 && id <= 0) {
                            errorInput = true;
                        }
                    } catch (NumberFormatException ex) {
                        errorInput = true;
                    }
                    if (errorInput) {
                        System.err.println("Invalid input for option -am. Valid inputs are 'ALL', -1 "
                                + "and any other integer which is larger than 0.");
                        printHelpMessage(printOpts);
                        return -1;
                    }
                    amContainersList.add(am.trim());
                } else {
                    amContainersList.add("ALL");
                    break;
                }
            }
        }
        if (commandLine.hasOption(CONTAINER_LOG_FILES)) {
            logFiles = commandLine.getOptionValues(CONTAINER_LOG_FILES);
        }
    } catch (ParseException e) {
        System.err.println("options parsing failed: " + e.getMessage());
        printHelpMessage(printOpts);
        return -1;
    }

    if (appIdStr == null) {
        System.err.println("ApplicationId cannot be null!");
        printHelpMessage(printOpts);
        return -1;
    }

    ApplicationId appId = null;
    try {
        appId = ApplicationId.fromString(appIdStr);
    } catch (Exception e) {
        System.err.println("Invalid ApplicationId specified");
        return -1;
    }

    LogCLIHelpers logCliHelper = new LogCLIHelpers();
    logCliHelper.setConf(getConf());

    if (appOwner == null || appOwner.isEmpty()) {
        appOwner = UserGroupInformation.getCurrentUser().getShortUserName();
    }

    YarnApplicationState appState = YarnApplicationState.NEW;
    try {
        appState = getApplicationState(appId);
        if (appState == YarnApplicationState.NEW || appState == YarnApplicationState.NEW_SAVING
                || appState == YarnApplicationState.SUBMITTED) {
            System.out.println("Logs are not avaiable right now.");
            return -1;
        }
    } catch (IOException | YarnException e) {
        System.err.println(
                "Unable to get ApplicationState." + " Attempting to fetch logs directly from the filesystem.");
    }

    // To get am logs
    if (getAMContainerLogs) {
        // if we do not specify the value for CONTAINER_LOG_FILES option,
        // we will only output syslog
        if (logFiles == null || logFiles.length == 0) {
            logFiles = new String[] { "syslog" };
        }
        // If the application is running, we will call the RM WebService
        // to get the AppAttempts which includes the nodeHttpAddress
        // and containerId for all the AM Containers.
        // After that, we will call NodeManager webService to get the
        // related logs
        if (appState == YarnApplicationState.ACCEPTED || appState == YarnApplicationState.RUNNING) {
            return printAMContainerLogs(getConf(), appIdStr, amContainersList, logFiles, logCliHelper, appOwner,
                    false);
        } else {
            // If the application is in the final state, we will call RM webservice
            // to get all AppAttempts information first. If we get nothing,
            // we will try to call AHS webservice to get related AppAttempts
            // which includes nodeAddress for the AM Containers.
            // After that, we will use nodeAddress and containerId
            // to get logs from HDFS directly.
            if (getConf().getBoolean(YarnConfiguration.APPLICATION_HISTORY_ENABLED,
                    YarnConfiguration.DEFAULT_APPLICATION_HISTORY_ENABLED)) {
                return printAMContainerLogs(getConf(), appIdStr, amContainersList, logFiles, logCliHelper,
                        appOwner, true);
            } else {
                System.out.println("Can not get AMContainers logs for the application:" + appId);
                System.out.println("This application:" + appId + " is finished."
                        + " Please enable the application history service. Or Using "
                        + "yarn logs -applicationId <appId> -containerId <containerId> "
                        + "--nodeAddress <nodeHttpAddress> to get the container logs");
                return -1;
            }
        }
    }

    int resultCode = 0;
    if (containerIdStr != null) {
        // if we provide the node address and the application is in the final
        // state, we could directly get logs from HDFS.
        if (nodeAddress != null && isApplicationFinished(appState)) {
            // if user specified "ALL" as the logFiles param, pass null
            // to logCliHelper so that it fetches all the logs
            List<String> logs;
            if (logFiles == null) {
                logs = null;
            } else if (fetchAllLogFiles(logFiles)) {
                logs = null;
            } else {
                logs = Arrays.asList(logFiles);
            }
            return logCliHelper.dumpAContainersLogsForALogType(appIdStr, containerIdStr, nodeAddress, appOwner,
                    logs);
        }
        try {
            // If the nodeAddress is not provided, we will try to get
            // the ContainerReport. In the containerReport, we could get
            // nodeAddress and nodeHttpAddress
            ContainerReport report = getContainerReport(containerIdStr);
            String nodeHttpAddress = report.getNodeHttpAddress()
                    .replaceFirst(WebAppUtils.getHttpSchemePrefix(getConf()), "");
            String nodeId = report.getAssignedNode().toString();
            // If the application is not in the final state,
            // we will provide the NodeHttpAddress and get the container logs
            // by calling NodeManager webservice.
            if (!isApplicationFinished(appState)) {
                if (logFiles == null || logFiles.length == 0) {
                    logFiles = new String[] { "syslog" };
                }
                printContainerLogsFromRunningApplication(getConf(), appIdStr, containerIdStr, nodeHttpAddress,
                        nodeId, logFiles, logCliHelper, appOwner);
            } else {
                String[] requestedLogFiles = logFiles;
                if (fetchAllLogFiles(logFiles)) {
                    requestedLogFiles = null;
                }
                // If the application is in the final state, we will directly
                // get the container logs from HDFS.
                printContainerLogsForFinishedApplication(appIdStr, containerIdStr, nodeId, requestedLogFiles,
                        logCliHelper, appOwner);
            }
            return resultCode;
        } catch (IOException | YarnException ex) {
            System.err.println(
                    "Unable to get logs for this container:" + containerIdStr + "for the application:" + appId);
            if (!getConf().getBoolean(YarnConfiguration.APPLICATION_HISTORY_ENABLED,
                    YarnConfiguration.DEFAULT_APPLICATION_HISTORY_ENABLED)) {
                System.out.println("Please enable the application history service. Or ");
            }
            System.out.println("Using " + "yarn logs -applicationId <appId> -containerId <containerId> "
                    + "--nodeAddress <nodeHttpAddress> to get the container logs");
            return -1;
        }
    } else {
        if (nodeAddress == null) {
            resultCode = logCliHelper.dumpAllContainersLogs(appId, appOwner, System.out);
        } else {
            System.out.println("Should at least provide ContainerId!");
            printHelpMessage(printOpts);
            resultCode = -1;
        }
    }
    return resultCode;
}

From source file:org.apache.hadoop.yarn.client.cli.NodeCLI.java

@Override
public int run(String[] args) throws Exception {

    Options opts = new Options();
    opts.addOption(HELP_CMD, false, "Displays help for all commands.");
    opts.addOption(STATUS_CMD, true, "Prints the status report of the node.");
    opts.addOption(LIST_CMD, false,//from  w  ww .  jav a2  s.c o m
            "List all running nodes. " + "Supports optional use of -states to filter nodes "
                    + "based on node state, all -all to list all nodes, "
                    + "-showDetails to display more details about each node.");
    Option nodeStateOpt = new Option(NODE_STATE_CMD, true,
            "Works with -list to filter nodes based on input comma-separated " + "list of node states. "
                    + getAllValidNodeStates());
    nodeStateOpt.setValueSeparator(',');
    nodeStateOpt.setArgs(Option.UNLIMITED_VALUES);
    nodeStateOpt.setArgName("States");
    opts.addOption(nodeStateOpt);
    Option allOpt = new Option(NODE_ALL, false, "Works with -list to list all nodes.");
    opts.addOption(allOpt);
    Option showDetailsOpt = new Option(NODE_SHOW_DETAILS, false,
            "Works with -list to show more details about each node.");
    opts.addOption(showDetailsOpt);
    opts.getOption(STATUS_CMD).setArgName("NodeId");

    if (args != null && args.length > 0) {
        for (int i = args.length - 1; i >= 0; i--) {
            if (args[i].equalsIgnoreCase("-" + NODE_ALL)) {
                args[i] = "-" + NODE_ALL;
            }
        }
    }

    int exitCode = -1;
    CommandLine cliParser = null;
    try {
        cliParser = new GnuParser().parse(opts, args);
    } catch (MissingArgumentException ex) {
        sysout.println("Missing argument for options");
        printUsage(opts);
        return exitCode;
    }

    if (cliParser.hasOption("status")) {
        if (args.length != 2) {
            printUsage(opts);
            return exitCode;
        }
        printNodeStatus(cliParser.getOptionValue("status"));
    } else if (cliParser.hasOption("list")) {
        Set<NodeState> nodeStates = new HashSet<NodeState>();
        if (cliParser.hasOption(NODE_ALL)) {
            for (NodeState state : NodeState.values()) {
                nodeStates.add(state);
            }
        } else if (cliParser.hasOption(NODE_STATE_CMD)) {
            String[] types = cliParser.getOptionValues(NODE_STATE_CMD);
            if (types != null) {
                for (String type : types) {
                    if (!type.trim().isEmpty()) {
                        try {
                            nodeStates.add(NodeState
                                    .valueOf(org.apache.hadoop.util.StringUtils.toUpperCase(type.trim())));
                        } catch (IllegalArgumentException ex) {
                            sysout.println("The node state " + type + " is invalid.");
                            sysout.println(getAllValidNodeStates());
                            return exitCode;
                        }
                    }
                }
            }
        } else {
            nodeStates.add(NodeState.RUNNING);
        }

        // List all node details with more information.
        if (cliParser.hasOption(NODE_SHOW_DETAILS)) {
            listDetailedClusterNodes(nodeStates);
        } else {
            listClusterNodes(nodeStates);
        }
    } else if (cliParser.hasOption(HELP_CMD)) {
        printUsage(opts);
        return 0;
    } else {
        syserr.println("Invalid Command Usage : ");
        printUsage(opts);
    }
    return 0;
}

From source file:org.apache.hc.core5.benchmark.CommandLineUtils.java

public static Options getOptions() {
    final Option nopt = new Option("n", true,
            "Number of requests to perform. "
                    + "The default is to just perform a single request which may lead "
                    + "to non-representative benchmarking results");
    nopt.setRequired(false);//from   w w  w.  j ava 2  s  .c  o  m
    nopt.setArgName("requests");

    final Option copt = new Option("c", true, "Number of multiple requests to make at a time. "
            + "The default is to just execute a single request");
    copt.setRequired(false);
    copt.setArgName("concurrency");

    final Option topt = new Option("t", true, "Seconds to max. to spend on benchmarking");
    topt.setRequired(false);
    topt.setArgName("time-limit");

    final Option sopt = new Option("s", true, "Seconds to max. wait for each response. Default is 60 seconds");
    sopt.setRequired(false);
    sopt.setArgName("socket-Timeout");

    final Option popt = new Option("p", true, "File containing data to enclose in the request");
    popt.setRequired(false);
    popt.setArgName("Payload file");

    final Option Topt = new Option("T", true, "Content-type header to use for enclosed request data");
    Topt.setRequired(false);
    Topt.setArgName("content-type");

    final Option vopt = new Option("v", true,
            "Set verbosity level: " + "1 prints warnings and errors, " + "2 prints response codes, "
                    + "3 prints message headers, " + "4 prints HTTP/2 frame info, "
                    + "5 prints HTTP/2 flow control events, " + "6 prints response content");
    vopt.setRequired(false);
    vopt.setArgName("verbosity");

    final Option iopt = new Option("i", false, "Use HEAD instead of GET");
    iopt.setRequired(false);

    final Option Hopt = new Option("H", true,
            "Add arbitrary header line, " + "eg. 'Accept-Encoding: gzip' inserted after all normal "
                    + "header lines. (repeatable as -H \"h1: v1\",\"h2: v2\" etc)");
    Hopt.setRequired(false);
    Hopt.setArgName("header");

    final Option kopt = new Option("k", false, "Use HTTP KeepAlive feature. Default is no KeepAlive");
    kopt.setRequired(false);

    final Option mopt = new Option("m", true,
            "HTTP Method. Default is GET or POST if the request to enclose data");
    mopt.setRequired(false);
    mopt.setArgName("HTTP method");

    // HttpCore specific options

    final Option uopt = new Option("u", false, "Chunk entity. Default is false");
    uopt.setRequired(false);

    final Option xopt = new Option("x", false, "Use Expect-Continue. Default is false");
    xopt.setRequired(false);

    final Option gopt = new Option("g", false, "Accept GZip. Default is false");
    gopt.setRequired(false);

    final Option http2opt = new Option("2", false, "Force HTTP/2");
    gopt.setRequired(false);

    final Option hopt = new Option("h", false, "Display usage information");
    nopt.setRequired(false);

    final Options options = new Options();
    options.addOption(nopt);
    options.addOption(copt);
    options.addOption(topt);
    options.addOption(sopt);
    options.addOption(popt);
    options.addOption(Topt);
    options.addOption(vopt);
    options.addOption(iopt);
    options.addOption(Hopt);
    options.addOption(kopt);
    options.addOption(mopt);

    // HttpCore specific options

    options.addOption(uopt);
    options.addOption(xopt);
    options.addOption(gopt);
    options.addOption(http2opt);

    options.addOption(hopt);
    return options;
}

From source file:org.apache.hc.core5.http.benchmark.CommandLineUtils.java

public static Options getOptions() {
    final Option iopt = new Option("i", false, "Do HEAD requests instead of GET (deprecated)");
    iopt.setRequired(false);//from   w ww  .j av a 2s  . c o m

    final Option oopt = new Option("o", false, "Use HTTP/S 1.0 instead of 1.1 (default)");
    oopt.setRequired(false);

    final Option kopt = new Option("k", false, "Enable the HTTP KeepAlive feature, "
            + "i.e., perform multiple requests within one HTTP session. " + "Default is no KeepAlive");
    kopt.setRequired(false);

    final Option uopt = new Option("u", false, "Chunk entity. Default is false");
    uopt.setRequired(false);

    final Option xopt = new Option("x", false, "Use Expect-Continue. Default is false");
    xopt.setRequired(false);

    final Option gopt = new Option("g", false, "Accept GZip. Default is false");
    gopt.setRequired(false);

    final Option nopt = new Option("n", true,
            "Number of requests to perform for the "
                    + "benchmarking session. The default is to just perform a single "
                    + "request which usually leads to non-representative benchmarking " + "results");
    nopt.setRequired(false);
    nopt.setArgName("requests");

    final Option copt = new Option("c", true, "Concurrency while performing the "
            + "benchmarking session. The default is to just use a single thread/client");
    copt.setRequired(false);
    copt.setArgName("concurrency");

    final Option popt = new Option("p", true, "File containing data to POST or PUT");
    popt.setRequired(false);
    popt.setArgName("Payload file");

    final Option mopt = new Option("m", true, "HTTP Method. Default is POST. "
            + "Possible options are GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE");
    mopt.setRequired(false);
    mopt.setArgName("HTTP method");

    final Option Topt = new Option("T", true, "Content-type header to use for POST/PUT data");
    Topt.setRequired(false);
    Topt.setArgName("content-type");

    final Option topt = new Option("t", true, "Client side socket timeout (in ms) - default 60 Secs");
    topt.setRequired(false);
    topt.setArgName("socket-Timeout");

    final Option tlopt = new Option("l", true, "Time limit for the test to run (default is infinity)");
    tlopt.setRequired(false);
    tlopt.setArgName("time-limit");

    final Option Hopt = new Option("H", true,
            "Add arbitrary header line, " + "eg. 'Accept-Encoding: gzip' inserted after all normal "
                    + "header lines. (repeatable as -H \"h1: v1\",\"h2: v2\" etc)");
    Hopt.setRequired(false);
    Hopt.setArgName("header");

    final Option vopt = new Option("v", true,
            "Set verbosity level - 4 and above " + "prints response content, 3 and above prints "
                    + "information on headers, 2 and above prints response codes (404, 200, "
                    + "etc.), 1 and above prints warnings and info");
    vopt.setRequired(false);
    vopt.setArgName("verbosity");

    final Option hopt = new Option("h", false, "Display usage information");
    nopt.setRequired(false);

    final Options options = new Options();
    options.addOption(iopt);
    options.addOption(mopt);
    options.addOption(uopt);
    options.addOption(xopt);
    options.addOption(gopt);
    options.addOption(kopt);
    options.addOption(nopt);
    options.addOption(copt);
    options.addOption(popt);
    options.addOption(Topt);
    options.addOption(vopt);
    options.addOption(Hopt);
    options.addOption(hopt);
    options.addOption(topt);
    options.addOption(oopt);
    options.addOption(tlopt);
    return options;
}

From source file:org.apache.helix.controller.HelixControllerMain.java

@SuppressWarnings("static-access")
synchronized private static Options constructCommandLineOptions() {
    Option helpOption = OptionBuilder.withLongOpt(help).withDescription("Prints command-line options info")
            .create();// w  w w  .  j  a v a 2 s  .  c o  m

    Option zkServerOption = OptionBuilder.withLongOpt(zkServerAddress)
            .withDescription("Provide zookeeper address").create();
    zkServerOption.setArgs(1);
    zkServerOption.setRequired(true);
    zkServerOption.setArgName("ZookeeperServerAddress(Required)");

    Option clusterOption = OptionBuilder.withLongOpt(cluster).withDescription("Provide cluster name").create();
    clusterOption.setArgs(1);
    clusterOption.setRequired(true);
    clusterOption.setArgName("Cluster name (Required)");

    Option modeOption = OptionBuilder.withLongOpt(mode)
            .withDescription("Provide cluster controller mode (Optional): STANDALONE (default) or DISTRIBUTED")
            .create();
    modeOption.setArgs(1);
    modeOption.setRequired(false);
    modeOption.setArgName("Cluster controller mode (Optional)");

    Option controllerNameOption = OptionBuilder.withLongOpt(name)
            .withDescription("Provide cluster controller name (Optional)").create();
    controllerNameOption.setArgs(1);
    controllerNameOption.setRequired(false);
    controllerNameOption.setArgName("Cluster controller name (Optional)");

    Options options = new Options();
    options.addOption(helpOption);
    options.addOption(zkServerOption);
    options.addOption(clusterOption);
    options.addOption(modeOption);
    options.addOption(controllerNameOption);

    return options;
}

From source file:org.apache.helix.mock.participant.DummyProcess.java

@SuppressWarnings("static-access")
synchronized private static Options constructCommandLineOptions() {
    Option helpOption = OptionBuilder.withLongOpt(help).withDescription("Prints command-line options info")
            .create();/*from ww w.j  ava 2  s  .  c o  m*/

    Option clusterOption = OptionBuilder.withLongOpt(cluster).withDescription("Provide cluster name").create();
    clusterOption.setArgs(1);
    clusterOption.setRequired(true);
    clusterOption.setArgName("Cluster name (Required)");

    Option hostOption = OptionBuilder.withLongOpt(hostAddress).withDescription("Provide host name").create();
    hostOption.setArgs(1);
    hostOption.setRequired(true);
    hostOption.setArgName("Host name (Required)");

    Option portOption = OptionBuilder.withLongOpt(hostPort).withDescription("Provide host port").create();
    portOption.setArgs(1);
    portOption.setRequired(true);
    portOption.setArgName("Host port (Required)");

    Option cmTypeOption = OptionBuilder.withLongOpt(helixManagerType)
            .withDescription("Provide cluster manager type (e.g. 'zk', 'static-file', or 'dynamic-file'")
            .create();
    cmTypeOption.setArgs(1);
    cmTypeOption.setRequired(true);
    cmTypeOption.setArgName("Clsuter manager type (e.g. 'zk', 'static-file', or 'dynamic-file') (Required)");

    Option zkServerOption = OptionBuilder.withLongOpt(zkServer).withDescription("Provide zookeeper address")
            .create();
    zkServerOption.setArgs(1);
    zkServerOption.setRequired(true);
    zkServerOption.setArgName("ZookeeperServerAddress(Required for zk-based cluster manager)");

    // Option rootNsOption = OptionBuilder.withLongOpt(rootNamespace)
    // .withDescription("Provide root namespace for dynamic-file based cluster manager").create();
    // rootNsOption.setArgs(1);
    // rootNsOption.setRequired(true);
    // rootNsOption.setArgName("Root namespace (Required for dynamic-file based cluster manager)");

    Option transDelayOption = OptionBuilder.withLongOpt(transDelay).withDescription("Provide state trans delay")
            .create();
    transDelayOption.setArgs(1);
    transDelayOption.setRequired(false);
    transDelayOption.setArgName("Delay time in state transition, in MS");

    OptionGroup optionGroup = new OptionGroup();
    optionGroup.addOption(zkServerOption);

    Options options = new Options();
    options.addOption(helpOption);
    options.addOption(clusterOption);
    options.addOption(hostOption);
    options.addOption(portOption);
    options.addOption(transDelayOption);
    options.addOption(cmTypeOption);

    options.addOptionGroup(optionGroup);

    return options;
}

From source file:org.apache.helix.provisioning.tools.ContainerAdmin.java

@SuppressWarnings("static-access")
public static void main(String[] args) throws Exception {
    Option zkServerOption = OptionBuilder.withLongOpt("zookeeperAddress")
            .withDescription("Provide zookeeper address").create();
    zkServerOption.setArgs(1);//from   w  ww. java 2s .  c om
    zkServerOption.setRequired(true);
    zkServerOption.setArgName("zookeeperAddress(Required)");

    OptionGroup group = new OptionGroup();
    group.setRequired(true);

    // update container count per service
    Option stopContainerOption = OptionBuilder.withLongOpt(stopContainer)
            .withDescription("appName participantName").create();
    stopContainerOption.setArgs(2);
    stopContainerOption.setRequired(false);
    stopContainerOption.setArgName("appName participantName");

    group.addOption(stopContainerOption);

    Options options = new Options();
    options.addOption(zkServerOption);
    options.addOptionGroup(group);
    CommandLine cliParser = new GnuParser().parse(options, args);

    String zkAddress = cliParser.getOptionValue("zookeeperAddress");
    ContainerAdmin admin = new ContainerAdmin(zkAddress);

    if (cliParser.hasOption(stopContainer)) {
        String appName = cliParser.getOptionValues(stopContainer)[0];
        String participantName = cliParser.getOptionValues(stopContainer)[1];
        admin.stopContainer(appName, participantName);
    }
}

From source file:org.apache.helix.provisioning.tools.UpdateProvisionerConfig.java

@SuppressWarnings("static-access")
public static void main(String[] args) throws ParseException {
    Option zkServerOption = OptionBuilder.withLongOpt("zookeeperAddress")
            .withDescription("Provide zookeeper address").create();
    zkServerOption.setArgs(1);//from w  ww  .  ja v a2  s .  c o m
    zkServerOption.setRequired(true);
    zkServerOption.setArgName("zookeeperAddress(Required)");

    OptionGroup group = new OptionGroup();
    group.setRequired(true);

    // update container count per service
    Option updateContainerCountOption = OptionBuilder.withLongOpt(updateContainerCount)
            .withDescription("appName serviceName numContainers").create();
    updateContainerCountOption.setArgs(3);
    updateContainerCountOption.setRequired(false);
    updateContainerCountOption.setArgName("appName serviceName numContainers");

    group.addOption(updateContainerCountOption);

    Options options = new Options();
    options.addOption(zkServerOption);
    options.addOptionGroup(group);
    CommandLine cliParser = new GnuParser().parse(options, args);

    String zkAddress = cliParser.getOptionValue("zookeeperAddress");
    UpdateProvisionerConfig updater = new UpdateProvisionerConfig(zkAddress);

    if (cliParser.hasOption(updateContainerCount)) {
        String appName = cliParser.getOptionValues(updateContainerCount)[0];
        String serviceName = cliParser.getOptionValues(updateContainerCount)[1];
        int numContainers = Integer.parseInt(cliParser.getOptionValues(updateContainerCount)[2]);
        updater.setNumContainers(appName, serviceName, numContainers);
    }

}