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:32:05 UTC

[13/21] git commit: CLI login with RESTful service

CLI login with RESTful service


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/ba96ca1a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/ba96ca1a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/ba96ca1a

Branch: refs/heads/master
Commit: ba96ca1ab70791cbb4cf891c6e36190684117f1c
Parents: ba902ae
Author: Manula Thantriwatte <ma...@apache.org>
Authored: Wed Dec 11 09:54:15 2013 +0530
Committer: Manula Thantriwatte <ma...@apache.org>
Committed: Wed Dec 11 09:54:15 2013 +0530

----------------------------------------------------------------------
 .../apache/stratos/cli/CommandLineService.java  |  3 +-
 .../apache/stratos/cli/GenericRestClient.java   |  4 +-
 .../java/org/apache/stratos/cli/RestClient.java | 24 +++--
 .../stratos/cli/RestCommandLineService.java     | 92 ++++++++++++++------
 .../apache/stratos/cli/SubscriptionInfo.java    | 30 +++----
 .../apache/stratos/cli/utils/CliConstants.java  |  4 +
 6 files changed, 103 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba96ca1a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/CommandLineService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/CommandLineService.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/CommandLineService.java
index 286190a..08feed0 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/CommandLineService.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/CommandLineService.java
@@ -447,8 +447,7 @@ public class CommandLineService {
 			SubscriptionInfo subcriptionInfo = stub.subscribe(cartridgeType, alias, policy, externalRepoURL,
 					privateRepo, username, password, dataCartridgeType, dataCartridgeAlias);
 
-			System.out
-					.format("You have successfully subscribed to %s cartridge with alias %s.%n", cartridgeType, alias);
+			System.out.format("You have successfully subscribed to %s cartridge with alias %s.%n", cartridgeType, alias);
 
 			String repoURL = null;
 			String hostnames = null;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba96ca1a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/GenericRestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/GenericRestClient.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/GenericRestClient.java
index 0a19c65..1a9b53a 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/GenericRestClient.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/GenericRestClient.java
@@ -18,9 +18,11 @@
  */
 package org.apache.stratos.cli;
 
+import java.rmi.RemoteException;
+
 public interface GenericRestClient {
 
-    public String doPost(String resourcePath, String jsonParamString, String userName, String passWord);
+    public String doPost(String resourcePath, String jsonParamString, String userName, String passWord) throws Exception;
     public String doGet(String resourcePath, String userName, String passWord);
     public void doDelete();
     public void doPut();

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba96ca1a/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 eefb891..c4d1b9a 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
@@ -25,7 +25,7 @@ import org.apache.http.HttpResponse;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.DefaultHttpClient;
-import java.net.MalformedURLException;
+import org.apache.stratos.cli.utils.CliConstants;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 
@@ -41,7 +41,7 @@ public class RestClient implements GenericRestClient{
         this.setPassword(password);
     }
 
-    public String doPost(String resourcePath, String jsonParamString, String userName, String passWord) {
+    public String doPost(String resourcePath, String jsonParamString, String userName, String passWord) throws Exception{
         try {
 
             DefaultHttpClient httpClient = new DefaultHttpClient();
@@ -59,11 +59,16 @@ public class RestClient implements GenericRestClient{
             httpClient = (DefaultHttpClient) WebClientWrapper.wrapClient(httpClient);
             HttpResponse response = httpClient.execute(postRequest);
 
-            if (response.getStatusLine().getStatusCode() == 204) {
-                return "";
-            }
+            System.out.println("Response : " + response.getStatusLine().getStatusCode());
+            int responseCode = response.getStatusLine().getStatusCode();
 
-            if (response.getStatusLine().getStatusCode() != 200) {
+            if (responseCode == CliConstants.RESPONSE_AUTHORIZATION_FAIL) {
+                return "" + CliConstants.RESPONSE_AUTHORIZATION_FAIL;
+            } else if (responseCode == CliConstants.RESPONSE_NO_CONTENT) {
+                return "" + CliConstants.RESPONSE_NO_CONTENT;
+            } else if (responseCode == CliConstants.RESPONSE_INTERNAL_SERVER_ERROR) {
+                return "" + CliConstants.RESPONSE_INTERNAL_SERVER_ERROR;
+            } else if (response.getStatusLine().getStatusCode() != 200) {
                 throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
             }
 
@@ -78,9 +83,8 @@ public class RestClient implements GenericRestClient{
             httpClient.getConnectionManager().shutdown();
             return result;
 
-        } catch (MalformedURLException e) {
-            e.printStackTrace();
-            return null;
+        } catch (ClientProtocolException e) {
+            throw new ClientProtocolException();
         } catch (IOException e) {
             e.printStackTrace();
             return null;
@@ -100,6 +104,8 @@ public class RestClient implements GenericRestClient{
             httpClient = (DefaultHttpClient) WebClientWrapper.wrapClient(httpClient);
             HttpResponse response = httpClient.execute(getRequest);
 
+            System.out.println("Response : " + response.getStatusLine().getStatusCode());
+
             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/ba96ca1a/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 81c0c4e..ac0fc3d 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
@@ -26,10 +26,11 @@ import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.transport.http.HttpTransportProperties;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.http.client.ClientProtocolException;
 import org.apache.stratos.cli.exception.CommandException;
+import org.apache.stratos.cli.utils.CliConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -44,6 +45,7 @@ public class RestCommandLineService {
 
     private RestClient restClientService;
 
+    private final String initializeEndpoint = "/stratos/admin/init";
     private final String listAvailableCartridgesRestEndpoint = "/stratos/admin/cartridge/list";
     private final String listSubscribedCartridgesRestEndpoint = "/stratos/admin/cartridge/list/subscribed";
     private final String subscribCartridgeRestEndpoint = "/stratos/admin/cartridge/subscribe";
@@ -59,7 +61,7 @@ public class RestCommandLineService {
 		return SingletonHolder.INSTANCE;
 	}
 
-    public boolean login(String serverURL, String username, String password, boolean validateLogin) throws CommandException {
+    public boolean login(String serverURL, String username, String password, boolean validateLogin) throws Exception {
         try {
             // Following code will avoid validating certificate
             SSLContext sc;
@@ -91,7 +93,7 @@ public class RestCommandLineService {
             throw new RuntimeException("Error while authentication process!", e);
         }
 
-        // Initialize Service Stub
+        // Initialized client
         try {
             initializeRestClient(serverURL, username, password);
         } catch (AxisFault e) {
@@ -99,24 +101,22 @@ public class RestCommandLineService {
             throw new CommandException(e);
         }
 
-        return true;
-        /*
         try {
             if (validateLogin) {
-                String tenantDomain = stub.getTenantDomain();
+                restClientService.doPost(restClientService.getUrl() + initializeEndpoint, "", restClientService.getUsername(), restClientService.getPassword());
                 if (logger.isDebugEnabled()) {
-                    logger.debug("Tenant Domain {}", tenantDomain);
+                    logger.debug("Tenant Domain {}", restClientService.getUsername());
                 }
-                return (tenantDomain != null);
+                System.out.println("Loggin successfull");
+                return true;
             } else {
                 // Just return true as we don't need to validate
                 return true;
             }
-        } catch (RemoteException e) {
+        } catch (ClientProtocolException e) {
             System.out.println("Authentication failed!");
-            throw new CommandException(e);
+            return false;
         }
-        */
     }
 
     private void initializeRestClient(String serverURL, String username, String password) throws AxisFault {
@@ -295,13 +295,13 @@ public class RestCommandLineService {
             throws CommandException {
 
         CartridgeInfoBean cartridgeInfoBean = new CartridgeInfoBean();
-        cartridgeInfoBean.setCartridgeType(cartridgeType);
-        cartridgeInfoBean.setAlias(alias);
-        cartridgeInfoBean.setPolicy(policy);
-        cartridgeInfoBean.setRepoURL(externalRepoURL);
-        cartridgeInfoBean.setPrivateRepo(privateRepo);
-        cartridgeInfoBean.setRepoUsername(username);
-        cartridgeInfoBean.setRepoPassword(password);
+        cartridgeInfoBean.setCartridgeType(null);
+        cartridgeInfoBean.setAlias(null);
+        cartridgeInfoBean.setPolicy(null);
+        cartridgeInfoBean.setRepoURL(null);
+        cartridgeInfoBean.setPrivateRepo(false);
+        cartridgeInfoBean.setRepoUsername(null);
+        cartridgeInfoBean.setRepoPassword(null);
         cartridgeInfoBean.setDataCartridgeType(dataCartridgeType);
         cartridgeInfoBean.setDataCartridgeAlias(dataCartridgeAlias);
 
@@ -319,7 +319,15 @@ public class RestCommandLineService {
                 System.out.println("First try");
                 String subscription = restClientService.doPost(restClientService.getUrl() + subscribCartridgeRestEndpoint,
                         completeJsonSubscribeString, restClientService.getUsername(), restClientService.getPassword());
-                subcriptionConnectInfo = gson.fromJson(subscription, SubscriptionInfo.class);
+
+                if (subscription.equals("" + CliConstants.RESPONSE_NO_CONTENT)) {
+                    System.out.println("Duplicate alias. Please choose different alias");
+                    return;
+                }
+
+                String subscriptionJSON =  subscription.substring(20, subscription.length() -1);
+                subcriptionConnectInfo = gson.fromJson(subscriptionJSON, SubscriptionInfo.class);
+
                 System.out.format("You have successfully subscribed to %s cartridge with alias %s.%n",
                         dataCartridgeType, dataCartridgeAlias);
                 System.out.format("%nSubscribing to %s cartridge and connecting with %s data cartridge.%n", alias,
@@ -330,9 +338,31 @@ public class RestCommandLineService {
         }
 
         try {
+            cartridgeInfoBean.setCartridgeType(cartridgeType);
+            cartridgeInfoBean.setAlias(alias);
+            cartridgeInfoBean.setPolicy(policy);
+            cartridgeInfoBean.setRepoURL(externalRepoURL);
+            cartridgeInfoBean.setPrivateRepo(privateRepo);
+            cartridgeInfoBean.setRepoUsername(username);
+            cartridgeInfoBean.setRepoPassword(password);
+            cartridgeInfoBean.setDataCartridgeType(dataCartridgeType);
+            cartridgeInfoBean.setDataCartridgeAlias(dataCartridgeAlias);
+
             System.out.println("Second try");
-            String subscriptionOutput = restClientService.doPost(restClientService.getUrl() + subscribCartridgeRestEndpoint, completeJsonSubscribeString, restClientService.getUsername(), restClientService.getPassword());
-            SubscriptionInfo subcriptionInfo = gson.fromJson(subscriptionOutput, SubscriptionInfo.class);
+
+            jsonSubscribeString = gson.toJson(cartridgeInfoBean, CartridgeInfoBean.class);
+            completeJsonSubscribeString = "{\"cartridgeInfoBean\":" + jsonSubscribeString + "}";
+
+            String subscriptionOutput = restClientService.doPost(restClientService.getUrl() + subscribCartridgeRestEndpoint,
+                    completeJsonSubscribeString, restClientService.getUsername(), restClientService.getPassword());
+
+            if (subscriptionOutput.equals("" + CliConstants.RESPONSE_NO_CONTENT)) {
+                System.out.println("Duplicate alias. Please choose different alias");
+                return;
+            }
+
+            String  subscriptionOutputJSON=  subscriptionOutput.substring(20, subscriptionOutput.length() -1);
+            SubscriptionInfo subcriptionInfo = gson.fromJson(subscriptionOutputJSON, SubscriptionInfo.class);
 
             System.out.format("You have successfully subscribed to %s cartridge with alias %s.%n", cartridgeType, alias);
 
@@ -369,7 +399,7 @@ public class RestCommandLineService {
         }
     }
 
-    public void addTenant(String admin, String firstName, String lastaName, String password, String domain, String email, String active) {
+    public void addTenant(String admin, String firstName, String lastaName, String password, String domain, String email, String active){
         try {
             TenantInfoBean tenantInfo = new TenantInfoBean();
             tenantInfo.setAdmin(admin);
@@ -388,7 +418,13 @@ public class RestCommandLineService {
 
             String result = restClientService.doPost(restClientService.getUrl() + addTenantEndPoint, completeJsonString, restClientService.getUsername(), restClientService.getPassword());
 
-            System.out.println(result);
+            if (Integer.parseInt(result) == CliConstants.RESPONSE_AUTHORIZATION_FAIL) {
+                System.out.println("Invalid operation. Authorization failed");
+            } else if (Integer.parseInt(result) == CliConstants.RESPONSE_NO_CONTENT) {
+                System.out.println("Tenant added successfully");
+            } else if (Integer.parseInt(result) == CliConstants.RESPONSE_INTERNAL_SERVER_ERROR) {
+                System.out.println("Domain is not available to register. Please check domain name");
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -405,8 +441,14 @@ 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");
+            String result = restClientService.doPost(restClientService.getUrl() + cartridgeDeploymentEndPoint, cartridgeDefinition, restClientService.getUsername(), restClientService.getPassword());
+
+            if (Integer.parseInt(result) == CliConstants.RESPONSE_AUTHORIZATION_FAIL) {
+                System.out.println("Invalid operations. Authorization failed");
+            }
+            else {
+                System.out.println("You have successfully deployed the cartridge");
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba96ca1a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/SubscriptionInfo.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/SubscriptionInfo.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/SubscriptionInfo.java
index 4e9dd02..384db93 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/SubscriptionInfo.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/SubscriptionInfo.java
@@ -19,30 +19,26 @@
 package org.apache.stratos.cli;
 
 import javax.xml.bind.annotation.XmlRootElement;
-import java.io.Serializable;
 
 @XmlRootElement
-public class SubscriptionInfo implements Serializable {
-
-	private static final long serialVersionUID = 1L;
+public class SubscriptionInfo  {
 
 	private String hostname;
 	private String repositoryURL;
 
-	public String getHostname() {
-		return hostname;
-	}
-
-	public void setHostname(String hostname) {
-		this.hostname = hostname;
-	}
+    public String getHostname() {
+        return hostname;
+    }
 
-	public String getRepositoryURL() {
-		return repositoryURL;
-	}
+    public void setHostname(String hostname) {
+        this.hostname = hostname;
+    }
 
-	public void setRepositoryURL(String repositoryURL) {
-		this.repositoryURL = repositoryURL;
-	}
+    public String getRepositoryURL() {
+        return repositoryURL;
+    }
 
+    public void setRepositoryURL(String repositoryURL) {
+        this.repositoryURL = repositoryURL;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba96ca1a/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 2216f4c..bbc7b8c 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
@@ -156,4 +156,8 @@ public class CliConstants {
     // Cartridge deployment options
     public static final String RESOURCE_PATH = "p";
     public static final String RESOURCE_PATH_LONG_OPTION = "resource-path";
+
+    public static final int RESPONSE_INTERNAL_SERVER_ERROR = 500;
+    public static final int RESPONSE_AUTHORIZATION_FAIL = 403;
+    public static final int RESPONSE_NO_CONTENT = 204;
 }