mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-05-05 12:16:13 +02:00
Add default route option to kubevirt network
Change-Id: Ia2a2d9b34ec3c493e04d56c544c22812e32d524a (cherry picked from commit d95d3524caff5449aded4ff9397c3ed717fc91e6)
This commit is contained in:
parent
06aac70fd2
commit
e2abe810d6
@ -53,6 +53,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
private final Integer mtu;
|
||||
private final String segmentId;
|
||||
private final IpAddress gatewayIp;
|
||||
private final boolean defaultRoute;
|
||||
private final String cidr;
|
||||
private final Set<KubevirtHostRoute> hostRoutes;
|
||||
private final KubevirtIpPool ipPool;
|
||||
@ -67,6 +68,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
* @param mtu network MTU
|
||||
* @param segmentId segment identifier
|
||||
* @param gatewayIp gateway IP address
|
||||
* @param defaultRoute default route
|
||||
* @param cidr CIDR of network
|
||||
* @param hostRoutes a set of host routes
|
||||
* @param ipPool IP pool
|
||||
@ -74,7 +76,8 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
*/
|
||||
public DefaultKubevirtNetwork(String networkId, Type type, String name,
|
||||
Integer mtu, String segmentId, IpAddress gatewayIp,
|
||||
String cidr, Set<KubevirtHostRoute> hostRoutes,
|
||||
boolean defaultRoute, String cidr,
|
||||
Set<KubevirtHostRoute> hostRoutes,
|
||||
KubevirtIpPool ipPool, Set<IpAddress> dnses) {
|
||||
this.networkId = networkId;
|
||||
this.type = type;
|
||||
@ -82,6 +85,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
this.mtu = mtu;
|
||||
this.segmentId = segmentId;
|
||||
this.gatewayIp = gatewayIp;
|
||||
this.defaultRoute = defaultRoute;
|
||||
this.cidr = cidr;
|
||||
this.hostRoutes = hostRoutes;
|
||||
this.ipPool = ipPool;
|
||||
@ -132,6 +136,11 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean defaultRoute() {
|
||||
return defaultRoute;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KubevirtIpPool ipPool() {
|
||||
return ipPool;
|
||||
@ -196,7 +205,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
DefaultKubevirtNetwork that = (DefaultKubevirtNetwork) o;
|
||||
return networkId.equals(that.networkId) && type == that.type &&
|
||||
name.equals(that.name) && mtu.equals(that.mtu) &&
|
||||
gatewayIp.equals(that.gatewayIp) &&
|
||||
gatewayIp.equals(that.gatewayIp) && defaultRoute == that.defaultRoute &&
|
||||
cidr.equals(that.cidr) && hostRoutes.equals(that.hostRoutes) &&
|
||||
ipPool.equals(that.ipPool) &&
|
||||
dnses.equals(that.dnses);
|
||||
@ -205,7 +214,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(networkId, type, name, mtu, segmentId, gatewayIp,
|
||||
cidr, hostRoutes, ipPool, dnses);
|
||||
defaultRoute, cidr, hostRoutes, ipPool, dnses);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -217,6 +226,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
.add("mtu", mtu)
|
||||
.add("segmentId", segmentId)
|
||||
.add("gatewayIp", gatewayIp)
|
||||
.add("defaultRoute", defaultRoute)
|
||||
.add("cidr", cidr)
|
||||
.add("hostRouts", hostRoutes)
|
||||
.add("ipPool", ipPool)
|
||||
@ -263,6 +273,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
private Integer mtu;
|
||||
private String segmentId;
|
||||
private IpAddress gatewayIp;
|
||||
private boolean defaultRoute;
|
||||
private String cidr;
|
||||
private Set<KubevirtHostRoute> hostRouts;
|
||||
private KubevirtIpPool ipPool;
|
||||
@ -274,7 +285,6 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
checkArgument(type != null, NOT_NULL_MSG, "type");
|
||||
checkArgument(name != null, NOT_NULL_MSG, "name");
|
||||
checkArgument(mtu != null, NOT_NULL_MSG, "mtu");
|
||||
checkArgument(gatewayIp != null, NOT_NULL_MSG, "gatewayIp");
|
||||
checkArgument(cidr != null, NOT_NULL_MSG, "cidr");
|
||||
checkArgument(ipPool != null, NOT_NULL_MSG, "ipPool");
|
||||
|
||||
@ -287,7 +297,7 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
}
|
||||
|
||||
return new DefaultKubevirtNetwork(networkId, type, name, mtu, segmentId,
|
||||
gatewayIp, cidr, hostRouts, ipPool, dnses);
|
||||
gatewayIp, defaultRoute, cidr, hostRouts, ipPool, dnses);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -326,6 +336,12 @@ public final class DefaultKubevirtNetwork implements KubevirtNetwork {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KubevirtNetwork.Builder defaultRoute(boolean flag) {
|
||||
this.defaultRoute = flag;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder cidr(String cidr) {
|
||||
this.cidr = cidr;
|
||||
|
||||
@ -113,6 +113,13 @@ public interface KubevirtNetwork {
|
||||
*/
|
||||
Set<KubevirtHostRoute> hostRoutes();
|
||||
|
||||
/**
|
||||
* Returns default route flag.
|
||||
*
|
||||
* @return default route
|
||||
*/
|
||||
boolean defaultRoute();
|
||||
|
||||
/**
|
||||
* Returns the IP pool.
|
||||
*
|
||||
@ -219,6 +226,14 @@ public interface KubevirtNetwork {
|
||||
*/
|
||||
Builder gatewayIp(IpAddress ipAddress);
|
||||
|
||||
/**
|
||||
* Returns network builder with supplied default route flag.
|
||||
*
|
||||
* @param flag default route
|
||||
* @return network builder
|
||||
*/
|
||||
Builder defaultRoute(boolean flag);
|
||||
|
||||
/**
|
||||
* Returns network builder with supplied network CIDR.
|
||||
*
|
||||
|
||||
@ -43,6 +43,8 @@ public class DefaultKubevirtNetworkTest {
|
||||
private static final String SEGMENT_ID_2 = "2";
|
||||
private static final IpAddress GATEWAY_IP_1 = IpAddress.valueOf("10.10.10.1");
|
||||
private static final IpAddress GATEWAY_IP_2 = IpAddress.valueOf("20.20.20.1");
|
||||
private static final boolean DEFAULT_ROUTE_1 = true;
|
||||
private static final boolean DEFAULT_ROUTE_2 = false;
|
||||
private static final String CIDR_1 = "10.10.10.0/24";
|
||||
private static final String CIDR_2 = "20.20.20.0/24";
|
||||
private static final IpAddress IP_POOL_START_1 = IpAddress.valueOf("10.10.10.100");
|
||||
@ -76,6 +78,7 @@ public class DefaultKubevirtNetworkTest {
|
||||
.mtu(MTU_1)
|
||||
.segmentId(SEGMENT_ID_1)
|
||||
.gatewayIp(GATEWAY_IP_1)
|
||||
.defaultRoute(DEFAULT_ROUTE_1)
|
||||
.cidr(CIDR_1)
|
||||
.ipPool(new KubevirtIpPool(IP_POOL_START_1, IP_POOL_END_1))
|
||||
.hostRoutes(ImmutableSet.of())
|
||||
@ -89,6 +92,7 @@ public class DefaultKubevirtNetworkTest {
|
||||
.mtu(MTU_1)
|
||||
.segmentId(SEGMENT_ID_1)
|
||||
.gatewayIp(GATEWAY_IP_1)
|
||||
.defaultRoute(DEFAULT_ROUTE_1)
|
||||
.cidr(CIDR_1)
|
||||
.ipPool(new KubevirtIpPool(IP_POOL_START_1, IP_POOL_END_1))
|
||||
.hostRoutes(ImmutableSet.of())
|
||||
@ -102,6 +106,7 @@ public class DefaultKubevirtNetworkTest {
|
||||
.mtu(MTU_2)
|
||||
.segmentId(SEGMENT_ID_2)
|
||||
.gatewayIp(GATEWAY_IP_2)
|
||||
.defaultRoute(DEFAULT_ROUTE_2)
|
||||
.cidr(CIDR_2)
|
||||
.ipPool(new KubevirtIpPool(IP_POOL_START_2, IP_POOL_END_2))
|
||||
.hostRoutes(ImmutableSet.of())
|
||||
@ -131,6 +136,7 @@ public class DefaultKubevirtNetworkTest {
|
||||
assertEquals(NAME_1, network.name());
|
||||
assertEquals(MTU_1, network.mtu());
|
||||
assertEquals(GATEWAY_IP_1, network.gatewayIp());
|
||||
assertEquals(DEFAULT_ROUTE_1, network.defaultRoute());
|
||||
assertEquals(CIDR_1, network.cidr());
|
||||
assertEquals(new KubevirtIpPool(IP_POOL_START_1, IP_POOL_END_1), network.ipPool());
|
||||
assertEquals(ImmutableSet.of(DNS_1), network.dnses());
|
||||
|
||||
@ -67,7 +67,7 @@ public class KubevirtListNetworkCommand extends AbstractShellCommand {
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ public final class KubevirtNetworkCodec extends JsonCodec<KubevirtNetwork> {
|
||||
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 @@ public final class KubevirtNetworkCodec extends JsonCodec<KubevirtNetwork> {
|
||||
.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 @@ public final class KubevirtNetworkCodec extends JsonCodec<KubevirtNetwork> {
|
||||
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 @@ public final class KubevirtNetworkCodec extends JsonCodec<KubevirtNetwork> {
|
||||
.name(name)
|
||||
.mtu(mtu)
|
||||
.gatewayIp(IpAddress.valueOf(gatewayIp))
|
||||
.defaultRoute(defaultRoute)
|
||||
.cidr(cidr);
|
||||
|
||||
if (!type.equals(KubevirtNetwork.Type.FLAT.name())) {
|
||||
|
||||
@ -411,8 +411,8 @@ public class KubevirtDhcpHandler {
|
||||
}
|
||||
|
||||
// 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));
|
||||
}
|
||||
|
||||
|
||||
@ -649,7 +649,6 @@ public class KubevirtNetworkHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4)
|
||||
.matchIPProtocol(IPv4.PROTOCOL_ICMP)
|
||||
|
||||
@ -74,6 +74,7 @@ public class NetworkAttachmentDefinitionWatcher {
|
||||
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 @@ public class NetworkAttachmentDefinitionWatcher {
|
||||
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 @@ public class NetworkAttachmentDefinitionWatcher {
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@ -96,6 +96,7 @@ public final class KubevirtNetworkCodecTest {
|
||||
.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 @@ public final class KubevirtNetworkCodecTest {
|
||||
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));
|
||||
|
||||
@ -35,6 +35,7 @@ public final class KubevirtNetworkJsonMatcher extends TypeSafeDiagnosingMatcher<
|
||||
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 @@ public final class KubevirtNetworkJsonMatcher extends TypeSafeDiagnosingMatcher<
|
||||
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();
|
||||
|
||||
@ -61,6 +61,7 @@ public class KubevirtNetworkManagerTest {
|
||||
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 @@ public class KubevirtNetworkManagerTest {
|
||||
.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 @@ public class KubevirtNetworkManagerTest {
|
||||
.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())
|
||||
|
||||
@ -88,6 +88,7 @@ public class KubevirtNetworkWebResourceTest extends ResourceTest {
|
||||
.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();
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user