[ONOS-7752] check north-south reachability for troubleshoot purpose
Change-Id: I973047c0fcd4fb241ad010fbbef9d016510b8deb
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;