You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ma...@apache.org on 2013/12/11 09:31:59 UTC

[07/21] git commit: RESTful cartridge deployment implementations for CLI tool

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 <ma...@apache.org>
Authored: Mon Dec 9 17:45:17 2013 +0530
Committer: Manula Thantriwatte <ma...@apache.org>
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";
 }