Add node IP attribute in k8s node class with minor code refactoring
Change-Id: I4c1c86c95acfeb38569b91c1677e4ce8af90460f
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 2a938e0..4f4e6bf 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
@@ -48,6 +48,7 @@
private static final String SEGMENT_ID = "segmentId";
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 INTEGRATION_BRIDGE = "integrationBridge";
private static final String EXTERNAL_BRIDGE = "externalBridge";
private static final String LOCAL_BRIDGE = "localBridge";
@@ -71,7 +72,8 @@
.put(MODE, node.mode().name())
.put(SEGMENT_ID, node.segmentId())
.put(STATE, node.state().name())
- .put(MANAGEMENT_IP, node.managementIp().toString());
+ .put(MANAGEMENT_IP, node.managementIp().toString())
+ .put(NODE_IP, node.nodeIp().toString());
if (node.intgBridge() != null) {
result.put(INTEGRATION_BRIDGE, node.intgBridge().toString());
@@ -130,13 +132,16 @@
TYPE + MISSING_MESSAGE);
String mIp = nullIsIllegal(json.get(MANAGEMENT_IP).asText(),
MANAGEMENT_IP + MISSING_MESSAGE);
+ String nIp = nullIsIllegal(json.get(NODE_IP).asText(),
+ NODE_IP + MISSING_MESSAGE);
DefaultK8sNode.Builder nodeBuilder = DefaultK8sNode.builder()
.clusterName(clusterName)
.hostname(hostname)
.type(K8sNode.Type.valueOf(type))
.state(K8sNodeState.INIT)
- .managementIp(IpAddress.valueOf(mIp));
+ .managementIp(IpAddress.valueOf(mIp))
+ .nodeIp(IpAddress.valueOf(nIp));
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 bf81f85a..30606f0 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
@@ -203,6 +203,7 @@
String hostname = node.getMetadata().getName();
IpAddress managementIp = null;
IpAddress dataIp = null;
+ IpAddress nodeIp = null;
// pass-through mode: we use host IP as the management and data IP
// normal mode: we use K8S node's internal IP as the management and data IP
@@ -215,11 +216,17 @@
managementIp = info.hostIp();
dataIp = info.hostIp();
}
+ for (NodeAddress nodeAddress:node.getStatus().getAddresses()) {
+ if (nodeAddress.getType().equals(INTERNAL_IP)) {
+ nodeIp = IpAddress.valueOf(nodeAddress.getAddress());
+ }
+ }
} else {
for (NodeAddress nodeAddress:node.getStatus().getAddresses()) {
if (nodeAddress.getType().equals(INTERNAL_IP)) {
managementIp = IpAddress.valueOf(nodeAddress.getAddress());
dataIp = IpAddress.valueOf(nodeAddress.getAddress());
+ nodeIp = IpAddress.valueOf(nodeAddress.getAddress());
}
}
}
@@ -267,6 +274,7 @@
.hostname(hostname)
.managementIp(managementIp)
.dataIp(dataIp)
+ .nodeIp(nodeIp)
.extIntf(extIntf)
.type(nodeType)
.segmentId(config.segmentId())
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 6b2689d..ae31130 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
@@ -86,6 +86,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"))
.intgBridge(DeviceId.deviceId("kbr-int"))
.extIntf("eth1")
.extBridgeIp(IpAddress.valueOf("10.10.10.5"))
@@ -112,6 +113,7 @@
assertEquals(100, node.segmentId());
assertEquals("172.16.130.4", node.managementIp().toString());
assertEquals("172.16.130.4", node.dataIp().toString());
+ assertEquals("172.16.130.5", node.nodeIp().toString());
assertEquals("of:00000000000000a1", node.intgBridge().toString());
assertEquals("eth1", node.extIntf());
assertEquals("172.16.130.5", node.extBridgeIp().toString());
diff --git a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeJsonMatcher.java b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeJsonMatcher.java
index 71c5ca9..d0d97a8 100644
--- a/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeJsonMatcher.java
+++ b/apps/k8s-node/app/src/test/java/org/onosproject/k8snode/codec/K8sNodeJsonMatcher.java
@@ -35,6 +35,7 @@
private static final String SEGMENT_ID = "segmentId";
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 INTEGRATION_BRIDGE = "integrationBridge";
private static final String STATE = "state";
private static final String EXTERNAL_INTF = "externalInterface";
@@ -91,6 +92,14 @@
return false;
}
+ // check node IP
+ String jsonNodeIp = jsonNode.get(NODE_IP).asText();
+ String nodeIp = node.nodeIp().toString();
+ if (!jsonNodeIp.equals(nodeIp)) {
+ description.appendText("node IP was " + jsonNodeIp);
+ return false;
+ }
+
// check integration bridge
JsonNode jsonIntgBridge = jsonNode.get(INTEGRATION_BRIDGE);
if (jsonIntgBridge != null) {
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 0bb0258..e336164 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
@@ -360,6 +360,7 @@
.tunBridge(tunBridge.id())
.managementIp(ipAddr)
.dataIp(ipAddr)
+ .nodeIp(ipAddr)
.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 1005ab2..9908e99 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
@@ -97,6 +97,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"))
.intgBridge(DeviceId.deviceId("of:00000000000000a1"))
.extBridge(DeviceId.deviceId("of:00000000000000b1"))
.state(K8sNodeState.INIT)
diff --git a/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/codec/K8sMinionNode.json b/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/codec/K8sMinionNode.json
index fb01b77..ca78a90 100644
--- a/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/codec/K8sMinionNode.json
+++ b/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/codec/K8sMinionNode.json
@@ -5,6 +5,7 @@
"segmentId": 100,
"managementIp": "172.16.130.4",
"dataIp": "172.16.130.4",
+ "nodeIp": "172.16.130.5",
"integrationBridge": "of:00000000000000a1",
"externalBridge": "of:00000000000000b1",
"externalInterface": "eth1",
diff --git a/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/web/k8s-node-minion-config.json b/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/web/k8s-node-minion-config.json
index 1e7d4a4..08aa1b1 100644
--- a/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/web/k8s-node-minion-config.json
+++ b/apps/k8s-node/app/src/test/resources/org/onosproject/k8snode/web/k8s-node-minion-config.json
@@ -6,6 +6,7 @@
"type" : "MINION",
"managementIp" : "10.134.231.32",
"dataIp" : "10.134.34.224",
+ "nodeIp" : "30.30.30.3",
"integrationBridge" : "of:00000000000000a2",
"externalBridge" : "of:00000000000000b2"
}