2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.config.yang.netconf.mdsal.monitoring;
11 import java.util.Collections;
13 import org.opendaylight.controller.config.util.capability.Capability;
14 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
15 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
16 import org.opendaylight.netconf.mapping.api.NetconfOperation;
17 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
18 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
19 import org.opendaylight.netconf.monitoring.GetSchema;
21 public class NetconfMdsalMonitoringMapperModule extends org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.AbstractNetconfMdsalMonitoringMapperModule {
22 public NetconfMdsalMonitoringMapperModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
23 super(identifier, dependencyResolver);
26 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) {
27 super(identifier, dependencyResolver, oldModule, oldInstance);
31 public void customValidation() {
32 // add custom validation form module attributes here.
36 public java.lang.AutoCloseable createInstance() {
37 final NetconfMonitoringService serverMonitoringDependency = getServerMonitoringDependency();
39 final MonitoringToMdsalWriter monitoringToMdsalWriter = new MonitoringToMdsalWriter(serverMonitoringDependency);
40 getBindingAwareBrokerDependency().registerProvider(monitoringToMdsalWriter);
42 final MdSalMonitoringMapperFactory mdSalMonitoringMapperFactory = new MdSalMonitoringMapperFactory(new MdsalMonitoringMapper(serverMonitoringDependency)) {
46 monitoringToMdsalWriter.close();
47 getAggregatorDependency().onRemoveNetconfOperationServiceFactory(this);
51 getAggregatorDependency().onAddNetconfOperationServiceFactory(mdSalMonitoringMapperFactory);
52 return mdSalMonitoringMapperFactory;
56 // FIXME almost exactly same code as in netconf-monitoring, refactor
57 private static class MdSalMonitoringMapperFactory implements NetconfOperationServiceFactory, AutoCloseable {
59 private final NetconfOperationService operationService;
61 private static final AutoCloseable AUTO_CLOSEABLE = new AutoCloseable() {
63 public void close() throws Exception {
68 public MdSalMonitoringMapperFactory(final NetconfOperationService operationService) {
69 this.operationService = operationService;
73 public NetconfOperationService createService(final String netconfSessionIdForReporting) {
74 return operationService;
78 public Set<Capability> getCapabilities() {
80 // No capabilities exposed to prevent clashes with schemas from mdsal-netconf-connector (it exposes all the schemas)
81 // If the schemas exposed by mdsal-netconf-connector are filtered, this class would expose monitoring related models
82 return Collections.emptySet();
86 public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
87 return AUTO_CLOSEABLE;
91 public void close() {}
95 private static class MdsalMonitoringMapper implements NetconfOperationService {
97 private final NetconfMonitoringService serverMonitoringDependency;
99 public MdsalMonitoringMapper(final NetconfMonitoringService serverMonitoringDependency) {
100 this.serverMonitoringDependency = serverMonitoringDependency;
104 public Set<NetconfOperation> getNetconfOperations() {
105 return Collections.<NetconfOperation>singleton(new GetSchema(serverMonitoringDependency));
109 public void close() {