Add default route option to kubevirt network
Change-Id: Ia2a2d9b34ec3c493e04d56c544c22812e32d524a
(cherry picked from commit d95d3524caff5449aded4ff9397c3ed717fc91e6)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
index dfaed15..ded79aa 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/cli/KubevirtListNetworkCommand.java
@@ -67,7 +67,7 @@
0, CLI_NAME_LENGTH - CLI_MARGIN_LENGTH),
net.type().toString(),
net.segmentId() == null ? "N/A" : net.segmentId(),
- net.gatewayIp() == null ? "" : net.gatewayIp().toString());
+ net.gatewayIp() == null ? "N/A" : net.gatewayIp().toString());
}
}
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
index f04106e..2d8a07c 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodec.java
@@ -48,6 +48,7 @@
private static final String MTU = "mtu";
private static final String SEGMENT_ID = "segmentId";
private static final String GATEWAY_IP = "gatewayIp";
+ private static final String DEFAULT_ROUTE = "defaultRoute";
private static final String CIDR = "cidr";
private static final String HOST_ROUTES = "hostRoutes";
private static final String IP_POOL = "ipPool";
@@ -65,6 +66,7 @@
.put(NAME, network.name())
.put(MTU, network.mtu())
.put(GATEWAY_IP, network.gatewayIp().toString())
+ .put(DEFAULT_ROUTE, network.defaultRoute())
.put(CIDR, network.cidr());
if (network.segmentId() != null) {
@@ -113,6 +115,8 @@
MTU + MISSING_MESSAGE);
String gatewayIp = nullIsIllegal(json.get(GATEWAY_IP).asText(),
GATEWAY_IP + MISSING_MESSAGE);
+ boolean defaultRoute = nullIsIllegal(json.get(DEFAULT_ROUTE).asBoolean(),
+ DEFAULT_ROUTE + MISSING_MESSAGE);
String cidr = nullIsIllegal(json.get(CIDR).asText(),
CIDR + MISSING_MESSAGE);
@@ -122,6 +126,7 @@
.name(name)
.mtu(mtu)
.gatewayIp(IpAddress.valueOf(gatewayIp))
+ .defaultRoute(defaultRoute)
.cidr(cidr);
if (!type.equals(KubevirtNetwork.Type.FLAT.name())) {
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
index 983a5bb..1a2b7d7 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtDhcpHandler.java
@@ -411,8 +411,8 @@
}
// Sets the default router address up.
- // Performs only if the gateway is set in subnet.
- if (network.gatewayIp() != null) {
+ // Performs only if the gateway is set and default route is configure to true.
+ if (network.gatewayIp() != null && network.defaultRoute()) {
options.add(doRouterAddr(network));
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
index d4a90a5..992f2f4 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
@@ -649,7 +649,6 @@
return;
}
-
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
.matchEthType(Ethernet.TYPE_IPV4)
.matchIPProtocol(IPv4.PROTOCOL_ICMP)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
index da66b0e..7d40fee 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
@@ -74,6 +74,7 @@
private static final String MTU = "mtu";
private static final String SEGMENT_ID = "segmentId";
private static final String GATEWAY_IP = "gatewayIp";
+ private static final String DEFAULT_ROUTE = "defaultRoute";
private static final String CIDR = "cidr";
private static final String HOST_ROUTES = "hostRoutes";
private static final String DESTINATION = "destination";
@@ -284,6 +285,7 @@
String type = configJson.getString(TYPE);
Integer mtu = configJson.getInt(MTU);
String gatewayIp = configJson.getString(GATEWAY_IP);
+ boolean defaultRoute = configJson.getBoolean(DEFAULT_ROUTE);
if (!type.equalsIgnoreCase(FLAT.name())) {
builder.segmentId(configJson.getString(SEGMENT_ID));
@@ -334,7 +336,8 @@
}
builder.networkId(name).name(name).type(Type.valueOf(type))
- .mtu(mtu).gatewayIp(IpAddress.valueOf(gatewayIp)).cidr(cidr);
+ .mtu(mtu).gatewayIp(IpAddress.valueOf(gatewayIp))
+ .defaultRoute(defaultRoute).cidr(cidr);
return builder.build();
}
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
index 492847a..667ca4b 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkCodecTest.java
@@ -96,6 +96,7 @@
.name("net-1")
.type(KubevirtNetwork.Type.FLAT)
.gatewayIp(IpAddress.valueOf("10.10.10.1"))
+ .defaultRoute(true)
.mtu(1500)
.cidr("10.10.10.0/24")
.hostRoutes(ImmutableSet.of(hostRoute1, hostRoute2))
@@ -121,6 +122,7 @@
assertThat(network.type().name(), is("FLAT"));
assertThat(network.cidr(), is("10.10.0.0/24"));
assertThat(network.gatewayIp().toString(), is("10.10.0.1"));
+ assertThat(network.defaultRoute(), is(true));
assertThat(network.ipPool().start().toString(), is("10.10.10.100"));
assertThat(network.ipPool().end().toString(), is("10.10.10.200"));
assertThat(network.dnses().size(), is(1));
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
index 4a67e07..7cbc587 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/codec/KubevirtNetworkJsonMatcher.java
@@ -35,6 +35,7 @@
private static final String MTU = "mtu";
private static final String SEGMENT_ID = "segmentId";
private static final String GATEWAY_IP = "gatewayIp";
+ private static final String DEFAULT_ROUTE = "defaultRoute";
private static final String CIDR = "cidr";
private static final String HOST_ROUTES = "hostRoutes";
private static final String IP_POOL = "ipPool";
@@ -86,6 +87,14 @@
return false;
}
+ // check default route
+ boolean jsonDefaultRoute = jsonNode.get(DEFAULT_ROUTE).asBoolean();
+ boolean defaultRoute = network.defaultRoute();
+ if (jsonDefaultRoute != defaultRoute) {
+ description.appendText("Default route was " + jsonDefaultRoute);
+ return false;
+ }
+
// check CIDR
String jsonCidr = jsonNode.get(CIDR).asText();
String cidr = network.cidr();
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
index 1d0c676..5474433 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManagerTest.java
@@ -61,6 +61,7 @@
private static final Integer MTU = 1500;
private static final String SEGMENT_ID = "1";
private static final IpAddress GATEWAY_IP = IpAddress.valueOf("10.10.10.1");
+ private static final boolean DEFAULT_ROUTE = true;
private static final String CIDR = "10.10.10.0/24";
private static final IpAddress IP_POOL_START = IpAddress.valueOf("10.10.10.100");
private static final IpAddress IP_POOL_END = IpAddress.valueOf("10.10.10.200");
@@ -72,6 +73,7 @@
.mtu(MTU)
.segmentId(SEGMENT_ID)
.gatewayIp(GATEWAY_IP)
+ .defaultRoute(DEFAULT_ROUTE)
.cidr(CIDR)
.ipPool(new KubevirtIpPool(IP_POOL_START, IP_POOL_END))
.hostRoutes(ImmutableSet.of())
@@ -84,6 +86,7 @@
.mtu(MTU)
.segmentId(SEGMENT_ID)
.gatewayIp(GATEWAY_IP)
+ .defaultRoute(DEFAULT_ROUTE)
.cidr(CIDR)
.ipPool(new KubevirtIpPool(IP_POOL_START, IP_POOL_END))
.hostRoutes(ImmutableSet.of())
diff --git a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
index 8a06018..b453dad 100644
--- a/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
+++ b/apps/kubevirt-networking/app/src/test/java/org/onosproject/kubevirtnetworking/web/KubevirtNetworkWebResourceTest.java
@@ -88,6 +88,7 @@
.cidr("10.10.10.0/24")
.mtu(1500)
.gatewayIp(IpAddress.valueOf("10.10.10.1"))
+ .defaultRoute(true)
.ipPool(new KubevirtIpPool(IpAddress.valueOf("10.10.10.100"),
IpAddress.valueOf("10.10.10.200")))
.build();
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
index afef160..293cfcb 100644
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
+++ b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/codec/KubevirtNetwork.json
@@ -5,6 +5,7 @@
"mtu": 1500,
"cidr": "10.10.0.0/24",
"gatewayIp": "10.10.0.1",
+ "defaultRoute": true,
"ipPool": {
"start": "10.10.10.100",
"end": "10.10.10.200"
diff --git a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
index d8a0a1f..c65236c 100644
--- a/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
+++ b/apps/kubevirt-networking/app/src/test/resources/org/onosproject/kubevirtnetworking/web/kubevirt-network.json
@@ -5,6 +5,7 @@
"mtu": 1500,
"cidr": "10.10.10.0/24",
"gatewayIp": "10.10.10.1",
+ "defaultRoute": true,
"ipPool": {
"start": "10.10.10.100",
"end": "10.10.10.200"