package com.pinterest.doctorkafka.tools; import com.pinterest.doctorkafka.util.BrokerReplacer; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; public class BrokerReplacement { private static final String BROKER = "broker"; private static final String COMMAND = "command"; private static final Options options = new Options(); /** * Usage: BrokerReplacement -broker broker1 -command "relaunch host script" */ private static CommandLine parseCommandLine(String[] args) { Option broker = new Option(BROKER, true, "broker name"); Option command = new Option(COMMAND, true, "command for relaunching a host"); options.addOption(broker).addOption(command); if (args.length < 3) { printUsageAndExit(); } CommandLineParser parser = new DefaultParser(); CommandLine cmd = null; try { cmd = parser.parse(options, args); } catch (ParseException | NumberFormatException e) { printUsageAndExit(); } return cmd; } private static void printUsageAndExit() { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("BrokerReplacement", options); System.exit(1); } public static void main(String[] args) throws Exception { CommandLine commandLine = parseCommandLine(args); String broker = commandLine.getOptionValue(BROKER); String command = commandLine.getOptionValue(COMMAND); BrokerReplacer brokerReplacer = new BrokerReplacer(command); brokerReplacer.replaceBroker(broker); System.out.print("Broker replacement for " + broker + " in progress "); while (brokerReplacer.busy()) { System.out.print("."); Thread.sleep(10000); } System.out.println("Finished broker replacement for " + broker); } }