From 6e96077376c46754aa2bf57248ea2c04aebcc294 Mon Sep 17 00:00:00 2001 From: David Goldberg Date: Mon, 21 Nov 2016 15:46:14 +0200 Subject: [PATCH] Added logging and fixed infinite loop Change-Id: I5ca5c1c77ecf52a3084713b98e3db3d65df345f6 Signed-off-by: David Goldberg --- .../unimgr/mef/netvirt/IpvcListener.java | 10 ++++++++-- .../unimgr/mef/netvirt/NetvirtUtils.java | 1 + .../unimgr/mef/netvirt/NetvirtVpnUtils.java | 12 +++++++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java index ee8e302f..eb5ee23e 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java @@ -91,6 +91,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener { Log.info("Adding vpn instance: " + instanceName); NetvirtVpnUtils.createVpnInstance(dataBroker, vpnName); + Log.info("Number of UNI's: " + data.getUnis().getUni().size()); + // Create elan interfaces for (Uni uni : data.getUnis().getUni()) { @@ -167,6 +169,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener { String uniId = uniInService.getUniId().getValue(); String ipUniId = uniInService.getIpUniId().getValue(); + Log.info("Adding/updating elan instance: " + uniId); + org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni uni = IpvcUniUtils .getUni(dataBroker, uniId); if (uni == null) { @@ -174,9 +178,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener { throw new UnsupportedOperationException(); } IpUni ipUni = IpvcUniUtils.getIpUni(dataBroker, uniId, ipUniId); - Integer vlan = (ipUni.getVlan()) != null ? ipUni.getVlan().getValue() : null; + Integer vlan = ipUni.getVlan() != null ? ipUni.getVlan().getValue() : null; - Log.info("Adding/updating elan instance: " + uniId); String elanName = NetvirtVpnUtils.getElanNameForVpnPort(uniId); Log.info("Adding elan instance: " + elanName); NetvirtUtils.updateElanInstance(dataBroker, elanName); @@ -200,15 +203,18 @@ public class IpvcListener extends UnimgrDataTreeChangeListener { if (ipUni.getSubnets() != null) { for (Subnet subnet : ipUni.getSubnets().getSubnet()) { + Log.info("Resolving MAC address for gateway: " + subnet.getGateway()); MacAddress gwMacAddress = NetvirtVpnUtils.resolveGwMac(dataBroker, arpUtilService, vpnName, ipUni.getIpAddress(), subnet.getGateway(), interfaceName); // trunk if (gwMacAddress == null) { continue; } + Log.info("update vpn interface: " + interfaceName); NetvirtVpnUtils.createUpdateVpnInterface(dataBroker, vpnName, interfaceName, subnet.getSubnet(), gwMacAddress, false, ipUni.getIpAddress()); } } + Log.info("Finished working on elan instance: " + uniId); } private void removeElanInterface(String instanceName, Uni uni) { diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java index 17af1e72..6fa79605 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java @@ -137,6 +137,7 @@ public class NetvirtUtils { ElanInstanceBuilder einstBuilder = new ElanInstanceBuilder(); einstBuilder.setElanInstanceName(instanceName); einstBuilder.setKey(new ElanInstanceKey(instanceName)); + einstBuilder.setSegmentationId(Math.abs((long) instanceName.hashCode())); return einstBuilder; } diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtVpnUtils.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtVpnUtils.java index 5d855358..af8d77ee 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtVpnUtils.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtVpnUtils.java @@ -110,11 +110,13 @@ public class NetvirtVpnUtils { private static Adjacencies buildInterfaceAdjacency(String ipAddress, MacAddress macAddress, boolean primary, String nextHopIp) { AdjacenciesBuilder builder = new AdjacenciesBuilder(); - List list = new ArrayList(); + List list = new ArrayList<>(); AdjacencyBuilder aBuilder = new AdjacencyBuilder(); aBuilder.setIpAddress(ipAddress); - aBuilder.setMacAddress(macAddress.getValue()); + if (macAddress != null) { + aBuilder.setMacAddress(macAddress.getValue()); + } aBuilder.setPrimaryAdjacency(primary); if (nextHopIp != null) { aBuilder.setNextHopIpList(Arrays.asList(nextHopIp)); @@ -232,6 +234,7 @@ public class NetvirtVpnUtils { logger.info("Publish subnet {}", subnetName); publishSubnetAddNotification(notificationPublishService, subnetId, subnetIp, vpnName, elanTag); + logger.info("Finished Working on subnet {}", subnetName); } @@ -272,7 +275,7 @@ public class NetvirtVpnUtils { if (null != portId) { List portList = builder.getPortList(); if (null == portList) { - portList = new ArrayList(); + portList = new ArrayList<>(); } portList.add(portId); builder.setPortList(portList); @@ -356,6 +359,7 @@ public class NetvirtVpnUtils { MacAddress macAddress = null; int retries = MaxRetries; while (retries > 0 && macAddress == null) { + logger.info("Sending ARP request to dstIp {} take {}", dstIpAddress, MaxRetries - retries + 1); sendArpRequest(arpUtilService, srcIpAddress, dstIpAddress, interf); macAddress = waitForArpReplyProcessing(dataBroker, vpnName, dstIpAddress, MaxRetries); retries--; @@ -383,6 +387,7 @@ public class NetvirtVpnUtils { public static MacAddress waitForArpReplyProcessing(DataBroker dataBroker, String vpnName, IpAddress dstIpAddress, int retries) { while (retries > 0) { + logger.info("Waiting for ARP reply from dstIp {} take {}", dstIpAddress, MaxRetries - retries + 1); InstanceIdentifier optionalPortIpId = buildVpnPortipToPortIdentifier(vpnName, MefUtils.ipAddressToString(dstIpAddress)); Optional optionalPortIp = MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, @@ -393,6 +398,7 @@ public class NetvirtVpnUtils { } else { sleep(); } + retries--; } return null; } -- 2.36.6