From: Deepthi V V Date: Wed, 3 Feb 2016 13:35:03 +0000 (+0530) Subject: Bug 5054: Fix for switch restart X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=commitdiff_plain;h=8e3be9c632b1b774191e602d8abb2a0592a9e2a8;hp=e310af569b148ec3a28edaba22144bcd21b3e4a8 Bug 5054: Fix for switch restart - Fix switch retsart issue - Fix tunnel events issue Change-Id: Idc2f7de66700b6d3584e1a68f9ded85be2bd0699 Signed-off-by: Deepthi V V (cherry picked from commit 753c24f1160e84011934b94c4ea727efb5d8d061) --- diff --git a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java index 80500315..62b60ca8 100644 --- a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java +++ b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java @@ -41,6 +41,7 @@ import org.opendaylight.vpnservice.mdsalutil.MatchInfo; import org.opendaylight.vpnservice.mdsalutil.MetaDataUtil; import org.opendaylight.vpnservice.mdsalutil.NwConstants; import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.OpState; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.PrefixToInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnInstanceOpData; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnToExtraroute; @@ -275,6 +276,7 @@ public class FibManager extends AbstractDataChangeListener implements public BigInteger deleteLocalFibEntry(Long vpnId, String rd, VrfEntry vrfEntry) { BigInteger localDpnId = BigInteger.ZERO; + boolean isExtraRoute = false; VpnNexthop localNextHopInfo = nextHopManager.getVpnNexthop(vpnId, vrfEntry.getDestPrefix()); String localNextHopIP = vrfEntry.getDestPrefix(); @@ -284,13 +286,17 @@ public class FibManager extends AbstractDataChangeListener implements if (extra_route != null) { localNextHopInfo = nextHopManager.getVpnNexthop(vpnId, extra_route.getNexthopIp()); localNextHopIP = extra_route.getNexthopIp() + "/32"; + isExtraRoute = true; } } if(localNextHopInfo != null) { localDpnId = localNextHopInfo.getDpnId(); - //if (getPrefixToInterface(vpnId, (staticRoute == true) ? extra_route.getNextHopAddress() + "/32" : vrfEntry.getDestPrefix()) == null) + 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); @@ -423,8 +429,10 @@ 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); } else { + LOG.trace("cleanUpOpDataForFib: delete interface: {} on {}", intfName, dpnId); 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, @@ -457,12 +465,14 @@ public class FibManager extends AbstractDataChangeListener implements if (optAdjacencies.isPresent()) { numAdj = optAdjacencies.get().getAdjacency().size(); } + LOG.trace("cleanUpOpDataForFib: remove adjacency for prefix: {} {}", vpnId, vrfEntry.getDestPrefix()); //remove adjacency corr to prefix FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getAdjacencyIdentifier(ifName, vrfEntry.getDestPrefix())); 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, 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 273d6481..69c73e10 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,6 +18,7 @@ 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; @@ -88,6 +89,13 @@ 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/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java index 1ceaa171..a8e2d6ed 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java @@ -205,6 +205,7 @@ public class OvsInterfaceConfigAddHelper { InterfaceBuilder ifaceBuilder = new InterfaceBuilder(); if (!interfaceNew.isEnabled() && ifState.getOperStatus() != OperStatus.Down) { ifaceBuilder.setOperStatus(OperStatus.Down); + ifaceBuilder.setType(interfaceNew.getType()); ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceNew.getName())); transaction.merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build()); } diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java index e1463341..d7fc0879 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java @@ -89,6 +89,9 @@ public class OvsInterfaceStateAddHelper { InterfaceBuilder ifaceBuilder = new InterfaceBuilder().setOperStatus(operStatus) .setAdminStatus(adminStatus).setPhysAddress(physAddress).setIfIndex(ifIndex).setLowerLayerIf(lowerLayerIfList) .setKey(IfmUtil.getStateInterfaceKeyFromName(portName)); + if(iface != null) { + ifaceBuilder.setType(iface.getType()); + } transaction.put(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build(), true); // allocate lport tag and set in if-index @@ -154,7 +157,7 @@ public class OvsInterfaceStateAddHelper { ifIndex = IfmUtil.allocateId(idManager, IfmConstants.IFM_IDPOOL_NAME, ifaceChild.getName()); InterfaceBuilder childIfaceBuilder = new InterfaceBuilder().setAdminStatus(adminStatus).setOperStatus(operStatus) .setPhysAddress(physAddress).setLowerLayerIf(childLowerLayerIfList).setIfIndex(ifIndex); - childIfaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(ifaceChild.getName())); + childIfaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(ifaceChild.getName())).setType(ifaceChild.getType()); transaction.put(LogicalDatastoreType.OPERATIONAL, ifChildStateId, childIfaceBuilder.build(), true); // create lportTag Interface Map diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java index 4b626cf6..16818864 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java @@ -122,7 +122,7 @@ public class StateInterfaceTest { ifaceBuilder.setOperStatus(OperStatus.Up).setAdminStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus.Up) .setPhysAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress.getDefaultInstance("AA:AA:AA:AA:AA:AA")) .setIfIndex(100) - .setLowerLayerIf(lowerLayerIfList); + .setLowerLayerIf(lowerLayerIfList).setType(L2vlan.class); ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(InterfaceManagerTestUtil.interfaceName)); stateInterface = ifaceBuilder.build(); diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java index 469ac2a5..cd460f22 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java @@ -145,6 +145,7 @@ public class VlanInterfaceConfigurationTest { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder ifaceBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder(); ifaceBuilder.setOperStatus(OperStatus.Down); ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(vlanInterfaceEnabled.getName())); + ifaceBuilder.setType(L2vlan.class); stateInterface = ifaceBuilder.build(); addHelper.addConfiguration(dataBroker, null, vlanInterfaceDisabled, idManager, diff --git a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java index 69aa9044..36ad7a41 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java @@ -297,45 +297,47 @@ public class ItmManagerRpcService implements ItmRpcService { @Override public Future> getInternalOrExternalInterfaceName( GetInternalOrExternalInterfaceNameInput input) { - RpcResultBuilder resultBld = null; + RpcResultBuilder resultBld = RpcResultBuilder.failed(); BigInteger srcDpn = input.getSourceDpid() ; IpAddress dstIp = input.getDestinationIp() ; - List meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ; - // Look for external tunnels if not look for internal tunnel - for( DPNTEPsInfo teps : meshedDpnList) { - TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0) ; - if( dstIp.equals(firstEndPt.getIpAddress())) { - InstanceIdentifier path = InstanceIdentifier.create( - TunnelList.class) - .child(InternalTunnel.class, new InternalTunnelKey(srcDpn, teps.getDPNID())); - - Optional tnl = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); - if( tnl != null && tnl.isPresent()) - { - InternalTunnel tunnel = tnl.get(); - GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(tunnel.getTunnelInterfaceName() ); - resultBld = RpcResultBuilder.success(); - resultBld.withResult(output.build()) ; - }else { - //resultBld = RpcResultBuilder.failed(); - InstanceIdentifier path1 = InstanceIdentifier.create( - ExternalTunnelList.class) - .child(ExternalTunnel.class, new ExternalTunnelKey(dstIp, srcDpn)); - - Optional ext = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path1, dataBroker); - - if( ext != null && ext.isPresent()) - { - ExternalTunnel extTunnel = ext.get(); - GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(extTunnel.getTunnelInterfaceName() ); - resultBld = RpcResultBuilder.success(); - resultBld.withResult(output.build()) ; - }else { - resultBld = RpcResultBuilder.failed(); - } - } - } - } + InstanceIdentifier path1 = InstanceIdentifier.create( + ExternalTunnelList.class) + .child(ExternalTunnel.class, new ExternalTunnelKey(dstIp, srcDpn)); + + Optional ext = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path1, dataBroker); + + if( ext != null && ext.isPresent()) + { + ExternalTunnel extTunnel = ext.get(); + GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(extTunnel.getTunnelInterfaceName() ); + resultBld = RpcResultBuilder.success(); + resultBld.withResult(output.build()) ; + } else { + List meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker); + // Look for external tunnels if not look for internal tunnel + for (DPNTEPsInfo teps : meshedDpnList) { + TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0); + if (dstIp.equals(firstEndPt.getIpAddress())) { + InstanceIdentifier path = InstanceIdentifier.create( + TunnelList.class) + .child(InternalTunnel.class, new InternalTunnelKey(srcDpn, teps.getDPNID())); + + Optional + tnl = + ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); + if (tnl != null && tnl.isPresent()) { + InternalTunnel tunnel = tnl.get(); + GetInternalOrExternalInterfaceNameOutputBuilder + output = + new GetInternalOrExternalInterfaceNameOutputBuilder() + .setInterfaceName(tunnel.getTunnelInterfaceName()); + resultBld = RpcResultBuilder.success(); + resultBld.withResult(output.build()); + break; + } + } + } + } return Futures.immediateFuture(resultBld.build()); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/NwConstants.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/NwConstants.java index 56df8353..ead21fd4 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/NwConstants.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/NwConstants.java @@ -50,6 +50,6 @@ public class NwConstants { public static final short LPORT_DISPATCHER_TABLE = 30; public static final short VLAN_INTERFACE_INGRESS_TABLE = 0; public static final short INTERNAL_TUNNEL_TABLE = 36; - public static final short EXTERNAL_TUNNEL_TABLE = 38; + public static final short EXTERNAL_TUNNEL_TABLE = 36; } \ No newline at end of file diff --git a/vpnmanager/vpnmanager-api/src/main/yang/odl-l3vpn.yang b/vpnmanager/vpnmanager-api/src/main/yang/odl-l3vpn.yang index 4beb21ec..93d25bdf 100644 --- a/vpnmanager/vpnmanager-api/src/main/yang/odl-l3vpn.yang +++ b/vpnmanager/vpnmanager-api/src/main/yang/odl-l3vpn.yang @@ -30,6 +30,11 @@ module odl-l3vpn { uses adjacency-list; } + augment "/l3vpn:vpn-interfaces/l3vpn:vpn-interface" { + ext:augment-identifier "opState"; + leaf stateUp {type boolean; config false;} + } + /* Operational DS containers for reverse lookups*/ container prefix-to-interface { config false; 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 206f884a..f4adb4c5 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 @@ -101,14 +101,10 @@ public class InterfaceStateChangeListener extends AbstractDataChangeListener identifier, VpnInterface intf) { + private void processVpnInterfaceAdjacencies(final InstanceIdentifier identifier, VpnInterface intf, + boolean vpnInterfaceState) { String intfName = intf.getName(); synchronized (intfName) { @@ -289,7 +292,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName); VpnUtil.syncWrite(broker, LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface); for (Adjacency nextHop : aug.getAdjacency()) { @@ -489,6 +493,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener nextHops = adjacencies.get().getAdjacency(); if (!nextHops.isEmpty()) { @@ -581,7 +587,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener idBuilder = InstanceIdentifier.builder(VpnInstances.class); InstanceIdentifier vpnInstancesId = idBuilder.build(); Optional vpnInstances = VpnUtil.read(broker, LogicalDatastoreType.CONFIGURATION, vpnInstancesId); 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 10d69f96..cbd29917 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,11 @@ public class VpnUtil { .child(VpnInstance.class, new VpnInstanceKey(vpnName)).build(); } - static VpnInterface getVpnInterface(String intfName, String vpnName, Adjacencies aug) { - return new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(intfName)).setVpnInstanceName( - vpnName) - .addAugmentation(Adjacencies.class, aug).build(); + static VpnInterface getVpnInterface(String intfName, String vpnName, Adjacencies aug, boolean opState) { + return new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(intfName)).setVpnInstanceName(vpnName) + .addAugmentation(Adjacencies.class, aug) + .addAugmentation(OpState.class, new OpStateBuilder().setStateUp(opState).build()) + .build(); } static InstanceIdentifier getPrefixToInterfaceIdentifier(long vpnId, String ipPrefix) {