Implement k8s service IP to pod IP translation using Nicira load ext
Change-Id: I147a9adb68b2bf597c1876a64bf77dedca9698b3
diff --git a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/util/K8sNetworkingUtil.java b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/util/K8sNetworkingUtil.java
index 2647d70..7325976 100644
--- a/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/util/K8sNetworkingUtil.java
+++ b/apps/k8s-networking/app/src/main/java/org/onosproject/k8snetworking/util/K8sNetworkingUtil.java
@@ -20,6 +20,7 @@
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
@@ -48,6 +49,7 @@
import java.util.stream.Collectors;
import static org.onosproject.k8snetworking.api.Constants.PORT_NAME_PREFIX_CONTAINER;
+import static org.onosproject.k8snetworking.api.Constants.SHIFTED_IP_PREFIX;
/**
* An utility that used in kubernetes networking app.
@@ -284,4 +286,24 @@
return ipMap;
}
+
+ /**
+ * Returns a set of unshifted IP addresses.
+ *
+ * @param ipAddress shifted IP address
+ * @param service kubernetes network service
+ * @return unshifted IP addresses
+ */
+ public static Set<String> unshiftIpDomain(String ipAddress, K8sNetworkService service) {
+
+ Set<String> unshiftedIps = Sets.newConcurrentHashSet();
+
+ service.networks().forEach(n -> {
+ String cidr = n.cidr();
+ String origIpPrefix = cidr.split("\\.")[0] + "." + cidr.split("\\.")[1];
+ unshiftedIps.add(StringUtils.replace(ipAddress, SHIFTED_IP_PREFIX, origIpPrefix));
+ });
+
+ return unshiftedIps;
+ }
}