Fix: retrieve port bridge port MAC from deviceService rather via ovsdb
1. Derive gateway IP address from POD subnet CIDR.
2. Remove the logic of injecting gateway IP address.
Change-Id: Ice44c1c4b41bc1689954041aee6441a379e5bacd
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sNetworkCodec.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sNetworkCodec.java
index b9984bf..07e85da 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sNetworkCodec.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/codec/K8sNetworkCodec.java
@@ -15,8 +15,8 @@
*/
package org.onosproject.k8snetworking.codec;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.onlab.packet.IpAddress;
import org.onosproject.codec.CodecContext;
import org.onosproject.codec.JsonCodec;
import org.onosproject.k8snetworking.api.DefaultK8sNetwork;
@@ -39,7 +39,6 @@
private static final String TYPE = "type";
private static final String MTU = "mtu";
private static final String SEGMENT_ID = "segmentId";
- private static final String GATEWAY_IP = "gatewayIp";
private static final String CIDR = "cidr";
private static final String MISSING_MESSAGE = " is required in K8sNetwork";
@@ -51,11 +50,16 @@
ObjectNode result = context.mapper().createObjectNode()
.put(NETWORK_ID, network.networkId())
.put(NAME, network.name())
- .put(TYPE, network.type().name())
- .put(SEGMENT_ID, network.segmentId())
- .put(GATEWAY_IP, network.gatewayIp().toString())
.put(CIDR, network.cidr());
+ if (network.type() != null) {
+ result.put(TYPE, network.type().name());
+ }
+
+ if (network.segmentId() != null) {
+ result.put(SEGMENT_ID, network.segmentId());
+ }
+
if (network.mtu() != null) {
result.put(MTU, network.mtu());
}
@@ -73,23 +77,25 @@
NETWORK_ID + MISSING_MESSAGE);
String name = nullIsIllegal(json.get(NAME).asText(),
NAME + MISSING_MESSAGE);
- String type = nullIsIllegal(json.get(TYPE).asText(),
- TYPE + MISSING_MESSAGE);
- String segmentId = nullIsIllegal(json.get(SEGMENT_ID).asText(),
- SEGMENT_ID + MISSING_MESSAGE);
- String gatewayIp = nullIsIllegal(json.get(GATEWAY_IP).asText(),
- GATEWAY_IP + MISSING_MESSAGE);
String cidr = nullIsIllegal(json.get(CIDR).asText(),
CIDR + MISSING_MESSAGE);
+ JsonNode type = json.get(TYPE);
+ JsonNode segmentId = json.get(SEGMENT_ID);
+
DefaultK8sNetwork.Builder networkBuilder = DefaultK8sNetwork.builder()
.networkId(networkId)
.name(name)
- .type(K8sNetwork.Type.valueOf(type))
- .segmentId(segmentId)
- .gatewayIp(IpAddress.valueOf(gatewayIp))
.cidr(cidr);
+ if (type != null) {
+ networkBuilder.type(K8sNetwork.Type.valueOf(type.asText()));
+ }
+
+ if (segmentId != null) {
+ networkBuilder.segmentId(segmentId.asText());
+ }
+
if (json.get(MTU) != null) {
networkBuilder.mtu(json.get(MTU).asInt());
}
diff --git a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkCodecTest.java b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkCodecTest.java
index fa894de..3055a91 100644
--- a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkCodecTest.java
+++ b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkCodecTest.java
@@ -21,7 +21,6 @@
import org.hamcrest.MatcherAssert;
import org.junit.Before;
import org.junit.Test;
-import org.onlab.packet.IpAddress;
import org.onosproject.codec.CodecContext;
import org.onosproject.codec.JsonCodec;
import org.onosproject.codec.impl.CodecManager;
@@ -82,8 +81,7 @@
.name("network-1")
.segmentId("1")
.type(K8sNetwork.Type.VXLAN)
- .gatewayIp(IpAddress.valueOf("10.10.10.1"))
- .cidr("32")
+ .cidr("10.10.0.0/24")
.mtu(1500)
.build();
@@ -102,8 +100,8 @@
assertEquals("network-1", network.name());
assertEquals("1", network.segmentId());
assertEquals("VXLAN", network.type().name());
- assertEquals("10.10.10.1", network.gatewayIp().toString());
- assertEquals("32", network.cidr());
+ assertEquals("10.10.0.1", network.gatewayIp().toString());
+ assertEquals("10.10.0.0/24", network.cidr());
assertThat(network.mtu(), is(1500));
}
diff --git a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkJsonMatcher.java b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkJsonMatcher.java
index 73f2e58..1f3526f 100644
--- a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkJsonMatcher.java
+++ b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/codec/K8sNetworkJsonMatcher.java
@@ -32,7 +32,6 @@
private static final String TYPE = "type";
private static final String MTU = "mtu";
private static final String SEGMENT_ID = "segmentId";
- private static final String GATEWAY_IP = "gatewayIp";
private static final String CIDR = "cidr";
private K8sNetworkJsonMatcher(K8sNetwork network) {
@@ -59,11 +58,13 @@
}
// check type
- String jsonType = jsonNode.get(TYPE).asText();
- String type = network.type().name();
- if (!jsonType.equals(type)) {
- description.appendText("network type was " + jsonType);
- return false;
+ JsonNode jsonType = jsonNode.get(TYPE);
+ if (jsonType != null) {
+ String type = network.type().name();
+ if (!jsonType.asText().equals(type)) {
+ description.appendText("network type was " + jsonType);
+ return false;
+ }
}
// check MTU
@@ -75,19 +76,13 @@
}
// check segment ID
- String jsonSegmentId = jsonNode.get(SEGMENT_ID).asText();
- String segmentId = network.segmentId();
- if (!jsonSegmentId.equals(segmentId)) {
- description.appendText("segment ID was " + jsonSegmentId);
- return false;
- }
-
- // check gateway IP
- String jsonGatewayIp = jsonNode.get(GATEWAY_IP).asText();
- String gatewayIp = network.gatewayIp().toString();
- if (!jsonGatewayIp.equals(gatewayIp)) {
- description.appendText("gateway IP was " + jsonGatewayIp);
- return false;
+ JsonNode jsonSegmentId = jsonNode.get(SEGMENT_ID);
+ if (jsonSegmentId != null) {
+ String segmentId = network.segmentId();
+ if (!jsonSegmentId.asText().equals(segmentId)) {
+ description.appendText("segment ID was " + jsonSegmentId);
+ return false;
+ }
}
// check CIDR
diff --git a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/impl/K8sNetworkManagerTest.java b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/impl/K8sNetworkManagerTest.java
index 874899b..468f682 100644
--- a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/impl/K8sNetworkManagerTest.java
+++ b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/impl/K8sNetworkManagerTest.java
@@ -67,8 +67,7 @@
.name(NETWORK_NAME)
.type(K8sNetwork.Type.VXLAN)
.segmentId("1")
- .gatewayIp(IpAddress.valueOf("10.10.10.1"))
- .cidr("32")
+ .cidr("10.10.0.0/24")
.mtu(1500)
.build();
private static final K8sNetwork NETWORK_UPDATED = DefaultK8sNetwork.builder()
@@ -76,8 +75,7 @@
.name(UPDATED_NAME)
.type(K8sNetwork.Type.VXLAN)
.segmentId("1")
- .gatewayIp(IpAddress.valueOf("10.10.10.1"))
- .cidr("32")
+ .cidr("10.10.0.0/24")
.mtu(1500)
.build();
diff --git a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/web/K8sNetworkWebResourceTest.java b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/web/K8sNetworkWebResourceTest.java
index 9a4ca67..77153c3 100644
--- a/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/web/K8sNetworkWebResourceTest.java
+++ b/apps/k8s-networking/app/src/test/java/org/onosproject/k8snetworking/web/K8sNetworkWebResourceTest.java
@@ -20,7 +20,6 @@
import org.junit.Test;
import org.onlab.osgi.ServiceDirectory;
import org.onlab.osgi.TestServiceDirectory;
-import org.onlab.packet.IpAddress;
import org.onosproject.codec.CodecService;
import org.onosproject.codec.impl.CodecManager;
import org.onosproject.k8snetworking.api.DefaultK8sNetwork;
@@ -80,8 +79,7 @@
.name("sona-network")
.type(K8sNetwork.Type.VXLAN)
.segmentId("1")
- .cidr("10.10.10.0/24")
- .gatewayIp(IpAddress.valueOf("10.10.10.1"))
+ .cidr("10.10.0.0/24")
.mtu(1500)
.build();
}
diff --git a/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/codec/K8sNetwork.json b/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/codec/K8sNetwork.json
index 6efe965..136c9e3 100644
--- a/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/codec/K8sNetwork.json
+++ b/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/codec/K8sNetwork.json
@@ -4,6 +4,5 @@
"type": "VXLAN",
"mtu": 1500,
"segmentId": "1",
- "gatewayIp": "10.10.10.1",
- "cidr": "32"
+ "cidr": "10.10.0.0/24"
}
\ No newline at end of file
diff --git a/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/web/k8s-network.json b/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/web/k8s-network.json
index 6efe965..136c9e3 100644
--- a/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/web/k8s-network.json
+++ b/apps/k8s-networking/app/src/test/resources/org/onosproject/k8snetworking/web/k8s-network.json
@@ -4,6 +4,5 @@
"type": "VXLAN",
"mtu": 1500,
"segmentId": "1",
- "gatewayIp": "10.10.10.1",
- "cidr": "32"
+ "cidr": "10.10.0.0/24"
}
\ No newline at end of file