[ONOS-7752] check north-south reachability for troubleshoot purpose
Change-Id: I973047c0fcd4fb241ad010fbbef9d016510b8deb
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/InstancePortService.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/InstancePortService.java
index f5ebe11..7dcbd32 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/InstancePortService.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/InstancePortService.java
@@ -66,4 +66,12 @@
* @return set of instance ports; empty list if no port exists
*/
Set<InstancePort> instancePorts(String osNetId);
+
+ /**
+ * Returns the floating IP with the supplied instance port.
+ *
+ * @param osPortId openstack port id
+ * @return openstack floating IP
+ */
+ IpAddress floatingIp(String osPortId);
}
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkService.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkService.java
index 71fc440..71d9bb1 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkService.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkService.java
@@ -156,7 +156,7 @@
String networkType(String netId);
/**
- * Returns gateway ip address upplied port ID.
+ * Returns gateway ip address with supplied port ID.
*
* @param portId openstack port id
* @return gateway ip address
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackRouterService.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackRouterService.java
index a1a8d30..18bf967 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackRouterService.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackRouterService.java
@@ -68,6 +68,7 @@
/**
* Returns the floating IP with the supplied floating IP ID.
+ *
* @param floatingIpId floating ip id
* @return openstack floating ip
*/
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
index 3f204fb..645a86d 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
@@ -45,6 +45,7 @@
import org.onosproject.openstacknetworking.api.InstancePortService;
import org.onosproject.openstacknetworking.api.InstancePortStore;
import org.onosproject.openstacknetworking.api.InstancePortStoreDelegate;
+import org.onosproject.openstacknetworking.api.OpenstackRouterService;
import org.slf4j.Logger;
import java.util.Objects;
@@ -101,6 +102,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected HostService hostService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected OpenstackRouterService routerService;
+
private final InstancePortStoreDelegate
delegate = new InternalInstancePortStoreDelegate();
private final InternalHostListener
@@ -224,6 +228,17 @@
return ImmutableSet.copyOf(ports);
}
+ @Override
+ public IpAddress floatingIp(String osPortId) {
+ checkNotNull(osPortId, ERR_NULL_INSTANCE_PORT_ID);
+
+ return routerService.floatingIps().stream()
+ .filter(fip -> osPortId.equals(fip.getPortId()))
+ .filter(fip -> fip.getFloatingIpAddress() != null)
+ .map(fip -> IpAddress.valueOf(fip.getFloatingIpAddress()))
+ .findFirst().orElse(null);
+ }
+
private boolean isInstancePortInUse(String portId) {
// TODO add checking logic
return false;
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingIcmpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingIcmpHandler.java
index b8eb339..764cefe 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingIcmpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingIcmpHandler.java
@@ -250,7 +250,7 @@
return osRouter.getExternalGatewayInfo();
}
- private void handleEchoReply(IPv4 ipPacket, ICMP icmp) {
+ private boolean handleEchoReply(IPv4 ipPacket, ICMP icmp) {
String icmpInfoKey = icmpInfoKey(icmp,
IPv4.fromIPv4Address(ipPacket.getDestinationAddress()),
IPv4.fromIPv4Address(ipPacket.getSourceAddress()));
@@ -259,8 +259,10 @@
if (icmpInfoMap.get(icmpInfoKey) != null) {
processReplyFromExternal(ipPacket, icmpInfoMap.get(icmpInfoKey).value());
icmpInfoMap.remove(icmpInfoKey);
+ return true;
} else {
- log.warn("No ICMP Info for ICMP packet");
+ log.debug("No ICMP Info for ICMP packet");
+ return false;
}
}
@@ -472,8 +474,9 @@
context.block();
break;
case TYPE_ECHO_REPLY:
- handleEchoReply(ipPacket, icmp);
- context.block();
+ if (handleEchoReply(ipPacket, icmp)) {
+ context.block();
+ }
break;
default:
break;
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/InstancePortServiceAdapter.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/InstancePortServiceAdapter.java
index 885c7d8..b0efdfa 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/InstancePortServiceAdapter.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/InstancePortServiceAdapter.java
@@ -54,6 +54,11 @@
}
@Override
+ public IpAddress floatingIp(String osPortId) {
+ return null;
+ }
+
+ @Override
public void addListener(InstancePortListener listener) {
}