Listen on k8s port event to create instance port and host
Change-Id: I59ab1f5f422ce2ba8f5432279ceec6d77cd96f06
diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
index 7e4b4bc..6bb2001 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
@@ -190,7 +190,24 @@
@Override
public DeviceId tunBridge() {
- return tunBridge;
+
+ if (mode == PASSTHROUGH) {
+ K8sHostService hostService =
+ DefaultServiceDirectory.getService(K8sHostService.class);
+ DeviceId deviceId = null;
+ for (K8sHost host : hostService.hosts()) {
+ if (host.nodeNames().contains(hostname())) {
+ for (K8sTunnelBridge bridge : host.tunBridges()) {
+ if (bridge.tunnelId() == segmentId()) {
+ deviceId = bridge.deviceId();
+ }
+ }
+ }
+ }
+ return deviceId;
+ } else {
+ return tunBridge;
+ }
}
@Override
@@ -403,7 +420,28 @@
@Override
public PortNumber tunToIntgPortNum() {
- return portNumber(tunBridge, tunToIntgPatchPortName());
+ if (mode() == PASSTHROUGH) {
+ K8sHostService hostService =
+ DefaultServiceDirectory.getService(K8sHostService.class);
+ Port port = null;
+ for (K8sHost host : hostService.hosts()) {
+ if (host.nodeNames().contains(hostname())) {
+ for (K8sTunnelBridge bridge : host.tunBridges()) {
+ if (bridge.tunnelId() == segmentId()) {
+ port = port(bridge.deviceId(), tunToIntgPatchPortName());
+ }
+ }
+ }
+ }
+
+ if (port == null) {
+ return null;
+ } else {
+ return port.number();
+ }
+ } else {
+ return portNumber(tunBridge, tunToIntgPatchPortName());
+ }
}
@Override