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;
}