Fix: support Container Network Addons (CNA) operator from kubevirt
Change-Id: I1146db430e70b9e626e80b8e2164e514e736179b
(cherry picked from commit fe3a90500f1d26dd1298d792f6601c7636ff25c2)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodPortMapper.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodPortMapper.java
index 7b73f69..d38b5cb 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodPortMapper.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtPodPortMapper.java
@@ -61,9 +61,6 @@
private final Logger log = getLogger(getClass());
private static final String NETWORK_STATUS_KEY = "k8s.v1.cni.cncf.io/network-status";
- private static final String NAME = "name";
- private static final String IPS = "ips";
- private static final String NETWORK_PREFIX = "default/";
private static final long SLEEP_MS = 2000; // we wait 2s
@Reference(cardinality = ReferenceCardinality.MANDATORY)
@@ -164,6 +161,8 @@
KubevirtNode node = kubevirtNodeService.node(pod.getSpec().getNodeName());
if (node == null) {
+ log.warn("POD scheduled node name {} is not ready, " +
+ "we wait for a while...", pod.getSpec().getNodeName());
try {
// we wait until all k8s nodes are available
sleep(SLEEP_MS);
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
index 308707e..0f74dfe 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtVmWatcher.java
@@ -94,6 +94,7 @@
private static final String MAC = "macAddress";
private static final String IP = "ipAddress";
private static final String DEFAULT = "default";
+ private static final String CNI_ZERO = "cni0";
private static final String NETWORK_SUFFIX = "-net";
@Reference(cardinality = ReferenceCardinality.MANDATORY)
@@ -483,7 +484,7 @@
String network = intf.get(NAME).asText();
JsonNode macJson = intf.get(MAC);
- if (!DEFAULT.equals(network) && macJson != null) {
+ if (!DEFAULT.equals(network) && !CNI_ZERO.equals(network) && macJson != null) {
String compact = StringUtils.substringBeforeLast(network, NETWORK_SUFFIX);
MacAddress mac = MacAddress.valueOf(macJson.asText());
result.put(mac, compact);
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 e735282..bfb2916 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
@@ -361,7 +361,7 @@
JSONObject object = networkStatus.getJSONObject(i);
String name = object.getString(NAME);
KubevirtNetwork network = networks.stream()
- .filter(n -> (NETWORK_PREFIX + n.name()).equals(name))
+ .filter(n -> (NETWORK_PREFIX + n.name()).equals(name) || (n.name()).equals(name))
.findAny().orElse(null);
if (network != null) {
String mac = object.getString(MAC);