Updated Branches: refs/heads/master 32796ae0e -> 2f741cb0e
adding support to describe policies, parition and cartirdge Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/4c293dd3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/4c293dd3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/4c293dd3 Branch: refs/heads/master Commit: 4c293dd34f34241ea49da1fcde890873c667a326 Parents: c7f24b5 Author: rekathiru <[email protected]> Authored: Wed Jan 29 13:42:21 2014 +0530 Committer: rekathiru <[email protected]> Committed: Wed Jan 29 13:42:21 2014 +0530 ---------------------------------------------------------------------- .../stratos/cli/RestCommandLineService.java | 257 ++++++++++++++++++- .../apache/stratos/cli/StratosApplication.java | 45 ++-- .../autoscaler/partition/PartitionGroup.java | 54 ++++ .../policy/deployment/DeploymentPolicy.java | 27 ++ .../DescribeAutoScalingPolicyCommand.java | 70 +++++ .../cli/commands/DescribeCartridgeCommand.java | 70 +++++ .../DescribeDeploymentPolicyCommand.java | 70 +++++ .../cli/commands/DescribePartitionCommand.java | 70 +++++ .../stratos/cli/commands/ListMemberCommand.java | 136 ++++++++++ .../apache/stratos/cli/utils/CliConstants.java | 33 +++ 10 files changed, 806 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/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 e064f8e..987eccd 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 @@ -63,8 +63,9 @@ public class RestCommandLineService { // REST endpoints private final String initializeEndpoint = "/stratos/admin/init"; private final String listAvailableCartridgesRestEndpoint = "/stratos/admin/cartridge/list"; + private final String describeAvailableCartridgeRestEndpoint = "/stratos/admin/cartridge/list/"; private final String listSubscribedCartridgesRestEndpoint = "/stratos/admin/cartridge/list/subscribed"; - private final String listClusterRestEndpoint = "/cluster/"; + private final String listClusterRestEndpoint = "/stratos/admin/cluster"; private final String subscribCartridgeRestEndpoint = "/stratos/admin/cartridge/subscribe"; private final String addTenantEndPoint = "/stratos/admin/tenant"; private final String unsubscribeTenantEndPoint = "/stratos/admin/cartridge/unsubscribe"; @@ -72,8 +73,11 @@ public class RestCommandLineService { private final String partitionDeploymentEndPoint = "/stratos/admin/policy/deployment/partition"; private final String autoscalingPolicyDeploymentEndPoint = "/stratos/admin/policy/autoscale"; private final String deploymentPolicyDeploymentEndPoint = "/stratos/admin/policy/deployment"; + private final String describeParitionRestEndPoint = "/stratos/admin/partition/"; private final String listParitionRestEndPoint = "/stratos/admin/partition"; + private final String describeAutoscalePolicyRestEndPoint = "/stratos/admin/policy/autoscale/"; private final String listAutoscalePolicyRestEndPoint = "/stratos/admin/policy/autoscale"; + private final String describeDeploymentPolicyRestEndPoint = "/stratos/admin/policy/deployment/"; private final String listDeploymentPolicyRestEndPoint = "/stratos/admin/policy/deployment"; private static class SingletonHolder { @@ -273,6 +277,48 @@ public class RestCommandLineService { } } + // List currently available multi tenant and single tenant cartridges + public void describeAvailableCartridges(String type) throws CommandException { + DefaultHttpClient httpClient = new DefaultHttpClient(); + try { + HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + listAvailableCartridgesRestEndpoint, + restClientService.getUsername(), restClientService.getPassword()); + + String responseCode = "" + response.getStatusLine().getStatusCode(); + if ( ! responseCode.equals(CliConstants.RESPONSE_OK)) { + System.out.println("Error occured while listing available cartridges"); + return; + } + + String resultString = getHttpResponseString(response); + if (resultString == null) { + return; + } + + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + CartridgeList cartridgeList = gson.fromJson(resultString, CartridgeList.class); + + if (cartridgeList == null) { + System.out.println("Available cartridge list is null"); + return; + } + + for (Cartridge tmp : cartridgeList.getCartridge()) { + if(tmp.getCartridgeType().equalsIgnoreCase(type)) { + System.out.println("The cartridge is:"); + System.out.println(gson.toJson(tmp)); + return; + } + } + System.out.println("No matching cartridge found..."); + } catch (Exception e) { + handleException("Exception in listing available cartridges", e); + } finally { + httpClient.getConnectionManager().shutdown(); + } + } + // List subscribe cartridges public void listSubscribedCartridges(final boolean full) throws CommandException { DefaultHttpClient httpClient = new DefaultHttpClient(); @@ -353,8 +399,7 @@ public class RestCommandLineService { public void listMembersOfCluster(String cartridgeType, String alias) throws CommandException { DefaultHttpClient httpClient = new DefaultHttpClient(); try { - HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + listClusterRestEndpoint - + cartridgeType + "/" + alias , + HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + listClusterRestEndpoint, restClientService.getUsername(), restClientService.getPassword()); String responseCode = "" + response.getStatusLine().getStatusCode(); @@ -776,11 +821,9 @@ public class RestCommandLineService { RowMapper<Partition> partitionMapper = new RowMapper<Partition>() { public String[] getData(Partition partition) { - String[] data = new String[4]; + String[] data = new String[2]; data[0] = partition.getId(); data[1] = partition.getProvider(); - data[2] = "" + partition.getPartitionMax(); - data[3] = "" + partition.getPartitionMin(); return data; } }; @@ -789,7 +832,7 @@ public class RestCommandLineService { partitions = partitionList.getPartition().toArray(partitions); System.out.println("Available Partitions:" ); - CommandLineUtils.printTable(partitions, partitionMapper, "ID", "Provider", "PartitionMax", "PartitionMin"); + CommandLineUtils.printTable(partitions, partitionMapper, "ID", "Provider"); System.out.println(); } catch (Exception e) { @@ -821,7 +864,6 @@ public class RestCommandLineService { System.out.println("Response content is empty"); return; } - System.out.println(resultString); GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); AutoscalePolicyList policyList = gson.fromJson(resultString, AutoscalePolicyList.class); @@ -906,6 +948,205 @@ public class RestCommandLineService { } } + // This method list deployment policies + public void describeDeploymentPolicies(String id) throws CommandException { + DefaultHttpClient httpClient = new DefaultHttpClient(); + try { + HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + + listDeploymentPolicyRestEndPoint, + restClientService.getUsername(), restClientService.getPassword()); + + String responseCode = "" + response.getStatusLine().getStatusCode(); + if (responseCode.equals("" + CliConstants.RESPONSE_AUTHORIZATION_FAIL)) { + System.out.println("Invalid operations. Authorization failed"); + return; + } else if ( ! responseCode.equals(CliConstants.RESPONSE_OK)) { + System.out.println("Error occured while listing deployment policies"); + return; + } + + String resultString = getHttpResponseString(response); + if (resultString == null) { + System.out.println("Response content is empty"); + return; + } + + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + DeploymentPolicyList deploymentPolicyList = gson.fromJson(resultString, DeploymentPolicyList.class); + + if (deploymentPolicyList == null) { + System.out.println("Deployment policy list is empty"); + return; + } + for (DeploymentPolicy policy : deploymentPolicyList.getDeploymentPolicy()) { + if(policy.getId().equals(id)) { + System.out.println("The Deployment policy is: \n"); + System.out.println(gson.toJson(policy)); + return; + } + } + + System.out.println("No matching Deployment policy found"); + + /*RowMapper<DeploymentPolicy> partitionMapper = new RowMapper<DeploymentPolicy>() { + + public String[] getData(DeploymentPolicy policy) { + String[] data = new String[1]; + data[0] = policy.getId(); + return data; + } + }; + + DeploymentPolicy[] deploymentPolicies = new DeploymentPolicy[1]; + deploymentPolicies[0] = deploymentPolicy; + + System.out.println("The Deployment policy is: \n"); + System.out.println(resultString);*/ + //CommandLineUtils.printTable(deploymentPolicies, partitionMapper, "ID"); + + } catch (Exception e) { + handleException("Exception in listing deployment polices", e); + } finally { + httpClient.getConnectionManager().shutdown(); + } + } + + + + // This method list deployment policies + public void describePartition(String id) throws CommandException { + DefaultHttpClient httpClient = new DefaultHttpClient(); + try { + HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + + listParitionRestEndPoint, + restClientService.getUsername(), restClientService.getPassword()); + + String responseCode = "" + response.getStatusLine().getStatusCode(); + if (responseCode.equals("" + CliConstants.RESPONSE_AUTHORIZATION_FAIL)) { + System.out.println("Invalid operations. Authorization failed"); + return; + } else if ( ! responseCode.equals(CliConstants.RESPONSE_OK)) { + System.out.println("Error occured while listing deployment policies"); + return; + } + String resultString = getHttpResponseString(response); + if (resultString == null) { + System.out.println("Response content is empty"); + return; + } + + + if (resultString == null) { + System.out.println("Response content is empty"); + return; + } + + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + PartitionList partitionList = gson.fromJson(resultString, PartitionList.class); + + for (Partition partition : partitionList.getPartition()) { + if(partition.getId().equals(id)) { + System.out.println("The Partition is:"); + System.out.println(gson.toJson(partition)); + return; + } + } + System.out.println("No matching partition found..."); + + + /*GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + Partition partition = gson.fromJson(resultString, Partition.class); + + if (partition == null) { + System.out.println("Deployment policy list is empty"); + return; + } + RowMapper<Partition> partitionMapper = new RowMapper<Partition>() { + + public String[] getData(Partition policy) { + String[] data = new String[1]; + data[0] = policy.getId(); + return data; + } + }; + + System.out.println("The Partition is:"); + System.out.println(resultString); + System.out.println(resultString); */ + //CommandLineUtils.printTable(deploymentPolicies, partitionMapper, "ID"); + + } catch (Exception e) { + handleException("Exception in listing deployment polices", e); + } finally { + httpClient.getConnectionManager().shutdown(); + } + } + + public void describeAutoScalingPolicy(String id) throws CommandException { + DefaultHttpClient httpClient = new DefaultHttpClient(); + try { + HttpResponse response = restClientService.doGet(httpClient, restClientService.getUrl() + + listAutoscalePolicyRestEndPoint, + restClientService.getUsername(), restClientService.getPassword()); + + String responseCode = "" + response.getStatusLine().getStatusCode(); + if (responseCode.equals("" + CliConstants.RESPONSE_AUTHORIZATION_FAIL)) { + System.out.println("Invalid operations. Authorization failed"); + return; + } else if ( ! responseCode.equals(CliConstants.RESPONSE_OK)) { + System.out.println("Error occured while listing deployment policies"); + return; + } + + String resultString = getHttpResponseString(response); + if (resultString == null) { + System.out.println("Response content is empty"); + return; + } + + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + AutoscalePolicyList policyList = gson.fromJson(resultString, AutoscalePolicyList.class); + + if (policyList == null) { + System.out.println("Deployment policy list is empty"); + return; + } + for(AutoscalePolicy policy : policyList.getAutoscalePolicy()) { + if(policy.getId().equalsIgnoreCase(id)) { + System.out.println("Autoscaling policy is:"); + System.out.println(gson.toJson(policy)); + return; + } + } + System.out.println("No matching Autoscale Policy found..."); + + + /*RowMapper<AutoscalePolicy> partitionMapper = new RowMapper<AutoscalePolicy>() { + + public String[] getData(AutoscalePolicy policy) { + String[] data = new String[1]; + data[0] = policy.getId(); + return data; + } + }; + + System.out.println("The Autoscaling Policy is: \n"); + System.out.println(resultString);*/ + //CommandLineUtils.printTable(deploymentPolicies, partitionMapper, "ID"); + + } catch (Exception e) { + handleException("Exception in listing deployment polices", e); + } finally { + httpClient.getConnectionManager().shutdown(); + } + } + + + // This class convert JSON string to deploymentpolicylist object private class DeploymentPolicyList { private ArrayList<DeploymentPolicy> deploymentPolicy; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/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 dd2bda5..6e19c56 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 @@ -18,31 +18,28 @@ */ package org.apache.stratos.cli; -import static org.apache.stratos.cli.utils.CliConstants.STRATOS_DIR; -import static org.apache.stratos.cli.utils.CliConstants.STRATOS_HISTORY_DIR; - -import java.io.File; -import java.io.PrintWriter; -import java.util.*; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.GnuParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; +import org.apache.commons.cli.*; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.text.StrTokenizer; import org.apache.commons.validator.routines.UrlValidator; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.stratos.cli.commands.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.stratos.cli.completer.CommandCompleter; 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.File; +import java.io.PrintWriter; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.TreeMap; + +import static org.apache.stratos.cli.utils.CliConstants.STRATOS_DIR; +import static org.apache.stratos.cli.utils.CliConstants.STRATOS_HISTORY_DIR; public class StratosApplication extends CommandLineApplication<StratosCommandContext> { @@ -129,8 +126,20 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon command = new DeploymentPolicyCommand(); commands.put(command.getName(), command); - //command = new InfoCommand(); - //commands.put(command.getName(), command); + command = new ListMemberCommand(); + commands.put(command.getName(), command); + + command = new DescribeCartridgeCommand(); + commands.put(command.getName(), command); + + command = new DescribePartitionCommand(); + commands.put(command.getName(), command); + + command = new DescribeDeploymentPolicyCommand(); + commands.put(command.getName(), command); + + command = new DescribeAutoScalingPolicyCommand(); + commands.put(command.getName(), command); //command = new AddDomainMappingCommand(); //commands.put(command.getName(), command); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/partition/PartitionGroup.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/partition/PartitionGroup.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/partition/PartitionGroup.java new file mode 100644 index 0000000..16910e2 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/partition/PartitionGroup.java @@ -0,0 +1,54 @@ +/* + * 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.beans.autoscaler.partition; + +import java.util.List; + +public class PartitionGroup { + private String id; + + private String partitionAlgo; + + //partition Ids + private List<Partition> partition; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPartitionAlgo() { + return partitionAlgo; + } + + public void setPartitionAlgo(String partitionAlgo) { + this.partitionAlgo = partitionAlgo; + } + + public List<Partition> getPartition() { + return partition; + } + + public void setPartition(List<Partition> partition) { + this.partition = partition; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/policy/deployment/DeploymentPolicy.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/policy/deployment/DeploymentPolicy.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/policy/deployment/DeploymentPolicy.java index 42611e7..1899d89 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/policy/deployment/DeploymentPolicy.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/autoscaler/policy/deployment/DeploymentPolicy.java @@ -18,9 +18,20 @@ */ package org.apache.stratos.cli.beans.autoscaler.policy.deployment; +import org.apache.stratos.cli.beans.autoscaler.partition.Partition; +import org.apache.stratos.cli.beans.autoscaler.partition.PartitionGroup; + +import java.util.List; + public class DeploymentPolicy { private String id; + //partition groups + private List<PartitionGroup> partitionGroup; + + //partitions + private List<Partition> partition; + public String getId() { return id; } @@ -28,4 +39,20 @@ public class DeploymentPolicy { public void setId(String id) { this.id = id; } + + public List<PartitionGroup> getPartitionGroup() { + return partitionGroup; + } + + public void setPartitionGroup(List<PartitionGroup> partitionGroup) { + this.partitionGroup = partitionGroup; + } + + public List<Partition> getPartition() { + return partition; + } + + public void setPartition(List<Partition> partition) { + this.partition = partition; + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeAutoScalingPolicyCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeAutoScalingPolicyCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeAutoScalingPolicyCommand.java new file mode 100644 index 0000000..903e048 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeAutoScalingPolicyCommand.java @@ -0,0 +1,70 @@ +/** + * 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; + +public class DescribeAutoScalingPolicyCommand implements Command<StratosCommandContext> { + private static final Logger logger = LoggerFactory.getLogger(DescribeAutoScalingPolicyCommand.class); + + @Override + public String getName() { + return CliConstants.DESCRIBE_AUTO_SCALING_POLICY; + } + + @Override + public String getDescription() { + return "Describing the Autoscaling policy"; + } + + @Override + public String getArgumentSyntax() { + return "[ID]"; + } + + @Override + public Options getOptions() { + 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 == 1) { + String id = args[0]; + if (logger.isDebugEnabled()) { + logger.debug("Getting Autoscale policy info {}", id); + } + RestCommandLineService.getInstance().describeAutoScalingPolicy(id); + return CliConstants.SUCCESSFUL_CODE; + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeCartridgeCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeCartridgeCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeCartridgeCommand.java new file mode 100644 index 0000000..3ae2b42 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeCartridgeCommand.java @@ -0,0 +1,70 @@ +/** + * 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; + +public class DescribeCartridgeCommand implements Command<StratosCommandContext> { + private static final Logger logger = LoggerFactory.getLogger(DescribeAutoScalingPolicyCommand.class); + + @Override + public String getName() { + return CliConstants.DESCRIBE_CARTRIDGE; + } + + @Override + public String getDescription() { + return "Describing the cartridge"; + } + + @Override + public String getArgumentSyntax() { + return "[Cartridge-Type]"; + } + + @Override + public Options getOptions() { + 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 == 1) { + String id = args[0]; + if (logger.isDebugEnabled()) { + logger.debug("Getting cartridge info {}", id); + } + RestCommandLineService.getInstance().describeAvailableCartridges(id); + return CliConstants.SUCCESSFUL_CODE; + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeDeploymentPolicyCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeDeploymentPolicyCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeDeploymentPolicyCommand.java new file mode 100644 index 0000000..606cd44 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribeDeploymentPolicyCommand.java @@ -0,0 +1,70 @@ +/** + * 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; + +public class DescribeDeploymentPolicyCommand implements Command<StratosCommandContext> { + private static final Logger logger = LoggerFactory.getLogger(DescribeDeploymentPolicyCommand.class); + + @Override + public String getName() { + return CliConstants.DESCRIBE_DEPLOYMENT_POLICY; + } + + @Override + public String getDescription() { + return "Describing the Deployment Policy"; + } + + @Override + public String getArgumentSyntax() { + return "[ID]"; + } + + @Override + public Options getOptions() { + 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 == 1) { + String id = args[0]; + if (logger.isDebugEnabled()) { + logger.debug("Getting Deployment policy info {}", id); + } + RestCommandLineService.getInstance().describeDeploymentPolicies(id); + return CliConstants.SUCCESSFUL_CODE; + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribePartitionCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribePartitionCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribePartitionCommand.java new file mode 100644 index 0000000..950a957 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DescribePartitionCommand.java @@ -0,0 +1,70 @@ +/** + * 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.Options; +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; + +public class DescribePartitionCommand implements Command<StratosCommandContext> { + private static final Logger logger = LoggerFactory.getLogger(DescribePartitionCommand.class); + + @Override + public String getName() { + return CliConstants.DESCRIBE_PARTITION; + } + + @Override + public String getDescription() { + return "Describing the partition"; + } + + @Override + public String getArgumentSyntax() { + return "[Id]"; + } + + @Override + public Options getOptions() { + 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 == 1) { + String id = args[0]; + if (logger.isDebugEnabled()) { + logger.debug("Getting Partition info {}", id); + } + RestCommandLineService.getInstance().describePartition(id); + return CliConstants.SUCCESSFUL_CODE; + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListMemberCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListMemberCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListMemberCommand.java new file mode 100644 index 0000000..4ce5ac7 --- /dev/null +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListMemberCommand.java @@ -0,0 +1,136 @@ +/** + * 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; + +public class ListMemberCommand implements Command<StratosCommandContext> { + private static final Logger logger = LoggerFactory.getLogger(ListMemberCommand.class); + + + private final Options options; + + public ListMemberCommand() { + options = constructOptions(); + } + + /** + * Construct Options. + * + * @return Options expected from command-line. + */ + private Options constructOptions() { + final Options options = new Options(); + + Option type = new Option(CliConstants.CARTRIDGE_TYPE_OPTION, CliConstants.CARTRIDGE_TYPE_LONG_OPTION, + true, "Cartridge Type"); + type.setArgName("cartridge-type"); + options.addOption(type); + + Option alias = new Option(CliConstants.ALIAS_OPTION, CliConstants.ALIAS_LONG_OPTION, + true, "subscription alias"); + alias.setArgName("alias"); + options.addOption(alias); + + return options; + } + @Override + public String getName() { + return CliConstants.LIST_MEMBERS; + } + + @Override + public String getDescription() { + return "List of members in a cluster"; + } + + @Override + public String getArgumentSyntax() { + return null; + } + + @Override + public Options getOptions() { + return options; + } + + @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 type = null; + String alias = null; + + final CommandLineParser parser = new GnuParser(); + CommandLine commandLine; + try { + commandLine = parser.parse(options, args); + if (logger.isDebugEnabled()) { + logger.debug("Subscribing to {} cartridge with alias {}", type, alias); + } + + if (commandLine.hasOption(CliConstants.CARTRIDGE_TYPE_OPTION)) { + if (logger.isTraceEnabled()) { + logger.trace("Autoscaling policy option is passed"); + } + type = commandLine.getOptionValue(CliConstants.CARTRIDGE_TYPE_OPTION); + } + if (commandLine.hasOption(CliConstants.ALIAS_OPTION)) { + if (logger.isTraceEnabled()) { + logger.trace("Deployment policy option is passed"); + } + alias = commandLine.getOptionValue(CliConstants.ALIAS_OPTION); + } + + if (type == null) { + System.out.println("Cartridge type is required."); + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + + if (alias == null) { + System.out.println("alis is required..."); + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + RestCommandLineService.getInstance().listMembersOfCluster(type, alias); + + 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; + } + } else { + context.getStratosApplication().printUsage(getName()); + return CliConstants.BAD_ARGS_CODE; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4c293dd3/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 44ca6db..5ba8d88 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 @@ -95,6 +95,16 @@ public class CliConstants { public static final String LIST_DEPLOYMENT_POLICIES = "list-deployment-policies"; /** + * List members + */ + public static final String LIST_MEMBERS = "list-members"; + + /** + * List members with LB + */ + public static final String LIST_MEMBERS_WITH_LB = "list-lb-members"; + + /** * Autoscaling policy deployment */ public static final String AUTOSCALING_POLICY_DEPLOYMENT = "deploy-autoscaling-policy"; @@ -114,6 +124,23 @@ public class CliConstants { */ public static final String SYNC_ACTION = "sync"; + /** + * Describe the cartridge + */ + public static final String DESCRIBE_CARTRIDGE = "describe-cartridge"; + /** + * Describe the partition + */ + public static final String DESCRIBE_PARTITION = "describe-partition"; + /** + * describe the auto scaling policy + */ + public static final String DESCRIBE_AUTO_SCALING_POLICY = "describe-autoscaling-policy"; + /** + * describe the deployment policy + */ + public static final String DESCRIBE_DEPLOYMENT_POLICY = "describe-deployment-policy"; + /** * Domain mapping */ @@ -162,6 +189,12 @@ public class CliConstants { public static final String DATA_ALIAS_OPTION = "d"; public static final String DATA_ALIAS_LONG_OPTION = "data-alias"; + + public static final String ALIAS_OPTION = "a"; + public static final String ALIAS_LONG_OPTION = "alias"; + + public static final String CARTRIDGE_TYPE_OPTION = "t"; + public static final String CARTRIDGE_TYPE_LONG_OPTION = "cartridge-type"; public static final String FULL_OPTION = "f"; public static final String FULL_LONG_OPTION = "full";
