X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dhcpservice%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fdhcpservice%2FDhcpDesignatedDpnListener.java;h=0078cf1a48b841a056765b2242ab6df76fd844c9;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=188f9461ce1bd64f204aa8c2b3f67b95d94d932c;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/dhcpservice/impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpDesignatedDpnListener.java b/dhcpservice/impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpDesignatedDpnListener.java index 188f9461ce..0078cf1a48 100644 --- a/dhcpservice/impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpDesignatedDpnListener.java +++ b/dhcpservice/impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpDesignatedDpnListener.java @@ -7,13 +7,13 @@ */ package org.opendaylight.netvirt.dhcpservice; -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.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +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.netvirt.dhcp.rev160428.DesignatedSwitchesForExternalTunnels; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.dhcp.rev160428.designated.switches._for.external.tunnels.DesignatedSwitchForTunnel; @@ -25,8 +25,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class DhcpDesignatedDpnListener - extends AsyncClusteredDataTreeChangeListenerBase { +public class DhcpDesignatedDpnListener extends AbstractClusteredAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(DhcpDesignatedDpnListener.class); private final DhcpExternalTunnelManager dhcpExternalTunnelManager; @@ -37,16 +36,19 @@ public class DhcpDesignatedDpnListener public DhcpDesignatedDpnListener(final DhcpExternalTunnelManager dhcpExternalTunnelManager, final DataBroker broker, final DhcpserviceConfig config) { - super(DesignatedSwitchForTunnel.class, DhcpDesignatedDpnListener.class); + super(broker, LogicalDatastoreType.CONFIGURATION, + InstanceIdentifier.create(DesignatedSwitchesForExternalTunnels.class) + .child(DesignatedSwitchForTunnel.class), + Executors.newListeningSingleThreadExecutor("DhcpDesignatedDpnListener", LOG)); this.dhcpExternalTunnelManager = dhcpExternalTunnelManager; this.broker = broker; this.config = config; + init(); } - @PostConstruct public void init() { if (config.isControllerDhcpEnabled()) { - registerListener(LogicalDatastoreType.CONFIGURATION, broker); + LOG.info("{} close", getClass().getSimpleName()); } } @@ -54,11 +56,15 @@ public class DhcpDesignatedDpnListener @PreDestroy public void close() { super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); LOG.debug("DhcpDesignatedDpnListener Listener Closed"); } @Override - protected void remove(InstanceIdentifier identifier, DesignatedSwitchForTunnel del) { + public void remove(InstanceIdentifier identifier, DesignatedSwitchForTunnel del) { + if (!config.isControllerDhcpEnabled()) { + return; + } LOG.debug("Remove for DesignatedSwitchForTunnel : {}", del); dhcpExternalTunnelManager.removeFromLocalCache(Uint64.valueOf(del.getDpId()), del.getTunnelRemoteIpAddress(), del.getElanInstanceName()); @@ -76,8 +82,11 @@ public class DhcpDesignatedDpnListener } @Override - protected void update(InstanceIdentifier identifier, DesignatedSwitchForTunnel original, + public void update(InstanceIdentifier identifier, DesignatedSwitchForTunnel original, DesignatedSwitchForTunnel update) { + if (!config.isControllerDhcpEnabled()) { + return; + } LOG.debug("Update for DesignatedSwitchForTunnel original {}, update {}", original, update); dhcpExternalTunnelManager.removeFromLocalCache(Uint64.valueOf(original.getDpId()), original.getTunnelRemoteIpAddress(), original.getElanInstanceName()); @@ -103,7 +112,10 @@ public class DhcpDesignatedDpnListener } @Override - protected void add(InstanceIdentifier identifier, DesignatedSwitchForTunnel add) { + public void add(InstanceIdentifier identifier, DesignatedSwitchForTunnel add) { + if (!config.isControllerDhcpEnabled()) { + return; + } LOG.debug("Add for DesignatedSwitchForTunnel : {}", add); Uint64 designatedDpnId = Uint64.valueOf(add.getDpId()); IpAddress tunnelRemoteIpAddress = add.getTunnelRemoteIpAddress(); @@ -119,15 +131,4 @@ public class DhcpDesignatedDpnListener subnetDhcpData.get().getPortMacaddress()); } } - - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(DesignatedSwitchesForExternalTunnels.class) - .child(DesignatedSwitchForTunnel.class); - } - - @Override - protected DhcpDesignatedDpnListener getDataTreeChangeListener() { - return DhcpDesignatedDpnListener.this; - } }