Support NodePort communication model at k8s passthrough mode
Change-Id: I2179ebc9a4812493619c56aa270d8fc4821efbb2
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
index 4f4e6bf..6e00655 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
@@ -24,6 +24,7 @@
import org.onosproject.codec.JsonCodec;
import org.onosproject.k8snode.api.DefaultK8sNode;
import org.onosproject.k8snode.api.K8sNode;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sNodeState;
import org.onosproject.net.DeviceId;
import org.slf4j.Logger;
@@ -49,6 +50,7 @@
private static final String MANAGEMENT_IP = "managementIp";
private static final String DATA_IP = "dataIp";
private static final String NODE_IP = "nodeIp";
+ private static final String NODE_MAC = "nodeMac";
private static final String INTEGRATION_BRIDGE = "integrationBridge";
private static final String EXTERNAL_BRIDGE = "externalBridge";
private static final String LOCAL_BRIDGE = "localBridge";
@@ -95,6 +97,10 @@
result.put(DATA_IP, node.dataIp().toString());
}
+ if (node.nodeMac() != null) {
+ result.put(NODE_MAC, node.nodeMac().toString());
+ }
+
if (node.extIntf() != null) {
result.put(EXTERNAL_INTF, node.extIntf());
}
@@ -135,13 +141,15 @@
String nIp = nullIsIllegal(json.get(NODE_IP).asText(),
NODE_IP + MISSING_MESSAGE);
+ K8sNodeInfo nodeInfo = new K8sNodeInfo(IpAddress.valueOf(nIp), null);
+
DefaultK8sNode.Builder nodeBuilder = DefaultK8sNode.builder()
.clusterName(clusterName)
.hostname(hostname)
.type(K8sNode.Type.valueOf(type))
.state(K8sNodeState.INIT)
.managementIp(IpAddress.valueOf(mIp))
- .nodeIp(IpAddress.valueOf(nIp));
+ .nodeInfo(nodeInfo);
if (json.get(DATA_IP) != null) {
nodeBuilder.dataIp(IpAddress.valueOf(json.get(DATA_IP).asText()));
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
index 30606f0..c688740 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
@@ -39,6 +39,7 @@
import org.onosproject.k8snode.api.K8sHostState;
import org.onosproject.k8snode.api.K8sNode;
import org.onosproject.k8snode.api.K8sNodeAdminService;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sRouterBridge;
import org.onosproject.k8snode.api.K8sTunnelBridge;
import org.osgi.service.component.annotations.Activate;
@@ -274,7 +275,7 @@
.hostname(hostname)
.managementIp(managementIp)
.dataIp(dataIp)
- .nodeIp(nodeIp)
+ .nodeInfo(new K8sNodeInfo(nodeIp, null))
.extIntf(extIntf)
.type(nodeType)
.segmentId(config.segmentId())
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DistributedK8sNodeStore.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DistributedK8sNodeStore.java
index 8d3e926..90ec2a0 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DistributedK8sNodeStore.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DistributedK8sNodeStore.java
@@ -25,6 +25,7 @@
import org.onosproject.k8snode.api.K8sExternalNetwork;
import org.onosproject.k8snode.api.K8sNode;
import org.onosproject.k8snode.api.K8sNodeEvent;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sNodeState;
import org.onosproject.k8snode.api.K8sNodeStore;
import org.onosproject.k8snode.api.K8sNodeStoreDelegate;
@@ -79,6 +80,7 @@
.register(K8sNode.class)
.register(DefaultK8sNode.class)
.register(K8sNode.Type.class)
+ .register(K8sNodeInfo.class)
.register(K8sNodeState.class)
.register(K8sApiConfig.Mode.class)
.register(K8sExternalNetwork.class)
diff --git a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeCodecTest.java b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeCodecTest.java
index ae31130..d2061d2 100644
--- a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeCodecTest.java
+++ b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeCodecTest.java
@@ -28,6 +28,7 @@
import org.onosproject.core.CoreService;
import org.onosproject.k8snode.api.DefaultK8sNode;
import org.onosproject.k8snode.api.K8sNode;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sNodeState;
import org.onosproject.net.DeviceId;
@@ -86,7 +87,7 @@
.state(K8sNodeState.INIT)
.managementIp(IpAddress.valueOf("10.10.10.1"))
.dataIp(IpAddress.valueOf("20.20.20.2"))
- .nodeIp(IpAddress.valueOf("30.30.30.3"))
+ .nodeInfo(new K8sNodeInfo(IpAddress.valueOf("30.30.30.3"), null))
.intgBridge(DeviceId.deviceId("kbr-int"))
.extIntf("eth1")
.extBridgeIp(IpAddress.valueOf("10.10.10.5"))
diff --git a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/impl/K8sNodeManagerTest.java b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/impl/K8sNodeManagerTest.java
index e336164..a1df1b6 100644
--- a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/impl/K8sNodeManagerTest.java
+++ b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/impl/K8sNodeManagerTest.java
@@ -23,6 +23,7 @@
import org.onlab.junit.TestUtils;
import org.onlab.packet.ChassisId;
import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
import org.onosproject.cluster.ClusterServiceAdapter;
import org.onosproject.cluster.LeadershipServiceAdapter;
import org.onosproject.core.ApplicationId;
@@ -32,6 +33,7 @@
import org.onosproject.k8snode.api.DefaultK8sNode;
import org.onosproject.k8snode.api.K8sNode;
import org.onosproject.k8snode.api.K8sNodeEvent;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sNodeListener;
import org.onosproject.k8snode.api.K8sNodeState;
import org.onosproject.net.DefaultDevice;
@@ -74,6 +76,10 @@
private static final String MINION_2_HOSTNAME = "minion_2";
private static final String MINION_3_HOSTNAME = "minion_3";
+ private static final IpAddress NODE_IP = IpAddress.valueOf("30.30.30.30");
+ private static final MacAddress NODE_MAC = MacAddress.valueOf("fa:00:00:00:00:08");
+ private static final K8sNodeInfo NODE_INFO = new K8sNodeInfo(NODE_IP, NODE_MAC);
+
private static final Device MINION_1_INTG_DEVICE = createDevice(1);
private static final Device MINION_2_INTG_DEVICE = createDevice(2);
private static final Device MINION_3_INTG_DEVICE = createDevice(3);
@@ -100,6 +106,7 @@
MINION_1_LOCAL_DEVICE,
MINION_1_TUN_DEVICE,
IpAddress.valueOf("10.100.0.1"),
+ NODE_INFO,
INIT
);
private static final K8sNode MINION_2 = createNode(
@@ -111,6 +118,7 @@
MINION_2_LOCAL_DEVICE,
MINION_2_TUN_DEVICE,
IpAddress.valueOf("10.100.0.2"),
+ NODE_INFO,
INIT
);
private static final K8sNode MINION_3 = createNode(
@@ -122,6 +130,7 @@
MINION_3_LOCAL_DEVICE,
MINION_3_TUN_DEVICE,
IpAddress.valueOf("10.100.0.3"),
+ NODE_INFO,
COMPLETE
);
@@ -349,7 +358,8 @@
private static K8sNode createNode(String clusterName, String hostname, K8sNode.Type type,
Device intgBridge, Device extBridge,
Device localBridge, Device tunBridge,
- IpAddress ipAddr, K8sNodeState state) {
+ IpAddress ipAddr, K8sNodeInfo nodeInfo,
+ K8sNodeState state) {
return DefaultK8sNode.builder()
.hostname(hostname)
.clusterName(clusterName)
@@ -360,7 +370,7 @@
.tunBridge(tunBridge.id())
.managementIp(ipAddr)
.dataIp(ipAddr)
- .nodeIp(ipAddr)
+ .nodeInfo(nodeInfo)
.state(state)
.build();
}
diff --git a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/web/K8sNodeWebResourceTest.java b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/web/K8sNodeWebResourceTest.java
index 9908e99..b99c881 100644
--- a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/web/K8sNodeWebResourceTest.java
+++ b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/web/K8sNodeWebResourceTest.java
@@ -30,6 +30,7 @@
import org.onosproject.k8snode.api.K8sApiConfigAdminService;
import org.onosproject.k8snode.api.K8sNode;
import org.onosproject.k8snode.api.K8sNodeAdminService;
+import org.onosproject.k8snode.api.K8sNodeInfo;
import org.onosproject.k8snode.api.K8sNodeState;
import org.onosproject.k8snode.codec.HostNodesInfoCodec;
import org.onosproject.k8snode.codec.K8sApiConfigCodec;
@@ -97,7 +98,7 @@
.type(K8sNode.Type.MINION)
.dataIp(IpAddress.valueOf("10.134.34.222"))
.managementIp(IpAddress.valueOf("10.134.231.30"))
- .nodeIp(IpAddress.valueOf("30.30.30.3"))
+ .nodeInfo(new K8sNodeInfo(IpAddress.valueOf("30.30.30.3"), null))
.intgBridge(DeviceId.deviceId("of:00000000000000a1"))
.extBridge(DeviceId.deviceId("of:00000000000000b1"))
.state(K8sNodeState.INIT)