RESTful cartridge deployment implementations for CLI tool
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/9efacf86 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/9efacf86 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/9efacf86 Branch: refs/heads/master Commit: 9efacf864bedf38d107f2a03b383fde3555d890d Parents: ff4d3ef Author: Manula Thantriwatte <[email protected]> Authored: Mon Dec 9 17:45:17 2013 +0530 Committer: Manula Thantriwatte <[email protected]> Committed: Mon Dec 9 17:45:17 2013 +0530 ---------------------------------------------------------------------- .../java/org/apache/stratos/cli/RestClient.java | 1 + .../stratos/cli/RestCommandLineService.java | 11 +- .../apache/stratos/cli/StratosApplication.java | 3 + .../commands/CartridgeDeploymentCommand.java | 146 +++++++++++++++++++ .../apache/stratos/cli/utils/CliConstants.java | 9 ++ 5 files changed, 169 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9efacf86/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java index bb91d09..eefb891 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java @@ -62,6 +62,7 @@ public class RestClient implements GenericRestClient{ if (response.getStatusLine().getStatusCode() == 204) { return ""; } + if (response.getStatusLine().getStatusCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9efacf86/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java index 608338c..5eb4b15 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java @@ -30,7 +30,6 @@ import org.apache.stratos.cli.exception.CommandException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -50,6 +49,7 @@ public class RestCommandLineService { private final String subscribCartridgeRestEndpoint = "/stratos/admin/cartridge/subscribe"; private final String addTenantEndPoint = "/stratos/admin/tenant"; private final String unsubscribeTenantEndPoint = "/stratos/admin/cartridge/unsubscribe"; + private final String cartridgeDeploymentEndPoint = "/stratos/admin/cartridge/definition"; private static class SingletonHolder { private final static RestCommandLineService INSTANCE = new RestCommandLineService(); @@ -405,6 +405,15 @@ public class RestCommandLineService { } } + public void deployCartridgeDefinition (String cartridgeDefinition) { + try { + restClientService.doPost(restClientService.getUrl() + cartridgeDeploymentEndPoint, cartridgeDefinition, restClientService.getUsername(), restClientService.getPassword()); + System.out.println("You have successfully deployed the cartridge"); + } catch (Exception e) { + e.printStackTrace(); + } + } + private class CartridgeList { private ArrayList<Cartridge> cartridge; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9efacf86/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java index 2d7cf30..5542fe3 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java @@ -107,6 +107,9 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon command = new AddTenantCommand(); commands.put(command.getName(), command); + + command = new CartridgeDeploymentCommand(); + commands.put(command.getName(), command); command = new ListCommand(); commands.put(command.getName(), command); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9efacf86/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/CartridgeDeploymentCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/CartridgeDeploymentCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/CartridgeDeploymentCommand.java new file mode 100644 index 0000000..2f8c454 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/CartridgeDeploymentCommand.java @@ -0,0 +1,146 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.stratos.cli.commands; + +import org.apache.commons.cli.*; +import org.apache.stratos.cli.Command; +import org.apache.stratos.cli.RestCommandLineService; +import org.apache.stratos.cli.StratosCommandContext; +import org.apache.stratos.cli.exception.CommandException; +import org.apache.stratos.cli.utils.CliConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class CartridgeDeploymentCommand implements Command<StratosCommandContext> { + + private static final Logger logger = LoggerFactory.getLogger(CartridgeDeploymentCommand.class); + + private final Options options; + + public CartridgeDeploymentCommand(){ + options = constructOptions(); + } + + private Options constructOptions() { + final Options options = new Options(); + + Option resourcePath = new Option(CliConstants.RESOURCE_PATH, CliConstants.RESOURCE_PATH, true, + "Cartridge deployment resource path"); + resourcePath.setArgName("resource path"); + options.addOption(resourcePath); + + return options; + } + + @Override + public String getName() { + return CliConstants.CARTRIDGE_DEPLOYMENT; + } + + @Override + public String getDescription() { + return "Add new cartridge deployment"; + } + + @Override + public String getArgumentSyntax() { + return null; + } + + @Override + public int execute(StratosCommandContext context, String[] args) throws CommandException { + if (logger.isDebugEnabled()) { + logger.debug("Executing {} command...", getName()); + } + + if (args != null || args.length > 0) { + String resourcePath = null; + String cartridgeDeploymentJSON = null; + + final CommandLineParser parser = new GnuParser(); + CommandLine commandLine; + + try { + commandLine = parser.parse(options, args); + + if (logger.isDebugEnabled()) { + logger.debug("Cartridge deployment"); + } + + if (commandLine.hasOption(CliConstants.RESOURCE_PATH)) { + if (logger.isTraceEnabled()) { + logger.trace("Resource path option is passed"); + } + resourcePath = commandLine.getOptionValue(CliConstants.RESOURCE_PATH); + cartridgeDeploymentJSON = readResource(resourcePath); + } + + if (resourcePath == null) { + System.out.println("usage: " + getName() + " [-p <resource path>]"); + return CliConstants.BAD_ARGS_CODE; + } + + RestCommandLineService.getInstance().deployCartridgeDefinition(cartridgeDeploymentJSON); + return CliConstants.SUCCESSFUL_CODE; + + } catch (ParseException e) { + if (logger.isErrorEnabled()) { + logger.error("Error parsing arguments", e); + } + System.out.println(e.getMessage()); + return CliConstants.BAD_ARGS_CODE; + } catch (IOException e) { + e.printStackTrace(); + return CliConstants.BAD_ARGS_CODE; + } + + + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } + + private String readResource(String fileName) throws IOException { + BufferedReader br = new BufferedReader(new FileReader(fileName)); + try { + StringBuilder sb = new StringBuilder(); + String line = br.readLine(); + + while (line != null) { + sb.append(line); + sb.append("\n"); + line = br.readLine(); + } + return sb.toString(); + } finally { + br.close(); + } + } + + @Override + public Options getOptions() { + return options; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9efacf86/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java index 3176c63..2216f4c 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java @@ -69,6 +69,11 @@ public class CliConstants { */ public static final String ADD_TENANT = "add-tenant"; + /** + * Cartridge deployment + */ + public static final String CARTRIDGE_DEPLOYMENT = "cartridge-deployment"; + /** * Give information of a cartridge. */ @@ -147,4 +152,8 @@ public class CliConstants { public static final String ACTIVE_OPTION = "a"; public static final String ACTIVE_LONG_OPTION = "active"; + + // Cartridge deployment options + public static final String RESOURCE_PATH = "p"; + public static final String RESOURCE_PATH_LONG_OPTION = "resource-path"; }
