@Override @SuppressWarnings("deprecation") public void perform(Arguments arguments, PrintStream output) throws Exception { String[] programIdParts = arguments.get(elementType.getArgumentName().toString()).split("\\."); String appId = programIdParts[0]; int instances; switch (elementType) { case FLOWLET: if (programIdParts.length < 3) { throw new CommandInputError(this); } String flowId = programIdParts[1]; String flowletId = programIdParts[2]; instances = programClient.getFlowletInstances(appId, flowId, flowletId); break; case WORKER: if (programIdParts.length < 2) { throw new CommandInputError(this); } String workerId = programIdParts[1]; instances = programClient.getWorkerInstances(appId, workerId); break; case SERVICE: if (programIdParts.length < 2) { throw new CommandInputError(this); } String service = programIdParts[1]; instances = programClient.getServiceInstances(appId, service); break; default: // TODO: remove this throw new IllegalArgumentException( "Unrecognized program element type for scaling: " + elementType); } output.println(instances); }
@Override public String getPattern() { return String.format( "get %s instances <%s>", elementType.getName(), elementType.getArgumentName()); }