Added logging and fixed infinite loop 36/48536/2
authorDavid Goldberg <gdavid@hpe.com>
Mon, 21 Nov 2016 13:46:14 +0000 (15:46 +0200)
committerDavid Goldberg <gdavid@hpe.com>
Mon, 21 Nov 2016 15:29:11 +0000 (17:29 +0200)
Change-Id: I5ca5c1c77ecf52a3084713b98e3db3d65df345f6
Signed-off-by: David Goldberg <gdavid@hpe.com>
netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/IpvcListener.java
netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java
netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtVpnUtils.java

index ee8e302fcacdba72a4f76adf829bb3fdf0cd3c8b..eb5ee23e099ab42dd74e520cc6e0b77c66c570c8 100644 (file)
@@ -91,6 +91,8 @@ public class IpvcListener extends UnimgrDataTreeChangeListener<Ipvc> {
 
             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<Ipvc> {
         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<Ipvc> {
             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<Ipvc> {
 
         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) {
index 17af1e72b46563d55679bfc1d0e89d87949903d3..6fa79605691e84b0dea428198e9730b160063c54 100644 (file)
@@ -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;
     }
 
index 5d8553584cd6f3ec345b97eafc641acca167f938..af8d77ee9179813accbd7821fc4273f0f1f59fb8 100644 (file)
@@ -110,11 +110,13 @@ public class NetvirtVpnUtils {
     private static Adjacencies buildInterfaceAdjacency(String ipAddress, MacAddress macAddress, boolean primary,
             String nextHopIp) {
         AdjacenciesBuilder builder = new AdjacenciesBuilder();
-        List<Adjacency> list = new ArrayList<Adjacency>();
+        List<Adjacency> 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<Uuid> portList = builder.getPortList();
                     if (null == portList) {
-                        portList = new ArrayList<Uuid>();
+                        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<VpnPortipToPort> optionalPortIpId = buildVpnPortipToPortIdentifier(vpnName,
                     MefUtils.ipAddressToString(dstIpAddress));
             Optional<VpnPortipToPort> optionalPortIp = MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL,
@@ -393,6 +398,7 @@ public class NetvirtVpnUtils {
             } else {
                 sleep();
             }
+            retries--;
         }
         return null;
     }