You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/10/10 19:48:06 UTC
git commit: Adding kubernetes group and host list commands to cli
Repository: stratos
Updated Branches:
refs/heads/master 0f41d0137 -> ef816f063
Adding kubernetes group and host list commands to cli
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ef816f06
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ef816f06
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ef816f06
Branch: refs/heads/master
Commit: ef816f0630ac876d48cd4e63790d790c7b7b6931
Parents: 0f41d01
Author: Imesh Gunaratne <im...@apache.org>
Authored: Fri Oct 10 23:17:56 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Fri Oct 10 23:17:56 2014 +0530
----------------------------------------------------------------------
.../stratos/cli/RestCommandLineService.java | 68 +++++++++++++++++++-
.../apache/stratos/cli/StratosApplication.java | 6 ++
.../cli/beans/kubernetes/KubernetesGroup.java | 44 +++++++++++++
.../beans/kubernetes/KubernetesGroupList.java | 37 +++++++++++
.../cli/beans/kubernetes/KubernetesHost.java | 53 +++++++++++++++
.../beans/kubernetes/KubernetesHostList.java | 37 +++++++++++
.../commands/ListKubernetesGroupsCommand.java | 66 +++++++++++++++++++
.../commands/ListKubernetesHostsCommand.java | 67 +++++++++++++++++++
8 files changed, 375 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/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 04eabc1..631510f 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
@@ -56,6 +56,10 @@ import org.apache.stratos.cli.beans.cartridge.Cartridge;
import org.apache.stratos.cli.beans.cartridge.CartridgeInfoBean;
import org.apache.stratos.cli.beans.cartridge.PortMapping;
import org.apache.stratos.cli.beans.cartridge.ServiceDefinitionBean;
+import org.apache.stratos.cli.beans.kubernetes.KubernetesGroup;
+import org.apache.stratos.cli.beans.kubernetes.KubernetesGroupList;
+import org.apache.stratos.cli.beans.kubernetes.KubernetesHost;
+import org.apache.stratos.cli.beans.kubernetes.KubernetesHostList;
import org.apache.stratos.cli.beans.topology.Cluster;
import org.apache.stratos.cli.beans.topology.Member;
import org.apache.stratos.cli.exception.CommandException;
@@ -101,12 +105,15 @@ public class RestCommandLineService {
private final String getListAvailableCartridgeInfoRestEndPoint = "/stratos/admin/cartridge/available/info";
private final String deployKubernetesGroup = "/stratos/admin/kubernetes/deploy/group";
- private final String deployKubernetesHost = "/stratos/admin/kubernetes/deploy/host";
+ private final String listKubernetesGroup = "/stratos/admin/kubernetes/group";
private final String undeployKubernetesGroup = "/stratos/admin/kubernetes/group/{id}";
+
+ private final String deployKubernetesHost = "/stratos/admin/kubernetes/deploy/host";
+ private final String listKubernetesHost = "/stratos/admin/kubernetes/hosts/{groupId}";
private final String undeployKubernetesHost = "/stratos/admin/kubernetes/host/{id}";
+
private final String updateKubernetesMaster = "/stratos/admin/kubernetes/update/master";
private final String updateKubernetesHost = "/stratos/admin/kubernetes/update/host";
- private final String listKubernetesGroup = "/stratos/admin/kubernetes/group";
private final String getKubernetesGroup = "/stratos/admin/kubernetes/group/{id}";
private final String getKubernetesHost = "/stratos/admin/kubernetes/hosts/{id}";
private final String getKubernetesMaster = "/stratos/admin/kubernetes/master/{id}";
@@ -1953,6 +1960,33 @@ public class RestCommandLineService {
deployEntity(deployKubernetesGroup, entityBody, "kubernetes group");
}
+ public void listKubernetesGroups() {
+ try {
+ KubernetesGroupList list = (KubernetesGroupList) executeList(listKubernetesGroup, KubernetesGroupList.class, "kubernetes group");
+ if((list != null) && (list.getKubernetesGroup() != null) && (list.getKubernetesGroup().size() > 0)) {
+ RowMapper<KubernetesGroup> partitionMapper = new RowMapper<KubernetesGroup>() {
+ public String[] getData(KubernetesGroup kubernetesGroup) {
+ String[] data = new String[2];
+ data[0] = kubernetesGroup.getGroupId();
+ data[1] = kubernetesGroup.getDescription();
+ return data;
+ }
+ };
+
+ KubernetesGroup[] array = new KubernetesGroup[list.getKubernetesGroup().size()];
+ array = list.getKubernetesGroup().toArray(array);
+ System.out.println("Available kubernetes groups:" );
+ CommandLineUtils.printTable(array, partitionMapper, "Group ID", "Description");
+ } else {
+ String message = "No kubernetes groups found.";
+ System.out.println(message);
+ return;
+ }
+ } catch (Exception e) {
+ logger.error("Error in listing kubernetes groups");
+ }
+ }
+
public void undeployKubernetesGroup(String groupId) {
undeployEntity(undeployKubernetesGroup, "kubernetes group", groupId);
}
@@ -1961,6 +1995,35 @@ public class RestCommandLineService {
deployEntity(deployKubernetesHost, entityBody, "kubernetes host");
}
+ public void listKubernetesHosts(String groupId) {
+ try {
+ KubernetesHostList list = (KubernetesHostList) executeList(listKubernetesHost.replace("{groupId}", groupId),
+ KubernetesHostList.class, "kubernetes host");
+ if((list != null) && (list.getKubernetesHost() != null) && (list.getKubernetesHost().size() > 0)) {
+ RowMapper<KubernetesHost> partitionMapper = new RowMapper<KubernetesHost>() {
+ public String[] getData(KubernetesHost kubernetesHost) {
+ String[] data = new String[3];
+ data[0] = kubernetesHost.getHostId();
+ data[1] = kubernetesHost.getHostname();
+ data[2] = kubernetesHost.getHostIpAddress();
+ return data;
+ }
+ };
+
+ KubernetesHost[] array = new KubernetesHost[list.getKubernetesHost().size()];
+ array = list.getKubernetesHost().toArray(array);
+ System.out.println("Available kubernetes hosts:" );
+ CommandLineUtils.printTable(array, partitionMapper, "Host ID", "Hostname", "IP Address");
+ } else {
+ String message = "No kubernetes hosts found.";
+ System.out.println(message);
+ return;
+ }
+ } catch (Exception e) {
+ logger.error("Error in listing kubernetes hosts");
+ }
+ }
+
public void undeployKubernetesHost(String hostId) {
undeployEntity(undeployKubernetesHost, "kubernetes host", hostId);
}
@@ -2066,7 +2129,6 @@ public class RestCommandLineService {
System.out.println(exception);
return null;
}
-
return gson.fromJson(resultString, _class);
} catch (Exception e) {
handleException(String.format("Error in listing %s", entityName), e);
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/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 216d124..b76edcb 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
@@ -186,6 +186,12 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon
command = new DeployKubernetesGroupCommand();
commands.put(command.getName(), command);
+ command = new ListKubernetesGroupsCommand();
+ commands.put(command.getName(), command);
+
+ command = new ListKubernetesHostsCommand();
+ commands.put(command.getName(), command);
+
command = new DeployKubernetesHostCommand();
commands.put(command.getName(), command);
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroup.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroup.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroup.java
new file mode 100644
index 0000000..2eda746
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroup.java
@@ -0,0 +1,44 @@
+/**
+ * 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.kubernetes;
+
+/**
+ * Kubernetes group.
+ */
+public class KubernetesGroup {
+ private String groupId;
+ private String description;
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroupList.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroupList.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroupList.java
new file mode 100644
index 0000000..4ca23b5
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesGroupList.java
@@ -0,0 +1,37 @@
+/**
+ * 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.kubernetes;
+
+import java.util.ArrayList;
+
+/**
+ * Kubernetes group list.
+ */
+public class KubernetesGroupList {
+ private ArrayList<KubernetesGroup> kubernetesGroup;
+
+ public ArrayList<KubernetesGroup> getKubernetesGroup() {
+ return kubernetesGroup;
+ }
+
+ public void setKubernetesGroup(ArrayList<KubernetesGroup> kubernetesGroup) {
+ this.kubernetesGroup = kubernetesGroup;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHost.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHost.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHost.java
new file mode 100644
index 0000000..06e7311
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHost.java
@@ -0,0 +1,53 @@
+/**
+ * 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.kubernetes;
+
+/**
+ * Kubernetes host.
+ */
+public class KubernetesHost {
+ private String hostId;
+ private String hostname;
+ private String hostIpAddress;
+
+ public String getHostId() {
+ return hostId;
+ }
+
+ public void setHostId(String hostId) {
+ this.hostId = hostId;
+ }
+
+ public String getHostname() {
+ return hostname;
+ }
+
+ public void setHostname(String hostname) {
+ this.hostname = hostname;
+ }
+
+ public String getHostIpAddress() {
+ return hostIpAddress;
+ }
+
+ public void setHostIpAddress(String hostIpAddress) {
+ this.hostIpAddress = hostIpAddress;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHostList.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHostList.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHostList.java
new file mode 100644
index 0000000..029b21d
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/kubernetes/KubernetesHostList.java
@@ -0,0 +1,37 @@
+/**
+ * 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.kubernetes;
+
+import java.util.ArrayList;
+
+/**
+ * Kubernetes group list.
+ */
+public class KubernetesHostList {
+ private ArrayList<KubernetesHost> kubernetesHost;
+
+ public ArrayList<KubernetesHost> getKubernetesHost() {
+ return kubernetesHost;
+ }
+
+ public void setKubernetesHost(ArrayList<KubernetesHost> kubernetesHost) {
+ this.kubernetesHost = kubernetesHost;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesGroupsCommand.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesGroupsCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesGroupsCommand.java
new file mode 100644
index 0000000..146df48
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesGroupsCommand.java
@@ -0,0 +1,66 @@
+/**
+ * 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 ListKubernetesGroupsCommand implements Command<StratosCommandContext> {
+
+ private static final Logger logger = LoggerFactory.getLogger(ListKubernetesGroupsCommand.class);
+
+ public ListKubernetesGroupsCommand() {
+ }
+
+ public String getName() {
+ return "list-kubernetes-groups";
+ }
+
+ public String getDescription() {
+ return "List kubernetes groups";
+ }
+
+ public String getArgumentSyntax() {
+ return null;
+ }
+
+ public int execute(StratosCommandContext context, String[] args) throws CommandException {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Executing command: ", getName());
+ }
+ if ((args == null) || (args.length == 0)) {
+ RestCommandLineService.getInstance().listKubernetesGroups();
+ return CliConstants.SUCCESSFUL_CODE;
+ } else {
+ context.getStratosApplication().printUsage(getName());
+ return CliConstants.BAD_ARGS_CODE;
+ }
+ }
+
+ public Options getOptions() {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/ef816f06/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesHostsCommand.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesHostsCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesHostsCommand.java
new file mode 100644
index 0000000..43062e7
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListKubernetesHostsCommand.java
@@ -0,0 +1,67 @@
+/**
+ * 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 ListKubernetesHostsCommand implements Command<StratosCommandContext> {
+
+ private static final Logger logger = LoggerFactory.getLogger(ListKubernetesHostsCommand.class);
+
+ public ListKubernetesHostsCommand() {
+ }
+
+ public String getName() {
+ return "list-kubernetes-hosts";
+ }
+
+ public String getDescription() {
+ return "List kubernetes hosts";
+ }
+
+ public String getArgumentSyntax() {
+ return "[group-id]";
+ }
+
+ public int execute(StratosCommandContext context, String[] args) throws CommandException {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Executing command: ", getName());
+ }
+ if ((args == null) || (args.length == 0)) {
+ context.getStratosApplication().printUsage(getName());
+ return CliConstants.BAD_ARGS_CODE;
+ } else {
+ String groupId = args[0];
+ RestCommandLineService.getInstance().listKubernetesHosts(groupId);
+ return CliConstants.SUCCESSFUL_CODE;
+ }
+ }
+
+ public Options getOptions() {
+ return null;
+ }
+}