Initial implementation of managing IPs for kubevirt spawned VMIs
Change-Id: I68127e1fe42a142765e7696d8ce80de16d3d94a9
diff --git a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtInstanceTest.java b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtInstanceTest.java
index c1e59b6..c391eb4 100644
--- a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtInstanceTest.java
+++ b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtInstanceTest.java
@@ -36,6 +36,8 @@
private static final String UID_2 = "2";
private static final String NAME_1 = "instance-1";
private static final String NAME_2 = "instance-2";
+ private static final String NETWORK_ID_1 = "net-1";
+ private static final String NETWORK_ID_2 = "net-2";
private static final MacAddress MAC_1 = MacAddress.valueOf("11:22:33:44:55:66");
private static final MacAddress MAC_2 = MacAddress.valueOf("66:55:44:33:22:11");
private static final IpAddress IP_1 = IpAddress.valueOf("10.10.10.10");
@@ -44,8 +46,8 @@
private static final DeviceId DID_2 = DeviceId.deviceId("did2");
private static final PortNumber PN_1 = PortNumber.portNumber(1);
private static final PortNumber PN_2 = PortNumber.portNumber(2);
- private static final KubevirtPort PORT_1 = createPort(MAC_1, IP_1, DID_1, PN_1);
- private static final KubevirtPort PORT_2 = createPort(MAC_2, IP_2, DID_2, PN_2);
+ private static final KubevirtPort PORT_1 = createPort(NETWORK_ID_1, MAC_1, IP_1, DID_1, PN_1);
+ private static final KubevirtPort PORT_2 = createPort(NETWORK_ID_2, MAC_2, IP_2, DID_2, PN_2);
private KubevirtInstance instance1;
private KubevirtInstance sameAsInstance1;
@@ -105,8 +107,10 @@
assertEquals(ImmutableSet.of(PORT_1), instance1.ports());
}
- static KubevirtPort createPort(MacAddress mac, IpAddress ip, DeviceId did, PortNumber pn) {
+ static KubevirtPort createPort(String networkId, MacAddress mac, IpAddress ip,
+ DeviceId did, PortNumber pn) {
return DefaultKubevirtPort.builder()
+ .networkId(networkId)
.macAddress(mac)
.ipAddress(ip)
.deviceId(did)
diff --git a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetworkTest.java b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetworkTest.java
index 32ca958..1b39db8 100644
--- a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetworkTest.java
+++ b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetworkTest.java
@@ -22,6 +22,7 @@
import org.onlab.packet.IpAddress;
import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.FLAT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
@@ -128,4 +129,31 @@
assertEquals(CIDR_1, network.cidr());
assertEquals(new KubevirtIpPool(IP_POOL_START_1, IP_POOL_END_1), network.ipPool());
}
+
+ /**
+ * Test IP address initialization.
+ */
+ @Test
+ public void testIpInitialization() {
+ KubevirtIpPool ipPool1 = network1.ipPool();
+ assertEquals(101, ipPool1.availableIps().size());
+ assertEquals(0, ipPool1.allocatedIps().size());
+ }
+
+ /**
+ * Test IP address allocation.
+ */
+ @Test
+ public void testIpAllocationAndRelease() throws Exception {
+ KubevirtIpPool ipPool1 = network1.ipPool();
+ IpAddress ip = ipPool1.allocateIp();
+ assertEquals(100, ipPool1.availableIps().size());
+ assertEquals(1, ipPool1.allocatedIps().size());
+ assertEquals(IpAddress.valueOf("10.10.10.100"), ip);
+
+ ipPool1.releaseIp(ip);
+ assertEquals(101, ipPool1.availableIps().size());
+ assertEquals(0, ipPool1.allocatedIps().size());
+ assertTrue(ipPool1.availableIps().contains(ip));
+ }
}
diff --git a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPortTest.java b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPortTest.java
index 00f3cd4..f91ad2e 100644
--- a/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPortTest.java
+++ b/apps/kubevirt-networking/api/src/test/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPortTest.java
@@ -30,6 +30,8 @@
* Unit tests for the default kubevirt port class.
*/
public class DefaultKubevirtPortTest {
+ private static final String NETWORK_ID_1 = "net-1";
+ private static final String NETWORK_ID_2 = "net-2";
private static final MacAddress MAC_ADDRESS_1 = MacAddress.valueOf("00:11:22:33:44:55");
private static final MacAddress MAC_ADDRESS_2 = MacAddress.valueOf("11:22:33:44:55:66");
private static final IpAddress IP_ADDRESS_1 = IpAddress.valueOf("10.10.10.10");
@@ -57,6 +59,7 @@
@Before
public void setUp() {
port1 = DefaultKubevirtPort.builder()
+ .networkId(NETWORK_ID_1)
.macAddress(MAC_ADDRESS_1)
.ipAddress(IP_ADDRESS_1)
.deviceId(DEVICE_ID_1)
@@ -64,6 +67,7 @@
.build();
sameAsPort1 = DefaultKubevirtPort.builder()
+ .networkId(NETWORK_ID_1)
.macAddress(MAC_ADDRESS_1)
.ipAddress(IP_ADDRESS_1)
.deviceId(DEVICE_ID_1)
@@ -71,6 +75,7 @@
.build();
port2 = DefaultKubevirtPort.builder()
+ .networkId(NETWORK_ID_2)
.macAddress(MAC_ADDRESS_2)
.ipAddress(IP_ADDRESS_2)
.deviceId(DEVICE_ID_2)
@@ -95,6 +100,7 @@
public void testConstruction() {
KubevirtPort port = port1;
+ assertEquals(NETWORK_ID_1, port.networkId());
assertEquals(MAC_ADDRESS_1, port.macAddress());
assertEquals(IP_ADDRESS_1, port.ipAddress());
assertEquals(DEVICE_ID_1, port.deviceId());