X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Finternal%2FElanTunnelInterfaceStateListener.java;h=f63bfc63282921eef29a5a3bfc3f300c6c55fc05;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=2ea1705665c69583c65dbcd5ac119990024fc8df;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanTunnelInterfaceStateListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanTunnelInterfaceStateListener.java index 2ea1705665..f63bfc6328 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanTunnelInterfaceStateListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanTunnelInterfaceStateListener.java @@ -8,15 +8,16 @@ package org.opendaylight.netvirt.elan.internal; import java.util.Collections; -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.AsyncDataTreeChangeListenerBase; 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.netvirt.elan.utils.ElanConstants; import org.opendaylight.netvirt.elan.utils.ElanUtils; +import org.opendaylight.serviceutils.tools.listener.AbstractAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TepTypeInternal; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelsState; @@ -27,8 +28,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class ElanTunnelInterfaceStateListener extends AsyncDataTreeChangeListenerBase { +public class ElanTunnelInterfaceStateListener extends AbstractAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(ElanTunnelInterfaceStateListener.class); private final DataBroker dataBroker; private final ElanInterfaceManager elanInterfaceManager; @@ -39,35 +39,37 @@ public class ElanTunnelInterfaceStateListener extends AsyncDataTreeChangeListene public ElanTunnelInterfaceStateListener(final DataBroker dataBroker, final ElanInterfaceManager elanInterfaceManager, final ElanUtils elanUtils, final JobCoordinator jobCoordinator) { - super(StateTunnelList.class, ElanTunnelInterfaceStateListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(TunnelsState.class) + .child(StateTunnelList.class), + Executors.newListeningSingleThreadExecutor("ElanTunnelInterfaceStateListener", LOG)); this.dataBroker = dataBroker; this.elanInterfaceManager = elanInterfaceManager; this.elanUtils = elanUtils; this.jobCoordinator = jobCoordinator; } - @Override - @PostConstruct public void init() { - registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + LOG.info("{} init", getClass().getSimpleName()); } @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(TunnelsState.class).child(StateTunnelList.class); + @PreDestroy + public void close() { + super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); } @Override - protected void remove(InstanceIdentifier key, StateTunnelList delete) { + public void remove(InstanceIdentifier key, StateTunnelList delete) { } @Override - protected void update(InstanceIdentifier key, StateTunnelList original, + public void update(InstanceIdentifier key, StateTunnelList original, StateTunnelList update) { } @Override - protected void add(InstanceIdentifier key, StateTunnelList add) { + public void add(InstanceIdentifier key, StateTunnelList add) { LOG.info("processing add state for StateTunnelList {}", add); if (!isInternalTunnel(add)) { LOG.trace("tunnel {} is not a internal vxlan tunnel", add); @@ -97,11 +99,6 @@ public class ElanTunnelInterfaceStateListener extends AsyncDataTreeChangeListene } } - @Override - protected ElanTunnelInterfaceStateListener getDataTreeChangeListener() { - return this; - } - private static boolean isInternalTunnel(StateTunnelList stateTunnelList) { return stateTunnelList.getDstInfo() != null ? stateTunnelList.getDstInfo().getTepDeviceType() == TepTypeInternal.class : false;