Implement Internal Routing Capability.
Change-Id: I0e3017f730a046f099c71116ded023aa2f45d154
(cherry picked from commit cc8e746f203dc457e5bb914ca4995910d7fc6e9e)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
index f40d42c..8a9ee6c 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
@@ -59,6 +59,7 @@
import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_TO_TENANT_PREFIX;
import static org.onosproject.kubevirtnode.api.KubevirtNode.Type.GATEWAY;
+import static org.onosproject.net.AnnotationKeys.PORT_MAC;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
/**
@@ -78,6 +79,7 @@
private static final String NETWORK_PREFIX = "default/";
private static final String MAC = "mac";
private static final String IPS = "ips";
+ private static final String BR_INT = "br-int";
/**
* Prevents object installation from external.
@@ -468,8 +470,8 @@
public static MacAddress getbrIntMacAddress(DeviceService deviceService,
DeviceId deviceId) {
return MacAddress.valueOf(deviceService.getPorts(deviceId).stream()
- .filter(port -> Objects.equals(port.annotations().value(PORT_NAME), "br-int"))
- .map(port -> port.annotations().value("portMac"))
+ .filter(port -> Objects.equals(port.annotations().value(PORT_NAME), BR_INT))
+ .map(port -> port.annotations().value(PORT_MAC))
.findAny().orElse(null));
}
@@ -498,4 +500,35 @@
return Ip4Address.valueOf(routerSnatIp);
}
+
+ /**
+ * Returns the kubevirt router with specified kubevirt port.
+ *
+ * @param routerService kubevirt router service
+ * @param kubevirtPort kubevirt port
+ * @return kubevirt router
+ */
+ public static KubevirtRouter getRouterForKubevirtPort(KubevirtRouterService routerService,
+ KubevirtPort kubevirtPort) {
+ if (kubevirtPort.ipAddress() != null) {
+ return routerService.routers().stream()
+ .filter(r -> r.internal().contains(kubevirtPort.networkId()))
+ .findAny().orElse(null);
+ }
+ return null;
+ }
+
+ /**
+ * Returns the kubevirt router with specified kubevirt network.
+ *
+ * @param routerService kubevirt router service
+ * @param kubevirtNetwork kubevirt network
+ * @return kubevirt router
+ */
+ public static KubevirtRouter getRouterForKubevirtNetwork(KubevirtRouterService routerService,
+ KubevirtNetwork kubevirtNetwork) {
+ return routerService.routers().stream()
+ .filter(router -> router.internal().contains(kubevirtNetwork.networkId()))
+ .findAny().orElse(null);
+ }
}