X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2Fsal%2FNetconfDeviceSalProvider.java;h=bf870bf36a07ccd421f86e9eeba1571ad73f0e5e;hp=dfae165d30c3fba4059b0c4c4aa5fb9308b825f6;hb=e433e0aa67cc6d144cd3d8d6117de864eb7ebf97;hpb=b07c707c750b890bac8edca75e130a6406bc99a9 diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceSalProvider.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceSalProvider.java index dfae165d30..bf870bf36a 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceSalProvider.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/sal/NetconfDeviceSalProvider.java @@ -10,20 +10,19 @@ package org.opendaylight.controller.sal.connect.netconf.sal; import com.google.common.base.Preconditions; import java.util.Collection; import java.util.Collections; -import java.util.concurrent.ExecutorService; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.controller.md.sal.dom.api.DOMNotification; +import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; import org.opendaylight.controller.sal.core.api.Broker; import org.opendaylight.controller.sal.core.api.Provider; -import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; -import org.opendaylight.controller.sal.core.api.notify.NotificationPublishService; import org.opendaylight.yangtools.concepts.ObjectRegistration; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,15 +32,13 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding private static final Logger logger = LoggerFactory.getLogger(NetconfDeviceSalProvider.class); private final RemoteDeviceId id; - private final ExecutorService executor; private volatile NetconfDeviceDatastoreAdapter datastoreAdapter; private MountInstance mountInstance; private volatile NetconfDeviceTopologyAdapter topologyDatastoreAdapter; - public NetconfDeviceSalProvider(final RemoteDeviceId deviceId, final ExecutorService executor) { + public NetconfDeviceSalProvider(final RemoteDeviceId deviceId) { this.id = deviceId; - this.executor = executor; } public MountInstance getMountInstance() { @@ -91,6 +88,8 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding mountInstance.close(); datastoreAdapter.close(); datastoreAdapter = null; + topologyDatastoreAdapter.close(); + topologyDatastoreAdapter = null; } static final class MountInstance implements AutoCloseable { @@ -98,7 +97,7 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding private DOMMountPointService mountService; private final RemoteDeviceId id; private ObjectRegistration registration; - private NotificationPublishService notificationSerivce; + private NetconfDeviceNotificationService notificationService; private ObjectRegistration topologyRegistration; @@ -109,8 +108,8 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding @Deprecated synchronized void onDeviceConnected(final SchemaContext initialCtx, - final DOMDataBroker broker, final RpcProvisionRegistry rpc, - final NotificationPublishService notificationSerivce) { + final DOMDataBroker broker, final DOMRpcService rpc, + final NetconfDeviceNotificationService notificationService) { Preconditions.checkNotNull(mountService, "Closed"); Preconditions.checkState(registration == null, "Already initialized"); @@ -119,16 +118,18 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding mountBuilder.addInitialSchemaContext(initialCtx); mountBuilder.addService(DOMDataBroker.class, broker); - mountBuilder.addService(RpcProvisionRegistry.class, rpc); - this.notificationSerivce = notificationSerivce; - mountBuilder.addService(NotificationPublishService.class, notificationSerivce); + mountBuilder.addService(DOMRpcService.class, rpc); + mountBuilder.addService(DOMNotificationService.class, notificationService); + this.notificationService = notificationService; registration = mountBuilder.register(); + logger.debug("{}: Mountpoint exposed into MD-SAL {}", id, registration); } @Deprecated synchronized void onDeviceDisconnected() { if(registration == null) { + logger.trace("{}: Not removing mountpoint from MD-SAL, mountpoint was not registered yet", id); return; } @@ -138,13 +139,14 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding // Only log and ignore logger.warn("Unable to unregister mount instance for {}. Ignoring exception", id.getPath(), e); } finally { + logger.debug("{}: Mountpoint removed from MD-SAL {}", id, registration); registration = null; } } synchronized void onTopologyDeviceConnected(final SchemaContext initialCtx, - final DOMDataBroker broker, final RpcProvisionRegistry rpc, - final NotificationPublishService notificationSerivce) { + final DOMDataBroker broker, final DOMRpcService rpc, + final NetconfDeviceNotificationService notificationService) { Preconditions.checkNotNull(mountService, "Closed"); Preconditions.checkState(topologyRegistration == null, "Already initialized"); @@ -153,15 +155,17 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding mountBuilder.addInitialSchemaContext(initialCtx); mountBuilder.addService(DOMDataBroker.class, broker); - mountBuilder.addService(RpcProvisionRegistry.class, rpc); - this.notificationSerivce = notificationSerivce; - mountBuilder.addService(NotificationPublishService.class, notificationSerivce); + mountBuilder.addService(DOMRpcService.class, rpc); + mountBuilder.addService(DOMNotificationService.class, notificationService); topologyRegistration = mountBuilder.register(); + logger.debug("{}: TOPOLOGY Mountpoint exposed into MD-SAL {}", id, registration); + } synchronized void onTopologyDeviceDisconnected() { if(topologyRegistration == null) { + logger.trace("{}: Not removing TOPOLOGY mountpoint from MD-SAL, mountpoint was not registered yet", id); return; } @@ -171,22 +175,21 @@ final class NetconfDeviceSalProvider implements AutoCloseable, Provider, Binding // Only log and ignore logger.warn("Unable to unregister mount instance for {}. Ignoring exception", id.getTopologyPath(), e); } finally { + logger.debug("{}: TOPOLOGY Mountpoint removed from MD-SAL {}", id, registration); topologyRegistration = null; } } @Override synchronized public void close() throws Exception { - if(registration != null) { - onDeviceDisconnected(); - onTopologyDeviceDisconnected(); - } + onDeviceDisconnected(); + onTopologyDeviceDisconnected(); mountService = null; } - public synchronized void publish(final CompositeNode domNotification) { - Preconditions.checkNotNull(notificationSerivce, "Device not set up yet, cannot handle notification {}", domNotification); - notificationSerivce.publish(domNotification); + public synchronized void publish(final DOMNotification domNotification) { + Preconditions.checkNotNull(notificationService, "Device not set up yet, cannot handle notification {}", domNotification); + notificationService.publishNotification(domNotification); } }