Implements flow tracer in Openstack Networking UI
Change-Id: I6747de157e63b4d6ffa67274b623b29db311d2e3
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
index e8747cc..bceb9ea 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
@@ -567,6 +567,64 @@
public Set<ExternalPeerRouter> externalPeerRouters() {
return ImmutableSet.copyOf(externalPeerRouterMap.asJavaMap().values());
}
+
+ @Override
+ public IpPrefix ipPrefix(String portId) {
+ checkNotNull(portId);
+
+ Port port = port(portId);
+
+ checkNotNull(port);
+
+ IpAddress ipAddress = port.getFixedIps().stream()
+ .map(ip -> IpAddress.valueOf(ip.getIpAddress()))
+ .findAny().orElse(null);
+
+ checkNotNull(ipAddress);
+
+ Network network = network(port.getNetworkId());
+
+ checkNotNull(network);
+
+ return subnets(network.getId()).stream()
+ .map(s -> IpPrefix.valueOf(s.getCidr()))
+ .filter(prefix -> prefix.contains(ipAddress))
+ .findAny().orElse(null);
+ }
+
+ @Override
+ public String networkType(String netId) {
+ Network network = network(netId);
+
+ checkNotNull(network);
+
+ return network.getNetworkType().toString();
+ }
+
+ @Override
+ public String gatewayIp(String portId) {
+ checkNotNull(portId);
+
+ Port port = port(portId);
+
+ checkNotNull(port);
+
+ IpAddress ipAddress = port.getFixedIps().stream()
+ .map(ip -> IpAddress.valueOf(ip.getIpAddress()))
+ .findAny().orElse(null);
+
+ checkNotNull(ipAddress);
+
+ Network network = network(port.getNetworkId());
+
+ checkNotNull(network);
+
+ return subnets(network.getId()).stream()
+ .filter(s -> IpPrefix.valueOf(s.getCidr()).contains(ipAddress))
+ .map(s -> s.getGateway())
+ .findAny().orElse(null);
+ }
+
private boolean isNetworkInUse(String netId) {
return !subnets(netId).isEmpty() && !ports(netId).isEmpty();
}