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/api/BUILD b/apps/k8s-networking/api/BUILD
index 1995985..e1e477c 100644
--- a/apps/k8s-networking/api/BUILD
+++ b/apps/k8s-networking/api/BUILD
@@ -6,6 +6,7 @@
"@logging_interceptor//jar",
"@jackson_dataformat_yaml//jar",
"@snakeyaml//jar",
+ "@commons_net//jar",
]
TEST_DEPS = TEST_ADAPTERS + [
diff --git a/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sNetwork.java b/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sNetwork.java
index fef1b1c..f3c7a82 100644
--- a/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sNetwork.java
+++ b/apps/k8s-networking/api/src/main/java/org/onosproject/k8snetworking/api/DefaultK8sNetwork.java
@@ -17,6 +17,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
+import org.apache.commons.net.util.SubnetUtils;
import org.onlab.packet.IpAddress;
import static com.google.common.base.Preconditions.checkArgument;
@@ -27,6 +28,8 @@
public final class DefaultK8sNetwork implements K8sNetwork {
private static final int DEFAULT_MTU = 1500;
+ private static final Type DEFAULT_TYPE = Type.VXLAN;
+ private static final String DEFAULT_SEGMENT_ID = String.valueOf(100);
private final String networkId;
private final String name;
@@ -147,11 +150,23 @@
public K8sNetwork build() {
checkArgument(networkId != null, NOT_NULL_MSG, "networkId");
checkArgument(name != null, NOT_NULL_MSG, "name");
- checkArgument(type != null, NOT_NULL_MSG, "type");
- checkArgument(segmentId != null, NOT_NULL_MSG, "segmentId");
- checkArgument(gatewayIp != null, NOT_NULL_MSG, "gatewayIp");
+
+ // TODO: CIDR can be retrieve from k8s node info, therefore, such
+ // value injection should be purged sooner
checkArgument(cidr != null, NOT_NULL_MSG, "cidr");
+ // gateway IP address is derived from subnet CIDR
+ gatewayIp = getGatewayIp(cidr);
+
+ if (segmentId == null) {
+ segmentId = DEFAULT_SEGMENT_ID;
+ }
+
+ // VXLAN as the default tunneling protocol if not specified
+ if (type == null) {
+ type = DEFAULT_TYPE;
+ }
+
if (mtu == null) {
mtu = DEFAULT_MTU;
}
@@ -200,5 +215,13 @@
this.cidr = cidr;
return this;
}
+
+ private IpAddress getGatewayIp(String cidr) {
+ SubnetUtils utils = new SubnetUtils(cidr);
+ utils.setInclusiveHostCount(false);
+ SubnetUtils.SubnetInfo info = utils.getInfo();
+
+ return IpAddress.valueOf(info.getLowAddress());
+ }
}
}
diff --git a/apps/k8s-networking/api/src/test/java/org/onosproject/k8snetworking/api/DefaultK8sNetworkTest.java b/apps/k8s-networking/api/src/test/java/org/onosproject/k8snetworking/api/DefaultK8sNetworkTest.java
index 058bc03..df1b611 100644
--- a/apps/k8s-networking/api/src/test/java/org/onosproject/k8snetworking/api/DefaultK8sNetworkTest.java
+++ b/apps/k8s-networking/api/src/test/java/org/onosproject/k8snetworking/api/DefaultK8sNetworkTest.java
@@ -18,7 +18,6 @@
import com.google.common.testing.EqualsTester;
import org.junit.Before;
import org.junit.Test;
-import org.onlab.packet.IpAddress;
import static junit.framework.TestCase.assertEquals;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
@@ -38,10 +37,8 @@
private static final Integer MTU_2 = 1600;
private static final String SEGMENT_ID_1 = "1";
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 String CIDR_1 = "32";
- private static final String CIDR_2 = "32";
+ private static final String CIDR_1 = "10.10.0.0/24";
+ private static final String CIDR_2 = "10.10.1.0/24";
private K8sNetwork k8sNetwork1;
private K8sNetwork sameAsK8sNetwork1;
@@ -58,7 +55,6 @@
.type(TYPE_1)
.mtu(MTU_1)
.segmentId(SEGMENT_ID_1)
- .gatewayIp(GATEWAY_IP_1)
.cidr(CIDR_1)
.build();
@@ -68,7 +64,6 @@
.type(TYPE_1)
.mtu(MTU_1)
.segmentId(SEGMENT_ID_1)
- .gatewayIp(GATEWAY_IP_1)
.cidr(CIDR_1)
.build();
@@ -78,7 +73,6 @@
.type(TYPE_2)
.mtu(MTU_2)
.segmentId(SEGMENT_ID_2)
- .gatewayIp(GATEWAY_IP_2)
.cidr(CIDR_2)
.build();
}
@@ -113,7 +107,6 @@
assertEquals(TYPE_1, k8sNetwork.type());
assertEquals(MTU_1, k8sNetwork.mtu());
assertEquals(SEGMENT_ID_1, k8sNetwork.segmentId());
- assertEquals(GATEWAY_IP_1, k8sNetwork.gatewayIp());
assertEquals(CIDR_1, k8sNetwork.cidr());
}
}