1 package org.opendaylight.controller.config.yang.netconf.mdsal.monitoring;
3 import java.util.Collections;
5 import org.opendaylight.controller.netconf.api.Capability;
6 import org.opendaylight.controller.netconf.api.monitoring.CapabilityListener;
7 import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService;
8 import org.opendaylight.controller.netconf.mapping.api.NetconfOperation;
9 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService;
10 import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory;
11 import org.opendaylight.controller.netconf.monitoring.GetSchema;
13 public class NetconfMdsalMonitoringMapperModule extends org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.AbstractNetconfMdsalMonitoringMapperModule {
14 public NetconfMdsalMonitoringMapperModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
15 super(identifier, dependencyResolver);
18 public NetconfMdsalMonitoringMapperModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.NetconfMdsalMonitoringMapperModule oldModule, final java.lang.AutoCloseable oldInstance) {
19 super(identifier, dependencyResolver, oldModule, oldInstance);
23 public void customValidation() {
24 // add custom validation form module attributes here.
28 public java.lang.AutoCloseable createInstance() {
29 final NetconfMonitoringService serverMonitoringDependency = getServerMonitoringDependency();
31 final MonitoringToMdsalWriter monitoringToMdsalWriter = new MonitoringToMdsalWriter(serverMonitoringDependency);
32 getBindingAwareBrokerDependency().registerProvider(monitoringToMdsalWriter);
34 final MdSalMonitoringMapperFactory mdSalMonitoringMapperFactory = new MdSalMonitoringMapperFactory(new MdsalMonitoringMapper(serverMonitoringDependency)) {
38 monitoringToMdsalWriter.close();
39 getAggregatorDependency().onRemoveNetconfOperationServiceFactory(this);
43 getAggregatorDependency().onAddNetconfOperationServiceFactory(mdSalMonitoringMapperFactory);
44 return mdSalMonitoringMapperFactory;
48 // FIXME almost exactly same code as in netconf-monitoring, refactor
49 private static class MdSalMonitoringMapperFactory implements NetconfOperationServiceFactory, AutoCloseable {
51 private final NetconfOperationService operationService;
53 private static final AutoCloseable AUTO_CLOSEABLE = new AutoCloseable() {
55 public void close() throws Exception {
60 public MdSalMonitoringMapperFactory(final NetconfOperationService operationService) {
61 this.operationService = operationService;
65 public NetconfOperationService createService(final String netconfSessionIdForReporting) {
66 return operationService;
70 public Set<Capability> getCapabilities() {
72 // No capabilities exposed to prevent clashes with schemas from mdsal-netconf-connector (it exposes all the schemas)
73 // If the schemas exposed by mdsal-netconf-connector are filtered, this class would expose monitoring related models
74 return Collections.emptySet();
78 public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
79 return AUTO_CLOSEABLE;
83 public void close() {}
87 private static class MdsalMonitoringMapper implements NetconfOperationService {
89 private final NetconfMonitoringService serverMonitoringDependency;
91 public MdsalMonitoringMapper(final NetconfMonitoringService serverMonitoringDependency) {
92 this.serverMonitoringDependency = serverMonitoringDependency;
96 public Set<NetconfOperation> getNetconfOperations() {
97 return Collections.<NetconfOperation>singleton(new GetSchema(serverMonitoringDependency));
101 public void close() {