Fix: do not create patch port when it is already existed on bridge
Change-Id: I3d631a91196c66fb987bacafb50985574b980709
(cherry picked from commit 90561b6d5c7a3e738432c90dc94cb0b4ae817392)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
index ed8e1e4..28bf182 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
@@ -16,7 +16,6 @@
package org.onosproject.kubevirtnetworking.impl;
import com.google.common.collect.Lists;
-import org.onlab.osgi.DefaultServiceDirectory;
import org.onlab.packet.ARP;
import org.onlab.packet.EthType;
import org.onlab.packet.Ethernet;
@@ -64,7 +63,6 @@
import org.onosproject.net.behaviour.InterfaceConfig;
import org.onosproject.net.behaviour.PatchDescription;
import org.onosproject.net.device.DeviceAdminService;
-import org.onosproject.net.device.DeviceService;
import org.onosproject.net.driver.DriverService;
import org.onosproject.net.flow.DefaultTrafficSelector;
import org.onosproject.net.flow.DefaultTrafficTreatment;
@@ -302,8 +300,8 @@
String tunToTenantIntf =
TUNNEL_TO_TENANT_PREFIX + segmentIdHex(network.segmentId());
- if (!hasPort(DeviceId.deviceId(network.tenantBridgeName()), tenantToTunIntf)) {
- // tenant bridge -> tunnel bridge
+ if (!hasPort(network.tenantDeviceId(node.hostname()), tenantToTunIntf)) {
+ // patch ports for tenant bridge -> tunnel bridge
PatchDescription brTenantTunPatchDesc =
DefaultPatchDescription.builder()
.deviceId(network.tenantBridgeName())
@@ -316,7 +314,7 @@
waitFor(1);
}
- if (!hasPort(DeviceId.deviceId(TUNNEL_BRIDGE), tunToTenantIntf)) {
+ if (!hasPort(node.tunBridge(), tunToTenantIntf)) {
// tunnel bridge -> tenant bridge
PatchDescription brTunTenantPatchDesc =
DefaultPatchDescription.builder()
@@ -941,11 +939,12 @@
}
private boolean hasPort(DeviceId deviceId, String portName) {
- DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
Port port = deviceService.getPorts(deviceId).stream()
.filter(p -> p.isEnabled() &&
Objects.equals(p.annotations().value(PORT_NAME), portName))
.findAny().orElse(null);
+ log.info("The port {} already existed on device {}", portName, deviceId);
+
return port != null;
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
index eff1ca4..2d59a2c 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/NetworkAttachmentDefinitionWatcher.java
@@ -335,7 +335,7 @@
return builder.build();
}
} catch (JSONException e) {
- log.error("Failed to parse network attachment definition object");
+ log.error("Failed to parse network attachment definition object", e);
}
return null;