ONOS-6742 Refactored OpenstackNode
- Removed gateway node uplink interface configuration steps
- Added checking group states
- Refactored interface, store, manager and handler
Change-Id: I9149edbec6481b15377848c8f24bdc5c6c73adc4
diff --git a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
index 4d54abd..a35ab1b 100644
--- a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
+++ b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
@@ -25,14 +25,14 @@
import org.onosproject.net.behaviour.BridgeConfig;
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.device.PortDescription;
-import org.onosproject.openstacknode.OpenstackNode;
-import org.onosproject.openstacknode.OpenstackNodeService;
+import org.onosproject.openstacknode.api.OpenstackNode;
+import org.onosproject.openstacknode.api.OpenstackNodeService;
import java.util.Optional;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.openstacknode.Constants.*;
-import static org.onosproject.openstacknode.OpenstackNodeService.NodeType.GATEWAY;
+import static org.onosproject.openstacknode.api.Constants.*;
+import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
/**
* Checks detailed node init state.
@@ -50,22 +50,17 @@
@Override
protected void execute() {
- OpenstackNodeService nodeService = AbstractShellCommand.get(OpenstackNodeService.class);
+ OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
DeviceService deviceService = AbstractShellCommand.get(DeviceService.class);
- OpenstackNode node = nodeService.nodes()
- .stream()
- .filter(n -> n.hostname().equals(hostname))
- .findFirst()
- .orElse(null);
-
- if (node == null) {
- print("Cannot find %s from registered nodes", hostname);
+ OpenstackNode osNode = osNodeService.node(hostname);
+ if (osNode == null) {
+ error("Cannot find %s from registered nodes", hostname);
return;
}
print("[Integration Bridge Status]");
- Device device = deviceService.getDevice(node.intBridge());
+ Device device = deviceService.getDevice(osNode.intgBridge());
if (device != null) {
print("%s %s=%s available=%s %s",
deviceService.isAvailable(device.id()) ? MSG_OK : MSG_NO,
@@ -73,41 +68,39 @@
device.id(),
deviceService.isAvailable(device.id()),
device.annotations());
-
- node.dataIp().ifPresent(ip -> print(getPortState(deviceService, node.intBridge(), DEFAULT_TUNNEL)));
- node.vlanPort().ifPresent(p -> print(getPortState(deviceService, node.intBridge(), p)));
+ if (osNode.dataIp() != null) {
+ print(getPortState(deviceService, osNode.intgBridge(), DEFAULT_TUNNEL));
+ }
+ if (osNode.vlanIntf() != null) {
+ print(getPortState(deviceService, osNode.intgBridge(), osNode.vlanIntf()));
+ }
} else {
print("%s %s=%s is not available",
MSG_NO,
INTEGRATION_BRIDGE,
- node.intBridge());
+ osNode.intgBridge());
}
- if (node.type().equals(GATEWAY)) {
- print(getPortState(deviceService, node.intBridge(), PATCH_INTG_BRIDGE));
+ if (osNode.type() == GATEWAY) {
+ print(getPortState(deviceService, osNode.intgBridge(), PATCH_INTG_BRIDGE));
print("%n[Router Bridge Status]");
- device = deviceService.getDevice(node.ovsdbId());
+ device = deviceService.getDevice(osNode.ovsdb());
if (device == null || !device.is(BridgeConfig.class)) {
print("%s %s=%s is not available(unable to connect OVSDB)",
MSG_NO,
ROUTER_BRIDGE,
- node.intBridge());
+ osNode.intgBridge());
} else {
BridgeConfig bridgeConfig = device.as(BridgeConfig.class);
boolean available = bridgeConfig.getBridges().stream()
- .filter(bridge -> bridge.name().equals(ROUTER_BRIDGE))
- .findAny()
- .isPresent();
-
+ .anyMatch(bridge -> bridge.name().equals(ROUTER_BRIDGE));
print("%s %s=%s available=%s",
available ? MSG_OK : MSG_NO,
ROUTER_BRIDGE,
- node.routerBridge().get(),
+ osNode.routerBridge(),
available);
-
- print(getPortStateOvsdb(deviceService, node.ovsdbId(), PATCH_ROUT_BRIDGE));
- print(getPortStateOvsdb(deviceService, node.ovsdbId(), node.uplink().get()));
+ print(getPortStateOvsdb(deviceService, osNode.ovsdb(), PATCH_ROUT_BRIDGE));
}
}
}
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 8f4dbb1..85da391 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
@@ -19,10 +19,10 @@
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.openstacknode.OpenstackNode;
-import org.onosproject.openstacknode.OpenstackNodeService;
-
-import java.util.NoSuchElementException;
+import org.onosproject.openstacknode.api.NodeState;
+import org.onosproject.openstacknode.api.OpenstackNode;
+import org.onosproject.openstacknode.api.OpenstackNodeAdminService;
+import org.onosproject.openstacknode.api.OpenstackNodeService;
/**
* Initializes nodes for OpenStack node service.
@@ -37,21 +37,19 @@
@Override
protected void execute() {
- OpenstackNodeService nodeService = AbstractShellCommand.get(OpenstackNodeService.class);
+ OpenstackNodeService osNodeService =
+ AbstractShellCommand.get(OpenstackNodeService.class);
+ OpenstackNodeAdminService osNodeAdminService =
+ AbstractShellCommand.get(OpenstackNodeAdminService.class);
for (String hostname : hostnames) {
- OpenstackNode node;
- try {
- node = nodeService.nodes()
- .stream()
- .filter(n -> n.hostname().equals(hostname))
- .findFirst().get();
- } catch (NoSuchElementException e) {
+ OpenstackNode osNode = osNodeService.node(hostname);
+ if (osNode == null) {
print("Unable to find %s", hostname);
continue;
}
-
- nodeService.addOrUpdateNode(node);
+ OpenstackNode updated = osNode.updateState(NodeState.INIT);
+ osNodeAdminService.updateNode(updated);
}
}
}
diff --git a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
index 65a77e6..ceed2a7 100644
--- a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
+++ b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
@@ -19,11 +19,13 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.google.common.collect.Lists;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.openstacknode.OpenstackNode;
-import org.onosproject.openstacknode.OpenstackNodeService;
+import org.onosproject.openstacknode.api.OpenstackNode;
+import org.onosproject.openstacknode.api.OpenstackNodeService;
+import java.util.Comparator;
import java.util.List;
/**
@@ -37,43 +39,45 @@
@Override
protected void execute() {
- OpenstackNodeService nodeService = AbstractShellCommand.get(OpenstackNodeService.class);
- List<OpenstackNode> nodes = nodeService.nodes();
- nodes.sort(OpenstackNode.OPENSTACK_NODE_COMPARATOR);
+ OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
+ List<OpenstackNode> osNodes = Lists.newArrayList(osNodeService.nodes());
+ osNodes.sort(Comparator.comparing(OpenstackNode::hostname));
if (outputJson()) {
- print("%s", json(nodes));
+ print("%s", json(osNodes));
} else {
print(FORMAT, "Hostname", "Type", "Integration Bridge", "Router Bridge",
"Management IP", "Data IP", "VLAN Intf", "State");
- for (OpenstackNode node : nodes) {
+ for (OpenstackNode osNode : osNodes) {
print(FORMAT,
- node.hostname(),
- node.type(),
- node.intBridge(),
- node.routerBridge().isPresent() ? node.routerBridge().get() : "",
- node.managementIp(),
- node.dataIp().isPresent() ? node.dataIp().get() : "",
- node.vlanPort().isPresent() ? node.vlanPort().get() : "",
- node.state());
+ osNode.hostname(),
+ osNode.type(),
+ osNode.intgBridge(),
+ osNode.routerBridge() != null ? osNode.routerBridge() : "",
+ osNode.managementIp(),
+ osNode.dataIp() != null ? osNode.dataIp() : "",
+ osNode.vlanIntf() != null ? osNode.vlanIntf() : "",
+ osNode.state());
}
- print("Total %s nodes", nodeService.nodes().size());
+ print("Total %s nodes", osNodeService.nodes().size());
}
}
- private JsonNode json(List<OpenstackNode> nodes) {
+ private JsonNode json(List<OpenstackNode> osNodes) {
ObjectMapper mapper = new ObjectMapper();
ArrayNode result = mapper.createArrayNode();
- for (OpenstackNode node : nodes) {
+ for (OpenstackNode osNode : osNodes) {
result.add(mapper.createObjectNode()
- .put("hostname", node.hostname())
- .put("type", node.type().name())
- .put("intBridge", node.intBridge().toString())
- .put("routerBridge", node.routerBridge().toString())
- .put("managementIp", node.managementIp().toString())
- .put("dataIp", node.dataIp().toString())
- .put("vlanPort", node.vlanPort().toString())
- .put("state", node.state().name()));
+ .put("hostname", osNode.hostname())
+ .put("type", osNode.type().name())
+ .put("integrationBridge", osNode.intgBridge().toString())
+ .put("routerBridge", osNode.routerBridge().toString())
+ .put("managementIp", osNode.managementIp().toString())
+ .put("dataIp", osNode.dataIp().toString())
+ .put("vlanIntf", osNode.vlanIntf())
+ .put("tunnelPortNum", osNode.tunnelPortNum().toString())
+ .put("vlanPortNum", osNode.vlanPortNum().toString())
+ .put("state", osNode.state().name()));
}
return result;
}