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;