@Override protected void doHandle(CommandContext ctx) { ModelControllerClient client = ctx.getModelControllerClient(); if (!ctx.hasArguments()) { printList(ctx, Util.getDeployments(client)); return; } String filePath = null; String name = null; String runtimeName = null; for (String arg : ctx.getArguments()) { if (filePath == null) { filePath = arg; } else if (name == null) { name = arg; } else { runtimeName = arg; } } if (filePath == null) { printList(ctx, Util.getDeployments(client)); return; } File f = new File(filePath); if (!f.exists()) { ctx.printLine("The path doesn't exist: " + f.getAbsolutePath()); return; } if (name == null) { name = f.getName(); } if (Util.isDeployed(name, client)) { if (ctx.hasSwitch("f")) { DefaultOperationRequestBuilder builder = new DefaultOperationRequestBuilder(); ModelNode result; // replace builder = new DefaultOperationRequestBuilder(); builder.setOperationName("full-replace-deployment"); builder.addProperty("name", name); if (runtimeName != null) { builder.addProperty("runtime-name", runtimeName); } FileInputStream is = null; try { is = new FileInputStream(f); ModelNode request = builder.buildRequest(); OperationBuilder op = OperationBuilder.Factory.create(request); op.addInputStream(is); request.get("input-stream-index").set(0); result = client.execute(op.build()); } catch (Exception e) { ctx.printLine("Failed to replace the deployment: " + e.getLocalizedMessage()); return; } finally { StreamUtils.safeClose(is); } if (!Util.isSuccess(result)) { ctx.printLine(Util.getFailureDescription(result)); return; } ctx.printLine("'" + name + "' re-deployed successfully."); } else { ctx.printLine("'" + name + "' is already deployed (use -f to force re-deploy)."); } return; } else { DefaultOperationRequestBuilder builder; ModelNode result; // add builder = new DefaultOperationRequestBuilder(); builder.setOperationName("add"); builder.addNode("deployment", name); if (runtimeName != null) { builder.addProperty("runtime-name", runtimeName); } FileInputStream is = null; try { is = new FileInputStream(f); ModelNode request = builder.buildRequest(); OperationBuilder op = OperationBuilder.Factory.create(request); op.addInputStream(is); request.get("input-stream-index").set(0); result = client.execute(op.build()); } catch (Exception e) { ctx.printLine( "Failed to add the deployment content to the repository: " + e.getLocalizedMessage()); return; } finally { StreamUtils.safeClose(is); } if (!Util.isSuccess(result)) { ctx.printLine(Util.getFailureDescription(result)); return; } // deploy builder = new DefaultOperationRequestBuilder(); builder.setOperationName("deploy"); builder.addNode("deployment", name); try { ModelNode request = builder.buildRequest(); result = client.execute(request); } catch (Exception e) { ctx.printLine("Failed to deploy: " + e.getLocalizedMessage()); return; } if (!Util.isSuccess(result)) { ctx.printLine(Util.getFailureDescription(result)); return; } ctx.printLine("'" + name + "' deployed successfully."); } }
public ModelNode buildRequest(CommandContext ctx) throws OperationFormatException { if (!ctx.hasArguments()) { throw new OperationFormatException("Required arguments are missing."); } String filePath = null; String name = null; String runtimeName = null; for (String arg : ctx.getArguments()) { if (filePath == null) { filePath = arg; } else if (name == null) { name = arg; } else { runtimeName = arg; } } if (filePath == null) { throw new OperationFormatException("File path is missing."); } File f = new File(filePath); if (!f.exists()) { throw new OperationFormatException(f.getAbsolutePath() + " doesn't exist."); } if (name == null) { name = f.getName(); } if (Util.isDeployed(name, ctx.getModelControllerClient())) { if (ctx.hasSwitch("f")) { DefaultOperationRequestBuilder builder = new DefaultOperationRequestBuilder(); // replace builder = new DefaultOperationRequestBuilder(); builder.setOperationName("full-replace-deployment"); builder.addProperty("name", name); if (runtimeName != null) { builder.addProperty("runtime-name", runtimeName); } byte[] bytes = readBytes(f); builder.getModelNode().get("bytes").set(bytes); return builder.buildRequest(); } else { throw new OperationFormatException( "'" + name + "' is already deployed (use -f to force re-deploy)."); } } ModelNode composite = new ModelNode(); composite.get("operation").set("composite"); composite.get("address").setEmptyList(); ModelNode steps = composite.get("steps"); DefaultOperationRequestBuilder builder; // add builder = new DefaultOperationRequestBuilder(); builder.setOperationName("add"); builder.addNode("deployment", name); if (runtimeName != null) { builder.addProperty("runtime-name", runtimeName); } byte[] bytes = readBytes(f); builder.getModelNode().get("bytes").set(bytes); steps.add(builder.buildRequest()); // deploy builder = new DefaultOperationRequestBuilder(); builder.setOperationName("deploy"); builder.addNode("deployment", name); steps.add(builder.buildRequest()); return composite; }