Misc fixes in vpnservice 70/20270/2
authorVishal Thapar <vishal.thapar@ericsson.com>
Wed, 13 May 2015 16:19:18 +0000 (21:49 +0530)
committerVishal Thapar <vishal.thapar@ericsson.com>
Wed, 13 May 2015 16:21:12 +0000 (16:21 +0000)
1. Fixes some issues when adding vpnInterface
2. Fixes exception when adding interface
3. Cleans up some logging.

Change-Id: I97c277df16c02406951977578dd5e4568ed9e770
Signed-off-by: Vishal Thapar <vishal.thapar@ericsson.com>
fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java
nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/NexthopManager.java
nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java
vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java

index b0e7098c4f560503c4ec98c62c650e401cec55fb..96f22c4a7d1291807e2f6f79b0787000143e234c 100644 (file)
@@ -263,10 +263,11 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
 
   private void makeConnectedRoute(long dpId, long vpnId, VrfEntry vrfEntry, String rd,
                                   long groupId, int addOrRemove) {
+    LOG.trace("makeConnectedRoute: vrfEntry {}",vrfEntry);
     String values[] = vrfEntry.getDestPrefix().split("/");
-    LOG.debug("Adding route to DPN. ip {} masklen {}", values[0], values[1]);
     String ipAddress = values[0];
-    int prefixLength = Integer.parseInt(values[1]);
+    int prefixLength = (values.length == 1) ? 32 : Integer.parseInt(values[1]);
+    LOG.debug("Adding route to DPN. ip {} masklen {}", ipAddress, prefixLength);
     InetAddress destPrefix = null;
     try {
       destPrefix = InetAddress.getByName(ipAddress);
@@ -293,7 +294,8 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
 
     if(addOrRemove == NwConstants.ADD_FLOW) {
       actionsInfos.add(new ActionInfo(ActionType.group, new String[] { String.valueOf(groupId)}));
-      actionsInfos.add(new ActionInfo(ActionType.push_mpls, new String[] { Long.toString(vrfEntry.getLabel())}));
+      actionsInfos.add(new ActionInfo(ActionType.push_mpls, new String[] { null }));
+      actionsInfos.add(new ActionInfo(ActionType.set_field_mpls_label, new String[] { Long.toString(vrfEntry.getLabel())}));
       instructions.add(new InstructionInfo(InstructionType.write_actions, actionsInfos));
     }
 
@@ -338,7 +340,7 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
     } else {
       mdsalManager.removeFlow(flowEntity);
     }
-    LOG.debug("LFIB Entry for dpID {} : label : {} grpup {} modified successfully {}",dpId, label, groupId );
+    LOG.debug("LFIB Entry for dpID {} : label : {} group {} modified successfully {}",dpId, label, groupId );
   }
 
   private String getFlowRef(long dpnId, short tableId, long label, String nextHop) {
index 7737e0104d80596ff32c7c92bad34fb83db54095..d494ab55f0a7106796f2f652672faae3ba8017fa 100644 (file)
@@ -439,7 +439,7 @@ public class InterfaceManager extends AbstractDataChangeListener<Interface> impl
             //TODO: This should be an MDSAL Util method
             return Long.parseLong(IfmUtil.getDpnFromNodeConnectorId(port.getId()));
         } catch (NullPointerException e) {
-            LOG.error("OFPort for Interface {} not found", ifName);
+            LOG.error("dpn for Interface {} not found", ifName);
         }
         return 0L;
     }
index a8f411c7ddb301a471b71d0bb1da7476daaa921d..571cdce3ad91cce5a23fa109fd5d88cb9d46a805 100644 (file)
@@ -64,7 +64,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
     private static final FutureCallback<Void> DEFAULT_CALLBACK =
         new FutureCallback<Void>() {
             public void onSuccess(Void result) {
-                LOG.info("Success in Datastore write operation");
+                LOG.debug("Success in Datastore write operation");
             }
             public void onFailure(Throwable error) {
                 LOG.error("Error in Datastore write operation", error);
@@ -159,6 +159,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         long vpnId = getVpnId(vpnName);
         long dpnId = interfaceManager.getDpnForInterface(ifName);
         VpnNexthop nexthop = getVpnNexthop(vpnId, ipAddress);
+        LOG.trace("nexthop: {}", nexthop);
         if (nexthop == null) {
             List<BucketInfo> listBucketInfo = new ArrayList<BucketInfo>();
             List<ActionInfo> listActionInfo = interfaceManager.getInterfaceEgressActions(ifName);
@@ -230,7 +231,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
 
         InstanceIdentifier<VpnNexthop> id1 = idBuilder
                 .child(VpnNexthop.class, new VpnNexthopKey(ipPrefix)).build();
-
+        LOG.trace("Adding nextHop {} to Operational DS", nh);
         asyncWrite(LogicalDatastoreType.OPERATIONAL, id1, nh, DEFAULT_CALLBACK);
 
     }
@@ -382,6 +383,7 @@ public class NexthopManager implements L3nexthopService, AutoCloseable {
         GetEgressPointerOutputBuilder output = new GetEgressPointerOutputBuilder();
 
         String endpointIp = interfaceManager.getEndpointIpForDpn(input.getDpnId());
+        LOG.trace("getEgressPointer: input {}, endpointIp {}", input, endpointIp);
         if (input.getNexthopIp().equals(endpointIp)) {
             VpnNexthop vpnNextHop = getVpnNexthop(input.getVpnId(), input.getIpPrefix());
             output.setEgressPointer(vpnNextHop.getEgressPointer());
index e8a5bc2e1561fd58698a297990b7e99d40047a02..69cce9f9f0b78e4728a49f62c51196558aec17d0 100644 (file)
@@ -8,6 +8,8 @@
 package org.opendaylight.vpnservice.nexthopmgr;
 
 
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
@@ -69,14 +71,18 @@ public class OdlInterfaceChangeListener extends AbstractDataChangeListener<Inter
 
     @Override
     protected void add(InstanceIdentifier<Interface> identifier, Interface intrf) {
-        LOG.info("key: " + identifier + ", value=" + intrf );
+        LOG.trace("key: " + identifier + ", value=" + intrf );
 
         if (intrf.getType().equals(L3tunnel.class)) {
             IfL3tunnel intfData = intrf.getAugmentation(IfL3tunnel.class);
-            String gwIp = intfData.getGatewayIp().toString();
-            String remoteIp = intfData.getRemoteIp().toString();
+            IpAddress gatewayIp = intfData.getGatewayIp();
+            String gwIp = (gatewayIp == null) ? null : gatewayIp.toString();
+            String remoteIp = null;
             if (gwIp != null) {
                 remoteIp = gwIp;
+            } else {
+                IpAddress remIp = intfData.getRemoteIp();
+                remoteIp = (remIp == null) ? null : remIp.toString();
             }
             NodeConnectorId ofPort = intrf.getAugmentation(BaseIds.class).getOfPortId();
             nexthopManager.createRemoteNextHop(intrf.getName(), ofPort.toString(), remoteIp);
index 3221a474f4f50612d263fe4537ef4f6ef3164f85..4dce70d24bd370fa4f73f9debe5fe20b9fd54676 100644 (file)
@@ -178,20 +178,23 @@ public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface
             long dpnId = interfaceManager.getDpnForInterface(intfName);
             String nextHopIp = interfaceManager.getEndpointIpForDpn(dpnId);
 
-            if (!nextHops.isEmpty()) {
-                LOG.trace("NextHops are {}", nextHops);
-                for (Adjacency nextHop : nextHops) {
-                    String key = nextHop.getIpAddress();
-                    long label = getUniqueId(key);
 
-                    updatePrefixToBGP(rd, nextHop, nextHopIp, label);
-                    value.add(new AdjacencyBuilder(nextHop).setLabel(label).build());
-                }
+            LOG.trace("NextHops are {}", nextHops);
+            for (Adjacency nextHop : nextHops) {
+                String key = nextHop.getIpAddress();
+                long label = getUniqueId(key);
+                value.add(new AdjacencyBuilder(nextHop).setLabel(label).build());
             }
+
             Adjacencies aug = VpnUtil.getVpnInterfaceAugmentation(value);
             VpnInterface opInterface = VpnUtil.getVpnInterface(intfName, intf.getVpnInstanceName(), aug);
             InstanceIdentifier<VpnInterface> interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName);
             asyncWrite(LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface, DEFAULT_CALLBACK);
+            for (Adjacency nextHop : nextHops) {
+                String key = nextHop.getIpAddress();
+                long label = getUniqueId(key);
+                updatePrefixToBGP(rd, nextHop, nextHopIp, label);
+            }
         }
     }