From da9cc6536c6f57f7b2c548961e7adfe85ee2cdcf Mon Sep 17 00:00:00 2001 From: Deepthi V V Date: Wed, 9 Mar 2016 16:40:43 +0530 Subject: [PATCH] Bug 5268 - Handle l3vpn delete and recreate scenario -Handle switch restart and vm port down/up scenario -Handle inter dc route deletion -Remove usage of opstate in vpn-interfaces Change-Id: Ia92cc62f0a68501e60591b5dd3712d9f7f866217 Signed-off-by: Deepthi V V --- .../elan/internal/ElanInterfaceManager.java | 2 +- .../vpnservice/fibmanager/FibManager.java | 127 +++++++++------ .../vpnservice/fibmanager/FibUtil.java | 8 - .../vpnservice/mdsalutil/ActionType.java | 3 +- .../InterfaceStateChangeListener.java | 14 +- .../vpnservice/VpnInterfaceManager.java | 146 +++++++++++------- .../org/opendaylight/vpnservice/VpnUtil.java | 3 +- 7 files changed, 178 insertions(+), 125 deletions(-) diff --git a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java index 985037d8..d980ba94 100644 --- a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java +++ b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java @@ -884,7 +884,7 @@ public class ElanInterfaceManager extends AbstractDataChangeListener implements if(localNextHopInfo != null) { localDpnId = localNextHopInfo.getDpnId(); Prefixes prefix = getPrefixToInterface(vpnId, isExtraRoute ? localNextHopIP : vrfEntry.getDestPrefix()); - Optional opStateData = FibUtil.read(broker, LogicalDatastoreType.OPERATIONAL, - FibUtil.getVpnInterfaceOpStateIdentifier(prefix.getVpnInterfaceName())); - if(opStateData.isPresent() && !opStateData.get().isStateUp()) - { makeConnectedRoute(localDpnId, vpnId, vrfEntry, rd, null /* invalid */, NwConstants.DEL_FLOW); makeLFibTableEntry(localDpnId, vrfEntry.getLabel(), 0 /* invalid */, vrfEntry.getNextHopAddress(), NwConstants.DEL_FLOW); removeTunnelTableEntry(localDpnId, vrfEntry.getLabel()); deleteLocalAdjacency(localDpnId, vpnId, localNextHopIP); - } } return localDpnId; } @@ -428,11 +420,11 @@ public class FibManager extends AbstractDataChangeListener implements if (vpnInterfaces.remove(currVpnInterface)) { if (vpnInterfaces.isEmpty()) { - //FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, id); - LOG.trace("cleanUpOpDataForFib: cleanUpDpnForVpn: {}, {}", dpnId, vpnId); - cleanUpDpnForVpn(dpnId, vpnId, rd); + LOG.trace("Last vpn interface {} on dpn {} for vpn {}. Clean up fib in dpn", intfName, dpnId, rd); + FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, id); + cleanUpDpnForVpn(dpnId, vpnId, rd); } else { - LOG.trace("cleanUpOpDataForFib: delete interface: {} on {}", intfName, dpnId); + LOG.trace("Delete vpn interface {} from dpn {} to vpn {} list.", intfName, dpnId, rd); FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, id.child( org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data .vpn.instance.op.data.entry.vpn.to.dpn.list.VpnInterfaces.class, @@ -460,35 +452,24 @@ public class FibManager extends AbstractDataChangeListener implements if (prefixInfo == null) return; //Don't have any info for this prefix (shouldn't happen); need to return String ifName = prefixInfo.getVpnInterfaceName(); - Optional opStateData = FibUtil.read(broker, LogicalDatastoreType.OPERATIONAL, - FibUtil.getVpnInterfaceOpStateIdentifier(ifName)); - if(opStateData.isPresent() && !opStateData.get().isStateUp()) { - Optional - optAdjacencies = - FibUtil.read(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getAdjListPath(ifName)); - int numAdj = 0; - if (optAdjacencies.isPresent()) { + Optional optAdjacencies = FibUtil.read(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getAdjListPath(ifName)); + int numAdj = 0; + if (optAdjacencies.isPresent()) { numAdj = optAdjacencies.get().getAdjacency().size(); - } - LOG.trace("cleanUpOpDataForFib: remove adjacency for prefix: {} {}", vpnId, - vrfEntry.getDestPrefix()); - //remove adjacency corr to prefix + } + LOG.trace("cleanUpOpDataForFib: remove adjacency for prefix: {} {}", vpnId, vrfEntry.getDestPrefix()); + //remove adjacency corr to prefix + if (numAdj > 1) { FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, - FibUtil.getAdjacencyIdentifier(ifName, vrfEntry.getDestPrefix())); + FibUtil.getAdjacencyIdentifier(ifName, vrfEntry.getDestPrefix())); + } - if ((numAdj - 1) == 0) { //there are no adjacencies left for this vpn interface, clean up + if ((numAdj - 1) == 0) { //there are no adjacencies left for this vpn interface, clean up //clean up the vpn interface from DpnToVpn list - delIntfFromDpnToVpnList(vpnId, prefixInfo.getDpnId(), ifName, rd); - LOG.trace("cleanUpOpDataForFib: Delete prefix to interface and vpnInterface "); - FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, - FibUtil.getPrefixToInterfaceIdentifier( - vpnId, - (extra_route) ? vrfEntry.getNextHopAddress() + "/32" - : vrfEntry.getDestPrefix())); + LOG.trace("Clean up vpn interface {} from dpn {} to vpn {} list.", ifName, prefixInfo.getDpnId(), rd); FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getVpnInterfaceIdentifier(ifName)); - } - } + } } private void deleteFibEntries(final InstanceIdentifier identifier, @@ -530,7 +511,9 @@ public class FibManager extends AbstractDataChangeListener implements localNextHopInfo = nextHopManager.getVpnNexthop(vpnId, extra_route.getNexthopIp()); } } - isRemoteRoute = ((localNextHopInfo != null) && (!remoteDpnId.equals(localNextHopInfo.getDpnId()))); + if (localNextHopInfo != null) { + isRemoteRoute = (!remoteDpnId.equals(localNextHopInfo.getDpnId())); + } } if (isRemoteRoute) { makeConnectedRoute(remoteDpnId, vpnId, vrfEntry, rd, null, NwConstants.DEL_FLOW); @@ -646,12 +629,33 @@ public class FibManager extends AbstractDataChangeListener implements public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) { LOG.trace("New dpn {} for vpn {} : populateFibOnNewDpn", dpnId, rd); InstanceIdentifier id = buildVrfId(rd); - Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); - if(vrfTable.isPresent()) { - for(VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { - // Passing null as we don't know the dpn - // to which prefix is attached at this point - createRemoteFibEntry(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + String lockOnDpnVpn = new String(dpnId.toString()+ vpnId); + synchronized (lockOnDpnVpn.intern()) { + Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); + if (vrfTable.isPresent()) { + for (VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { + // Passing null as we don't know the dpn + // to which prefix is attached at this point + createRemoteFibEntry(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + } + } + } + } + + public void populateFibOnDpn(BigInteger dpnId, long vpnId, String rd, String nexthopIp) { + LOG.trace("dpn {} for vpn {}, nexthopIp {} : populateFibOnDpn", dpnId, rd, nexthopIp); + InstanceIdentifier id = buildVrfId(rd); + String lockOnDpnVpn = new String(dpnId.toString()+ vpnId); + synchronized (lockOnDpnVpn.intern()) { + Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); + if (vrfTable.isPresent()) { + for (VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { + // Passing null as we don't know the dpn + // to which prefix is attached at this point + if (nexthopIp == vrfEntry.getNextHopAddress()) { + createRemoteFibEntry(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + } + } } } } @@ -659,12 +663,33 @@ public class FibManager extends AbstractDataChangeListener implements public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) { LOG.trace("Remove dpn {} for vpn {} : cleanUpDpnForVpn", dpnId, rd); InstanceIdentifier id = buildVrfId(rd); - Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); - if(vrfTable.isPresent()) { - for(VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { - // Passing null as we don't know the dpn - // to which prefix is attached at this point - deleteRemoteRoute(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + String lockOnDpnVpn = new String(dpnId.toString()+ vpnId); + synchronized (lockOnDpnVpn.intern()) { + Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); + if (vrfTable.isPresent()) { + for (VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { + // Passing null as we don't know the dpn + // to which prefix is attached at this point + deleteRemoteRoute(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + } + } + } + } + + public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd, String nexthopIp) { + LOG.trace("dpn {} for vpn {}, nexthopIp {} : cleanUpDpnForVpn", dpnId, rd, nexthopIp); + InstanceIdentifier id = buildVrfId(rd); + String lockOnDpnVpn = new String(dpnId.toString()+ vpnId); + synchronized (lockOnDpnVpn.intern()) { + Optional vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id); + if (vrfTable.isPresent()) { + for (VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) { + // Passing null as we don't know the dpn + // to which prefix is attached at this point + if (nexthopIp == vrfEntry.getNextHopAddress()) { + deleteRemoteRoute(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry); + } + } } } } @@ -816,7 +841,11 @@ public class FibManager extends AbstractDataChangeListener implements instructions.add(new InstructionInfo(InstructionType.clear_actions)); // Instruction to goto L3 InterfaceTable - instructions.add(new InstructionInfo(InstructionType.goto_table, new long[] { NwConstants.LPORT_DISPATCHER_TABLE })); + List actionsInfos = new ArrayList (); + actionsInfos.add(new ActionInfo(ActionType.nx_resubmit, new String[]{ + Short.toString(NwConstants.LPORT_DISPATCHER_TABLE)})); + instructions.add(new InstructionInfo(InstructionType.apply_actions, actionsInfos)); + //instructions.add(new InstructionInfo(InstructionType.goto_table, new long[] { NwConstants.LPORT_DISPATCHER_TABLE })); FlowEntity flowEntityL3Intf = MDSALUtil.buildFlowEntity(dpnId, NwConstants.L3_INTERFACE_TABLE, getFlowRef(dpnId, NwConstants.L3_INTERFACE_TABLE, NwConstants.TABLE_MISS_FLOW), diff --git a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibUtil.java b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibUtil.java index 69c73e10..273d6481 100644 --- a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibUtil.java +++ b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibUtil.java @@ -18,7 +18,6 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.Adjacencies; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.OpState; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.adjacency.list.Adjacency; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.prefix.to._interface.vpn.ids.Prefixes; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.VpnToDpnList; @@ -89,13 +88,6 @@ public class FibUtil { .child(org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface.class, new org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey(vpnInterfaceName)).build(); } - static InstanceIdentifier getVpnInterfaceOpStateIdentifier(String vpnInterfaceName) { - return InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces.class) - .child(org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface.class, - new org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey(vpnInterfaceName)) - .augmentation(OpState.class).build(); - } - static InstanceIdentifier getVpnToDpnListIdentifier(String rd, BigInteger dpnId) { return InstanceIdentifier.builder(org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnInstanceOpData.class) .child(org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntry.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntryKey(rd)) diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java index 07e0e00d..8678917f 100755 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java @@ -373,8 +373,9 @@ public enum ActionType { @Override public Action buildAction(ActionInfo actionInfo) { + String[] actionValues = actionInfo.getActionValues(); NxResubmitBuilder nxarsb = new NxResubmitBuilder(); - nxarsb.setTable((short) 55); + nxarsb.setTable(Short.parseShort(actionValues[0])); ActionBuilder ab = new ActionBuilder(); ab.setAction(new NxActionResubmitRpcAddGroupCaseBuilder().setNxResubmit(nxarsb.build()).build()); ab.setKey(new ActionKey(actionInfo.getActionKey())); diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java index f4adb4c5..de1f4aac 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java @@ -80,7 +80,8 @@ public class InterfaceStateChangeListener extends AbstractDataChangeListener identifier, VpnInterface intf, - boolean vpnInterfaceState) { + private void processVpnInterfaceAdjacencies(BigInteger dpnId, final InstanceIdentifier identifier, VpnInterface intf) { String intfName = intf.getName(); synchronized (intfName) { @@ -266,7 +267,6 @@ public class VpnInterfaceManager extends AbstractDataChangeListener interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName); VpnUtil.syncWrite(broker, LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface); for (Adjacency nextHop : aug.getAdjacency()) { @@ -492,8 +491,6 @@ public class VpnInterfaceManager extends AbstractDataChangeListener nextHops = adjacencies.get().getAdjacency(); if (!nextHops.isEmpty()) { @@ -684,8 +681,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener No more adjacencies from it. + // Hence clean up interface from vpn-dpn-interface list. + Adjacency adjacency = del.getAugmentation(Adjacencies.class).getAdjacency().get(0); + Optional prefixToInterface = Optional.absent(); + prefixToInterface = VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, + VpnUtil.getPrefixToInterfaceIdentifier(vpnInstOp.getVpnId(), + VpnUtil.getIpPrefix(adjacency.getIpAddress()))); + if (!prefixToInterface.isPresent()) { + prefixToInterface = VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, + VpnUtil.getPrefixToInterfaceIdentifier(vpnInstOp.getVpnId(), + VpnUtil.getIpPrefix(adjacency.getNextHopIp()))); + } + if (prefixToInterface.isPresent()) { + VpnUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, + VpnUtil.getPrefixToInterfaceIdentifier(vpnInstOp.getVpnId(), + prefixToInterface.get().getIpAddress()), + VpnUtil.DEFAULT_CALLBACK); + updateDpnDbs(prefixToInterface.get().getDpnId(), del.getVpnInstanceName(), interfaceName, false); + } notifyTaskIfRequired(interfaceName); } @@ -822,7 +836,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener vpnInstIter = vpnInstanceList.iterator(); while (vpnInstIter.hasNext()) { VpnInstance vpnInstance = vpnInstIter.next(); - VpnAfConfig vpnConfig = vpnInstance.getIpv4Family(); - String rd = vpnConfig.getRouteDistinguisher(); - - InstanceIdentifier id = VpnUtil.getVpnToDpnListIdentifier(rd, dpnId); - Optional dpnInVpn = VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, id); - if (dpnInVpn.isPresent()) { - if (action == UpdateRouteAction.ADVERTISE_ROUTE) { - fibManager.populateFibOnNewDpn(dpnId, VpnUtil - .getVpnId(broker, vpnInstance.getVpnInstanceName()), rd); + try { + VpnAfConfig vpnConfig = vpnInstance.getIpv4Family(); + String rd = vpnConfig.getRouteDistinguisher(); + if (rd == null || rd.isEmpty()) { + rd = vpnInstance.getVpnInstanceName(); } - List vpnInterfaces = dpnInVpn.get().getVpnInterfaces(); - for(org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data - .vpn.instance.op.data.entry.vpn.to.dpn.list.VpnInterfaces vpnInterface : vpnInterfaces) { - InstanceIdentifier vpnIntfId = VpnUtil.getVpnInterfaceIdentifier(vpnInterface.getInterfaceName()); - InstanceIdentifier path = vpnIntfId.augmentation(Adjacencies.class); - Optional adjacencies = VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, path); - - if (adjacencies.isPresent()) { - List adjacencyList = adjacencies.get().getAdjacency(); - Iterator adjacencyIterator = adjacencyList.iterator(); - - while (adjacencyIterator.hasNext()) { - Adjacency adjacency = adjacencyIterator.next(); - try { - if(action == UpdateRouteAction.ADVERTISE_ROUTE) - bgpManager.addPrefix(rd, adjacency.getIpAddress(), adjacency.getNextHopIp(), adjacency.getLabel().intValue()); - else if(action == UpdateRouteAction.WITHDRAW_ROUTE) - bgpManager.deletePrefix(rd, adjacency.getIpAddress()); - } catch (Exception e) { - LOG.error("Exception when updating prefix {} in vrf {} to BGP", adjacency.getIpAddress(), rd); + InstanceIdentifier id = + VpnUtil.getVpnToDpnListIdentifier(rd, dpnId); + Optional dpnInVpn = + VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, id); + if (dpnInVpn.isPresent()) { + // if (action == UpdateRouteAction.ADVERTISE_ROUTE) { + // fibManager.populateFibOnNewDpn(dpnId, VpnUtil + // .getVpnId(broker, vpnInstance.getVpnInstanceName()), rd); + // } + List + vpnInterfaces = dpnInVpn.get().getVpnInterfaces(); + for (org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data + .vpn.instance.op.data.entry.vpn.to.dpn.list.VpnInterfaces vpnInterface : vpnInterfaces) { + InstanceIdentifier vpnIntfId = + VpnUtil.getVpnInterfaceIdentifier(vpnInterface.getInterfaceName()); + InstanceIdentifier path = + vpnIntfId.augmentation(Adjacencies.class); + Optional adjacencies = + VpnUtil.read(broker, LogicalDatastoreType.OPERATIONAL, path); + + if (adjacencies.isPresent()) { + List adjacencyList = adjacencies.get().getAdjacency(); + Iterator adjacencyIterator = adjacencyList.iterator(); + + while (adjacencyIterator.hasNext()) { + Adjacency adjacency = adjacencyIterator.next(); + try { + if (action == UpdateRouteAction.ADVERTISE_ROUTE) + bgpManager.addPrefix(rd, adjacency.getIpAddress(), + adjacency.getNextHopIp(), + adjacency.getLabel().intValue()); + else if (action == UpdateRouteAction.WITHDRAW_ROUTE) + bgpManager.deletePrefix(rd, adjacency.getIpAddress()); + } catch (Exception e) { + LOG.error("Exception when updating prefix {} in vrf {} to BGP", + adjacency.getIpAddress(), rd); + } } } - } + } + // if (action == UpdateRouteAction.WITHDRAW_ROUTE) { + // fibManager.cleanUpDpnForVpn(dpnId, VpnUtil.getVpnId(broker, vpnInstance.getVpnInstanceName()), rd); + // } } - if (action == UpdateRouteAction.WITHDRAW_ROUTE) { - fibManager.cleanUpDpnForVpn(dpnId, VpnUtil - .getVpnId(broker, vpnInstance.getVpnInstanceName()), rd); - } + } catch (Exception e) { + LOG.error("updatePrefixesForDPN {} in vpn {} failed", dpnId, vpnInstance.getVpnInstanceName(), e); } } } diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnUtil.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnUtil.java index cbd29917..67ad13b8 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnUtil.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnUtil.java @@ -83,10 +83,9 @@ public class VpnUtil { .child(VpnInstance.class, new VpnInstanceKey(vpnName)).build(); } - static VpnInterface getVpnInterface(String intfName, String vpnName, Adjacencies aug, boolean opState) { + static VpnInterface getVpnInterface(String intfName, String vpnName, Adjacencies aug) { return new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(intfName)).setVpnInstanceName(vpnName) .addAugmentation(Adjacencies.class, aug) - .addAugmentation(OpState.class, new OpStateBuilder().setStateUp(opState).build()) .build(); } -- 2.36.6