Retrieve MAC address when kubernetes external lb config or interface has only IP address.
Change-Id: I79538f262a1a5d9bceb20d461743212ec6717d5a
(cherry picked from commit 6a83ee6e704e035f8349f93c5bbd8d3b251fe2d5)
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 539323f..345e670 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
@@ -53,6 +53,7 @@
import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
import org.onosproject.kubevirtnode.api.DefaultKubevirtNode;
import org.onosproject.kubevirtnode.api.DefaultKubevirtPhyInterface;
+import org.onosproject.kubevirtnode.api.KubernetesExternalLbConfig;
import org.onosproject.kubevirtnode.api.KubernetesExternalLbInterface;
import org.onosproject.kubevirtnode.api.KubevirtApiConfig;
import org.onosproject.kubevirtnode.api.KubevirtApiConfigService;
@@ -557,16 +558,32 @@
KubernetesExternalLb externalLb) {
//TODO: enhance election logic for a better load balancing
- int numOfGateways = nodeService.completeNodes(GATEWAY).size();
+ int numOfGateways = nodeService.completeExternalLbGatewayNodes().size();
if (numOfGateways == 0) {
return null;
}
- return (KubevirtNode) nodeService.completeNodes(GATEWAY)
+ return (KubevirtNode) nodeService.completeExternalLbGatewayNodes()
.toArray()[externalLb.hashCode() % numOfGateways];
}
/**
+ * Returns whether a mac address in kubernetes external lb config is updated.
+ *
+ * @param externalLbConfig kubernetes external lb config
+ * @return true if a mac address is added
+ */
+ public static boolean configMapUpdated(KubernetesExternalLbConfig externalLbConfig) {
+ if (externalLbConfig == null) {
+ return false;
+ }
+
+ return externalLbConfig.configName() != null && externalLbConfig.globalIpRange() != null &&
+ externalLbConfig.loadBalancerGwIp() != null && externalLbConfig.loadBalancerGwMac() != null;
+ }
+
+
+ /**
* Returns the worker node for the specified kubernetes external lb.
* Among worker nodes, only one worker would serve the traffic from and to the gateway.
* Currently worker node is selected based on modulo operation with external lb hashcode.