String line;
while ((line = consoleReader.readLine()) != null) {
String[] args = line.split("\\s+");
String command = args[0].toUpperCase();
try {
CLICommands cmd = null;
try {
cmd = CLICommands.valueOf(command);
} catch (IllegalArgumentException e) {
out.println("Available Commands : ");
out.println(StringUtils.join(commandList, ", "));
continue;
}
if (args.length < cmd.getArgCount()) {
throw new InvalidCLIArgumentException(cmd.printHelp());
}
if (cmd.equals(CLICommands.START)) {
Map<String, String> runtimeArgs = Maps.newHashMap();
if (args.length > cmd.getArgCount()) {
try {
runtimeArgs = DeployClient.fromPosixArray(Arrays.copyOfRange(args, cmd.getArgCount(), args.length));
} catch (IllegalArgumentException e) {
LOG.error("Runtime Args are not in the correct format [ --key1=val1 --key2=val2 ]");
continue;
}
}
flowOperations.startFlow(new File(args[1]), args[2], runtimeArgs);
} else if (cmd.equals(CLICommands.LIST)) {
out.println(StringUtils.join(flowOperations.listAllFlows(), ", "));
} else if (cmd.equals(CLICommands.STOP)) {
flowOperations.stopFlow(args[1]);
} else if (cmd.equals(CLICommands.DELETE)) {
flowOperations.deleteFlow(args[1]);
} else if (cmd.equals(CLICommands.SET)) {
flowOperations.setInstances(args[1], args[2], Integer.valueOf(args[3]));
} else if (cmd.equals(CLICommands.STATUS)) {
Service.State state = flowOperations.getStatus(args[1]);
String status = (state != null) ? state.toString() : "NOT FOUND";
out.println(status);
} else if (cmd.equals(CLICommands.FLOWLETINFO)) {
out.println(String.format("%-20s %s", "Flowlet Name", "Instance Count"));
Map<String, Integer> flowletInfoMap = flowOperations.getFlowInfo(args[1]);
for (Map.Entry<String, Integer> flowletInfo : flowletInfoMap.entrySet()) {
out.println(String.format("%-20s %s", flowletInfo.getKey(), flowletInfo.getValue()));
}
} else if (cmd.equals(CLICommands.DISCOVER)) {
for (InetSocketAddress socketAddress : flowOperations.discover(args[1], args[2])) {
out.println(String.format("%s:%s", socketAddress.getHostName(), socketAddress.getPort()));
}
} else if (cmd.equals(CLICommands.SERVICEINFO)) {
out.println(StringUtils.join(flowOperations.getServices(args[1]), "\n"));
} else if (cmd.equals(CLICommands.VERSION)) {
out.println(Constants.VERSION);
} else if (cmd.equals(CLICommands.HELP)) {
try {
out.println(CLICommands.valueOf(args[1].toUpperCase()).printHelp());
} catch (IllegalArgumentException e) {
out.println("Command Not Found");
}