X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Fl2gw%2Flisteners%2FL2GatewayListener.java;h=6ca606379963d6314e3cf53360e4d9c81a0f46e7;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=c4acf7f7927b78ff3b3e313a9a8aa906398b158e;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/L2GatewayListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/L2GatewayListener.java index c4acf7f792..6ca6063799 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/L2GatewayListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/L2GatewayListener.java @@ -21,12 +21,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.mdsalutil.MDSALUtil; @@ -36,6 +33,9 @@ import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants; import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundUtils; import org.opendaylight.genius.utils.hwvtep.HwvtepUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService; import org.opendaylight.netvirt.elan.l2gw.recovery.impl.L2GatewayInstanceRecoveryHandler; import org.opendaylight.netvirt.elan.l2gw.utils.L2GatewayUtils; @@ -44,6 +44,7 @@ import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayCache; import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayDevice; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l2gateways.rev150712.l2gateway.attributes.Devices; @@ -59,7 +60,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase +public class L2GatewayListener extends AbstractClusteredAsyncDataTreeChangeListener implements RecoverableListener { private static final Logger LOG = LoggerFactory.getLogger(L2GatewayListener.class); private final DataBroker dataBroker; @@ -76,6 +77,9 @@ public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase< final JobCoordinator jobCoordinator, final L2GatewayCache l2GatewayCache, L2GatewayInstanceRecoveryHandler l2GatewayInstanceRecoveryHandler, ServiceRecoveryRegistry serviceRecoveryRegistry) { + super(dataBroker, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(Neutron.class) + .child(L2gateways.class).child(L2gateway.class), + Executors.newListeningSingleThreadExecutor("L2GatewayListener", LOG)); this.dataBroker = dataBroker; this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); this.entityOwnershipUtils = new EntityOwnershipUtils(entityOwnershipService); @@ -85,31 +89,32 @@ public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase< this.l2GatewayCache = l2GatewayCache; serviceRecoveryRegistry.addRecoverableListener(l2GatewayInstanceRecoveryHandler.buildServiceRegistryKey(), this); + init(); } - @PostConstruct public void init() { LOG.info("{} init", getClass().getSimpleName()); - registerListener(); + } + + @Override + @PreDestroy + public void close() { + super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); } public void registerListener() { + super.register(); LOG.info("Registering L2Gateway Listener"); - registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); } public void deregisterListener() { + super.close(); LOG.info("Deregistering L2GatewayListener"); - super.deregisterListener(); } @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Neutron.class).child(L2gateways.class).child(L2gateway.class); - } - - @Override - protected void add(final InstanceIdentifier identifier, final L2gateway input) { + public void add(final InstanceIdentifier identifier, final L2gateway input) { LOG.info("Adding L2gateway with ID: {}", input.getUuid()); for (Devices l2Device : input.nonnullDevices()) { @@ -119,7 +124,7 @@ public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase< } @Override - protected void remove(final InstanceIdentifier identifier, final L2gateway input) { + public void remove(final InstanceIdentifier identifier, final L2gateway input) { LOG.info("Removing L2gateway with ID: {}", input.getUuid()); List connections = l2gwService .getL2GwConnectionsByL2GatewayId(input.getUuid()); @@ -147,7 +152,7 @@ public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase< } @Override - protected void update(InstanceIdentifier identifier, L2gateway original, L2gateway update) { + public void update(InstanceIdentifier identifier, L2gateway original, L2gateway update) { LOG.trace("Updating L2gateway : key: {}, original value={}, update value={}", identifier, original, update); List connections = l2gwService.getAssociatedL2GwConnections( Sets.newHashSet(update.getUuid())); @@ -278,11 +283,6 @@ public class L2GatewayListener extends AsyncClusteredDataTreeChangeListenerBase< } } - @Override - protected L2GatewayListener getDataTreeChangeListener() { - return this; - } - static class DeviceInterfaces { Map> deviceInterfacesMap = new HashMap<>();