Refactor k8s-node and k8s-networking command line interfaces
Change-Id: I1eb20ccea5238893a1c58e7faeb4c3a06accd2a9
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/cli/K8sNodeListCommand.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/cli/K8sNodeListCommand.java
index aea2130..809df39 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/cli/K8sNodeListCommand.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/cli/K8sNodeListCommand.java
@@ -17,7 +17,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import org.apache.commons.lang.StringUtils;
import org.apache.karaf.shell.api.action.Command;
import org.apache.karaf.shell.api.action.lifecycle.Service;
import org.onosproject.cli.AbstractShellCommand;
@@ -27,6 +29,7 @@
import java.util.Comparator;
import java.util.List;
+import static org.onosproject.k8snode.util.K8sNodeUtil.genFormatString;
import static org.onosproject.k8snode.util.K8sNodeUtil.prettyJson;
/**
@@ -37,7 +40,12 @@
description = "Lists all nodes registered in kubernetes node service")
public class K8sNodeListCommand extends AbstractShellCommand {
- private static final String FORMAT = "%-28s%-15s%-24s%-20s%-15s";
+ private static final int HOSTNAME_LENGTH = 35;
+ private static final int TYPE_LENGTH = 15;
+ private static final int MANAGEMENT_IP_LENGTH = 25;
+ private static final int DATA_IP_LENGTH = 25;
+ private static final int STATUS = 15;
+ private static final int MARGIN_LENGTH = 2;
@Override
protected void doExecute() {
@@ -45,16 +53,23 @@
List<K8sNode> nodes = Lists.newArrayList(nodeService.nodes());
nodes.sort(Comparator.comparing(K8sNode::hostname));
+ String format = genFormatString(ImmutableList.of(HOSTNAME_LENGTH,
+ TYPE_LENGTH, MANAGEMENT_IP_LENGTH, DATA_IP_LENGTH, STATUS));
+
if (outputJson()) {
print("%s", json(nodes));
} else {
- print(FORMAT, "Hostname", "Type", "Management IP", "Data IP", "State");
+ print(format, "Hostname", "Type", "Management IP", "Data IP", "State");
for (K8sNode node : nodes) {
- print(FORMAT,
- node.hostname(),
+ print(format,
+ StringUtils.substring(node.hostname(), 0,
+ HOSTNAME_LENGTH - MARGIN_LENGTH),
node.type(),
- node.managementIp(),
- node.dataIp() != null ? node.dataIp() : "",
+ StringUtils.substring(node.managementIp().toString(), 0,
+ MANAGEMENT_IP_LENGTH - MARGIN_LENGTH),
+ node.dataIp() != null ? StringUtils.substring(
+ node.dataIp().toString(), 0,
+ DATA_IP_LENGTH - MARGIN_LENGTH) : "",
node.state());
}
print("Total %s nodes", nodeService.nodes().size());
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/util/K8sNodeUtil.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/util/K8sNodeUtil.java
index 2413f46..023cec9 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/util/K8sNodeUtil.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/util/K8sNodeUtil.java
@@ -37,6 +37,7 @@
import java.io.IOException;
import java.util.Dictionary;
+import java.util.List;
import static org.onlab.util.Tools.get;
@@ -214,6 +215,22 @@
}
/**
+ * Generates string format based on the given string length list.
+ *
+ * @param stringLengths a list of string lengths
+ * @return string format (e.g., %-28s%-15s%-24s%-20s%-15s)
+ */
+ public static String genFormatString(List<Integer> stringLengths) {
+ StringBuilder fsb = new StringBuilder();
+ stringLengths.forEach(length -> {
+ fsb.append("%-");
+ fsb.append(length);
+ fsb.append("s");
+ });
+ return fsb.toString();
+ }
+
+ /**
* Obtains workable kubernetes client.
*
* @param config kubernetes API config