X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=vpnmanager%2Fvpnmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2FVpnManager.java;h=435130c3a8ab6a63a7adf8bcc8e0a76998f5dfce;hb=755c4931cfeaab0ac2783b909572d00386b804f9;hp=3689cbbe21395c9f5b07089a026d0d716888482a;hpb=42c322817cb799810b82212370b23ee92d866294;p=vpnservice.git diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnManager.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnManager.java index 3689cbbe..435130c3 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnManager.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnManager.java @@ -26,9 +26,11 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnAfConfig; +import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces; import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance; import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances; import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceBuilder; +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.VpnInstance1; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnInstance1Builder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.FibEntries; @@ -52,6 +54,7 @@ public class VpnManager extends AbstractDataChangeListener implemen private final DataBroker broker; private final IBgpManager bgpManager; private IdManagerService idManager; + private VpnInterfaceManager vpnInterfaceManager; private final FibEntriesListener fibListener; private static final FutureCallback DEFAULT_CALLBACK = @@ -95,11 +98,30 @@ public class VpnManager extends AbstractDataChangeListener implemen this.idManager = idManager; } + public void setVpnInterfaceManager(VpnInterfaceManager vpnInterfaceManager) { + this.vpnInterfaceManager = vpnInterfaceManager; + } + @Override protected void remove(InstanceIdentifier identifier, VpnInstance del) { - LOG.trace("Remove event - Key: {}, value: {}", identifier, del); + LOG.trace("Remove VPN event - Key: {}, value: {}", identifier, del); String vpnName = del.getVpnInstanceName(); InstanceIdentifier vpnIdentifier = VpnUtil.getVpnInstanceIdentifier(vpnName); + //Clean up vpn Interface + InstanceIdentifier vpnInterfacesId = InstanceIdentifier.builder(VpnInterfaces.class).build(); + Optional optionalVpnInterfaces = read(LogicalDatastoreType.OPERATIONAL, vpnInterfacesId); + + if(optionalVpnInterfaces.isPresent()) { + List vpnInterfaces = optionalVpnInterfaces.get().getVpnInterface(); + for(VpnInterface vpnInterface : vpnInterfaces) { + if(vpnInterface.getVpnInstanceName().equals(vpnName)) { + LOG.debug("VpnInterface {} will be removed from VPN {}", vpnInterface.getName(), vpnName); + vpnInterfaceManager.remove( + VpnUtil.getVpnInterfaceIdentifier(vpnInterface.getName()), vpnInterface); + } + } + } + delete(LogicalDatastoreType.OPERATIONAL, vpnIdentifier); String rd = del.getIpv4Family().getRouteDistinguisher(); @@ -219,7 +241,7 @@ public class VpnManager extends AbstractDataChangeListener implemen } else { LOG.warn("RPC Call to Get Unique Id returned with Errors {}", rpcResult.getErrors()); } - } catch (NullPointerException | InterruptedException | ExecutionException e) { + } catch (InterruptedException | ExecutionException e) { LOG.warn("Exception when getting Unique Id",e); } return 0;