X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=blobdiff_plain;f=natservice%2Fnatservice-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fnatservice%2Finternal%2FRouterPortsListener.java;fp=natservice%2Fnatservice-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fnatservice%2Finternal%2FRouterPortsListener.java;h=e58f86117d7b966a81105602730d4415254c48d3;hp=b5b8d52e9f82e05f1b8bebe466276710012a9938;hb=2718ef3baf8e42e48743fbae515c152aa017e51f;hpb=ad664a0c796d1b29f0f337a4ce0a26ce9b3c2238 diff --git a/natservice/natservice-impl/src/main/java/org/opendaylight/vpnservice/natservice/internal/RouterPortsListener.java b/natservice/natservice-impl/src/main/java/org/opendaylight/vpnservice/natservice/internal/RouterPortsListener.java index b5b8d52e..e58f8611 100644 --- a/natservice/natservice-impl/src/main/java/org/opendaylight/vpnservice/natservice/internal/RouterPortsListener.java +++ b/natservice/natservice-impl/src/main/java/org/opendaylight/vpnservice/natservice/internal/RouterPortsListener.java @@ -15,12 +15,16 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.FloatingIpInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.floating.ip.info.RouterPorts; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.floating.ip.info.RouterPortsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.floating.ip.info.RouterPortsKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.floating.ip.info.router.ports.PortsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.floating.ip.info.router.ports.PortsKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.router.to.vpn.mapping.Routermapping; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.router.to.vpn.mapping.RoutermappingBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.natservice.rev160111.router.to.vpn.mapping.RoutermappingKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,13 +86,28 @@ public class RouterPortsListener extends AbstractDataChangeListener new RouterPortsBuilder().setKey(new RouterPortsKey(routerName)).setRouterId(routerName) .setExternalNetworkId(routerPorts.getExternalNetworkId()).build()); } + //Check if the router is associated with any BGP VPN and update the association + String routerName = routerPorts.getRouterId(); + Uuid vpnName = NatUtil.getVpnForRouter(broker, routerName); + if(vpnName != null) { + InstanceIdentifier routerMappingId = NatUtil.getRouterVpnMappingId(routerName); + Optional optRouterMapping = NatUtil.read(broker, LogicalDatastoreType.OPERATIONAL, routerMappingId); + if(!optRouterMapping.isPresent()){ + Long vpnId = NatUtil.getVpnId(broker, vpnName.getValue()); + LOG.debug("Updating router {} to VPN {} association with Id {}", routerName, vpnName, vpnId); + Routermapping routerMapping = new RoutermappingBuilder().setKey(new RoutermappingKey(routerName)) + .setRouterName(routerName).setVpnName(vpnName.getValue()).setVpnId(vpnId).build(); + MDSALUtil.syncWrite(broker, LogicalDatastoreType.OPERATIONAL, routerMappingId, routerMapping); + } + } } @Override protected void remove(InstanceIdentifier identifier, RouterPorts routerPorts) { LOG.trace("Remove router ports method - key: " + identifier + ", value=" + routerPorts ); //MDSALUtil.syncDelete(broker, LogicalDatastoreType.OPERATIONAL, identifier); - + //Remove the router to vpn association mapping entry if at all present + MDSALUtil.syncDelete(broker, LogicalDatastoreType.OPERATIONAL, NatUtil.getRouterVpnMappingId(routerPorts.getRouterId())); } @Override