X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=blobdiff_plain;f=vpnmanager%2Fvpnmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2FVpnInterfaceManager.java;h=fa81708e6e4208cb57d966e446febf58445a1bbd;hp=4dce70d24bd370fa4f73f9debe5fe20b9fd54676;hb=78638a6543c647ffff30d36e52604f5b7b5e785b;hpb=15c36c63dc3895993e607807d8699aafc6bcabc0 diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java index 4dce70d2..fa81708e 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnInterfaceManager.java @@ -26,6 +26,7 @@ import com.google.common.util.concurrent.FutureCallback; import org.opendaylight.bgpmanager.api.IBgpManager; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; +import org.opendaylight.fibmanager.api.IFibManager; import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; import org.opendaylight.vpnservice.mdsalutil.FlowEntity; import org.opendaylight.vpnservice.mdsalutil.InstructionInfo; @@ -73,6 +74,7 @@ public class VpnInterfaceManager extends AbstractDataChangeListener listenerRegistration; private final DataBroker broker; private final IBgpManager bgpManager; + private IFibManager fibManager; private IMdsalApiManager mdsalManager; private IInterfaceManager interfaceManager; private IdManagerService idManager; @@ -113,6 +115,10 @@ public class VpnInterfaceManager extends AbstractDataChangeListener port = read(LogicalDatastoreType.CONFIGURATION, id); if (port.isPresent()) { Interface interf = port.get(); - bindServiceOnInterface(interf, getVpnId(vpnInterface.getVpnInstanceName())); + bindServiceOnInterface(interf, vpnInterface.getVpnInstanceName()); updateNextHops(identifier, vpnInterface); } } @@ -222,8 +228,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener id = InstanceIdentifier.builder(VpnInstances.class) .child(VpnInstance.class, new VpnInstanceKey(vpnName)).augmentation(VpnInstance1.class).build(); Optional vpnInstance = read(LogicalDatastoreType.OPERATIONAL, id); - //TODO: Default vpnid should be a constant. - long vpnId = -1; + + long vpnId = VpnConstants.INVALID_ID; if(vpnInstance.isPresent()) { vpnId = vpnInstance.get().getVpnId(); } @@ -243,14 +249,14 @@ public class VpnInterfaceManager extends AbstractDataChangeListener dpnIds = vpnToDpnsDb.get(vpnId); if(dpnIds == null) { dpnIds = new HashSet<>(); } if(dpnIds.add(dpnId)) { vpnToDpnsDb.put(vpnId, dpnIds); - //TODO: Send an Event that new DPN added... + fibManager.populateFibOnNewDpn(dpnId, vpnId, rd); } Collection intfNames = dpnToInterfaceDb.get(dpnId); @@ -261,13 +267,14 @@ public class VpnInterfaceManager extends AbstractDataChangeListener intfNames = dpnToInterfaceDb.get(dpnId); if(intfNames == null) { return; } intfNames.remove(inftName); dpnToInterfaceDb.put(dpnId, intfNames); + //TODO: Delay 'DPN' removal so that other services can cleanup the entries for this dpn if(intfNames.isEmpty()) { Collection dpnIds = vpnToDpnsDb.get(vpnId); if(dpnIds == null) { @@ -275,18 +282,21 @@ public class VpnInterfaceManager extends AbstractDataChangeListener interfaceId = VpnUtil.getVpnInterfaceIdentifier(interfaceName); + delete(LogicalDatastoreType.OPERATIONAL, identifier); } else { LOG.warn("No nexthops were available to handle remove event {}", interfaceName); } @@ -380,8 +392,8 @@ public class VpnInterfaceManager extends AbstractDataChangeListener interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName); - delete(LogicalDatastoreType.OPERATIONAL, interfaceId); +// InstanceIdentifier interfaceId = VpnUtil.getVpnInterfaceIdentifier(intfName); +// delete(LogicalDatastoreType.OPERATIONAL, interfaceId); } private void delete(LogicalDatastoreType datastoreType, InstanceIdentifier path) { @@ -390,15 +402,17 @@ public class VpnInterfaceManager extends AbstractDataChangeListener