Added --all option for openstack-node-init command
Also show gateway group status to openstack-node-check result
Change-Id: Ifea3bb6af3b4f8d1ea63b2a1670497955cef85ec
diff --git a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
index 85da391..34f4a99 100644
--- a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
+++ b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeInitCommand.java
@@ -18,12 +18,16 @@
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.openstacknode.api.NodeState;
import org.onosproject.openstacknode.api.OpenstackNode;
import org.onosproject.openstacknode.api.OpenstackNodeAdminService;
import org.onosproject.openstacknode.api.OpenstackNodeService;
+import java.util.List;
+import java.util.stream.Collectors;
+
/**
* Initializes nodes for OpenStack node service.
*/
@@ -31,8 +35,17 @@
description = "Initializes nodes for OpenStack node service")
public class OpenstackNodeInitCommand extends AbstractShellCommand {
- @Argument(index = 0, name = "hostnames", description = "Hostname(s)",
- required = true, multiValued = true)
+ @Option(name = "-a", aliases = "--all", description = "Apply this command to all nodes",
+ required = false, multiValued = false)
+ private boolean isAll = false;
+
+ @Option(name = "-i", aliases = "--incomplete",
+ description = "Apply this command to incomplete nodes",
+ required = false, multiValued = false)
+ private boolean isIncomplete = false;
+
+ @Argument(index = 0, name = "hostnames", description = "Hostname(s) to apply this command",
+ required = false, multiValued = true)
private String[] hostnames = null;
@Override
@@ -42,14 +55,37 @@
OpenstackNodeAdminService osNodeAdminService =
AbstractShellCommand.get(OpenstackNodeAdminService.class);
+ if ((!isAll && !isIncomplete && hostnames == null) ||
+ (isAll && isIncomplete) ||
+ (isIncomplete && hostnames != null) ||
+ (hostnames != null && isAll)) {
+ print("Please specify one of hostname, --all, and --incomplete options.");
+ return;
+ }
+
+ if (isAll) {
+ List<String> osNodes = osNodeService.nodes().stream()
+ .map(OpenstackNode::hostname)
+ .collect(Collectors.toList());
+ hostnames = osNodes.toArray(new String[osNodes.size()]);
+ } else if (isIncomplete) {
+ List<String> osNodes = osNodeService.nodes().stream()
+ .filter(osNode -> osNode.state() != NodeState.COMPLETE)
+ .map(OpenstackNode::hostname)
+ .collect(Collectors.toList());
+ hostnames = osNodes.toArray(new String[osNodes.size()]);
+ }
+
for (String hostname : hostnames) {
OpenstackNode osNode = osNodeService.node(hostname);
if (osNode == null) {
print("Unable to find %s", hostname);
continue;
}
+ print("Initializing %s", hostname);
OpenstackNode updated = osNode.updateState(NodeState.INIT);
osNodeAdminService.updateNode(updated);
}
+ print("Done.");
}
}