import java.net.InetSocketAddress;
import java.util.Collection;
import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
+import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
import org.opendaylight.protocol.bmp.api.BmpDispatcher;
-import org.opendaylight.protocol.bmp.impl.config.BmpDeployerDependencies;
import org.opendaylight.protocol.bmp.impl.spi.BmpMonitoringStation;
import org.opendaylight.protocol.concepts.KeyMapping;
import org.opendaylight.protocol.util.Ipv4Util;
private Channel channel;
private ClusterSingletonServiceRegistration singletonServiceRegistration;
- public BmpMonitoringStationImpl(final BmpDeployerDependencies bmpDeployerDependencies,
- final BmpDispatcher dispatcher, final MonitorId monitorId, final InetSocketAddress address,
- final Collection<MonitoredRouter> mrs) {
- this.domDataBroker = requireNonNull(bmpDeployerDependencies.getDomDataBroker());
+ public BmpMonitoringStationImpl(final DOMDataBroker domDataBroker, final BmpDispatcher dispatcher,
+ final RIBExtensionConsumerContext extensions, final BindingCodecTree codecTree,
+ final ClusterSingletonServiceProvider singletonProvider, final MonitorId monitorId,
+ final InetSocketAddress address, final Collection<MonitoredRouter> mrs) {
+ this.domDataBroker = requireNonNull(domDataBroker);
this.dispatcher = requireNonNull(dispatcher);
this.monitorId = monitorId;
this.monitoredRouters = mrs;
.node(BmpMonitor.QNAME).node(Monitor.QNAME)
.nodeWithKey(Monitor.QNAME, MONITOR_ID_QNAME, monitorId.getValue()).build();
- this.sessionManager = new RouterSessionManager(this.yangMonitorId, this.domDataBroker,
- bmpDeployerDependencies.getExtensions(), bmpDeployerDependencies.getTree());
+ this.sessionManager = new RouterSessionManager(this.yangMonitorId, this.domDataBroker, extensions, codecTree);
LOG.info("BMP Monitor Singleton Service {} registered, Monitor Id {}",
getIdentifier().getName(), this.monitorId.getValue());
- this.singletonServiceRegistration = bmpDeployerDependencies.getClusterSingletonProvider()
- .registerClusterSingletonService(this);
+ this.singletonServiceRegistration = singletonProvider.registerClusterSingletonService(this);
}
@Override
+++ /dev/null
-/*
- * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.bmp.impl.config;
-
-import static java.util.Objects.requireNonNull;
-
-import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
-import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
-import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
-
-public final class BmpDeployerDependencies {
- private final DataBroker dataBroker;
- private final RIBExtensionConsumerContext extensions;
- private final BindingCodecTree tree;
- private final DOMDataBroker domDataBroker;
- private final ClusterSingletonServiceProvider singletonProvider;
-
- public BmpDeployerDependencies(final DataBroker dataBroker, final DOMDataBroker domDataBroker,
- final RIBExtensionConsumerContext extensions, final BindingCodecTree codecTree,
- final ClusterSingletonServiceProvider singletonProvider) {
- this.dataBroker = requireNonNull(dataBroker);
- this.domDataBroker = requireNonNull(domDataBroker);
- this.extensions = requireNonNull(extensions);
- this.tree = requireNonNull(codecTree);
- this.singletonProvider = requireNonNull(singletonProvider);
- }
-
- public DataBroker getDataBroker() {
- return this.dataBroker;
- }
-
- public RIBExtensionConsumerContext getExtensions() {
- return this.extensions;
- }
-
- public BindingCodecTree getTree() {
- return this.tree;
- }
-
- public DOMDataBroker getDomDataBroker() {
- return this.domDataBroker;
- }
-
- public ClusterSingletonServiceProvider getClusterSingletonProvider() {
- return this.singletonProvider;
- }
-}
import java.util.concurrent.TimeUnit;
import org.checkerframework.checker.lock.qual.GuardedBy;
import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
+import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType;
import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
+import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
import org.opendaylight.protocol.bmp.api.BmpDispatcher;
import org.opendaylight.protocol.bmp.impl.app.BmpMonitoringStationImpl;
import org.opendaylight.protocol.bmp.impl.spi.BmpMonitoringStation;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final long TIMEOUT_NS = TimeUnit.SECONDS.toNanos(5);
private static final InstanceIdentifier<OdlBmpMonitors> ODL_BMP_MONITORS_IID =
InstanceIdentifier.create(OdlBmpMonitors.class);
- private static final YangInstanceIdentifier BMP_MONITOR_YII =
- YangInstanceIdentifier.of(BmpMonitor.QNAME);
- private static final ContainerNode EMPTY_PARENT_NODE = Builders.containerBuilder().withNodeIdentifier(
- new NodeIdentifier(BmpMonitor.QNAME)).addChild(ImmutableNodes.mapNodeBuilder(Monitor.QNAME)
- .build()).build();
+ private static final YangInstanceIdentifier BMP_MONITOR_YII = YangInstanceIdentifier.of(BmpMonitor.QNAME);
+ private static final ContainerNode EMPTY_PARENT_NODE = Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(BmpMonitor.QNAME))
+ .addChild(ImmutableNodes.mapNodeBuilder(Monitor.QNAME).build())
+ .build();
+
private final BmpDispatcher dispatcher;
+ private final DataBroker dataBroker;
+ private final DOMDataBroker domDataBroker;
+ private final RIBExtensionConsumerContext extensions;
+ private final BindingCodecTree codecTree;
+ private final ClusterSingletonServiceProvider singletonProvider;
+
@GuardedBy("this")
private final Map<MonitorId, BmpMonitoringStationImpl> bmpMonitorServices = new HashMap<>();
- private final BmpDeployerDependencies bmpDeployerDependencies;
@GuardedBy("this")
private ListenerRegistration<BmpDeployerImpl> registration;
- public BmpDeployerImpl(final BmpDispatcher dispatcher, final BmpDeployerDependencies bmpDeployerDependencies) {
+ public BmpDeployerImpl(@Reference final BmpDispatcher dispatcher, @Reference final DataBroker dataBroker,
+ @Reference final DOMDataBroker domDataBroker, @Reference final RIBExtensionConsumerContext extensions,
+ @Reference final BindingCodecTree codecTree,
+ @Reference final ClusterSingletonServiceProvider singletonProvider) {
this.dispatcher = requireNonNull(dispatcher);
- this.bmpDeployerDependencies = requireNonNull(bmpDeployerDependencies);
+ this.dataBroker = requireNonNull(dataBroker);
+ this.domDataBroker = requireNonNull(domDataBroker);
+ this.extensions = requireNonNull(extensions);
+ this.codecTree = requireNonNull(codecTree);
+ this.singletonProvider = requireNonNull(singletonProvider);
}
public synchronized void init() {
- final DOMDataTreeWriteTransaction wTx = this.bmpDeployerDependencies
- .getDomDataBroker().newWriteOnlyTransaction();
+ final DOMDataTreeWriteTransaction wTx = this.domDataBroker.newWriteOnlyTransaction();
wTx.merge(LogicalDatastoreType.OPERATIONAL, BMP_MONITOR_YII, EMPTY_PARENT_NODE);
wTx.commit().addCallback(new FutureCallback<CommitInfo>() {
@Override
LOG.error("Failed commit", trw);
}
}, MoreExecutors.directExecutor());
- this.registration = this.bmpDeployerDependencies.getDataBroker().registerDataTreeChangeListener(
+ this.registration = dataBroker.registerDataTreeChangeListener(
DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, ODL_BMP_MONITORS_IID), this);
}
final Server server = bmpConfig.getServer();
final InetSocketAddress inetAddress =
Ipv4Util.toInetSocketAddress(server.getBindingAddress(), server.getBindingPort());
- final BmpMonitoringStationImpl monitor = new BmpMonitoringStationImpl(this.bmpDeployerDependencies,
- this.dispatcher, monitorId, inetAddress, bmpConfig.nonnullMonitoredRouter().values());
+ final BmpMonitoringStationImpl monitor = new BmpMonitoringStationImpl(this.domDataBroker, this.dispatcher,
+ this.extensions, this.codecTree, this.singletonProvider, monitorId, inetAddress,
+ bmpConfig.nonnullMonitoredRouter().values());
this.bmpMonitorServices.put(monitorId, monitor);
} catch (final Exception e) {
LOG.error("Failed to create Bmp Monitor {}.", monitorId, e);
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved.
-
- This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
- and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0">
-
- <reference id="bmpDispatcher" interface="org.opendaylight.protocol.bmp.api.BmpDispatcher"/>
-
- <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
- <reference id="domDataBroker" interface="org.opendaylight.mdsal.dom.api.DOMDataBroker"/>
- <reference id="globalBgpExtensions" interface="org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext"/>
- <reference id="codecTree" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree"/>
- <reference id="clusterSingletonServiceProvider" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
-
- <bean id="bmpDeployerDependecies" class="org.opendaylight.protocol.bmp.impl.config.BmpDeployerDependencies">
- <argument ref="dataBroker"/>
- <argument ref="domDataBroker"/>
- <argument ref="globalBgpExtensions"/>
- <argument ref="codecTree"/>
- <argument ref="clusterSingletonServiceProvider"/>
- </bean>
-
- <bean id="bmpDeployer" class="org.opendaylight.protocol.bmp.impl.config.BmpDeployerImpl"
- init-method="init" destroy-method="close">
- <argument ref="bmpDispatcher"/>
- <argument ref="bmpDeployerDependecies"/>
- </bean>
-</blueprint>
import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext;
import org.opendaylight.protocol.bmp.impl.BmpDispatcherImpl;
import org.opendaylight.protocol.bmp.impl.BmpHandlerFactory;
-import org.opendaylight.protocol.bmp.impl.config.BmpDeployerDependencies;
import org.opendaylight.protocol.bmp.impl.session.DefaultBmpSessionFactory;
import org.opendaylight.protocol.bmp.impl.spi.BmpMonitoringStation;
import org.opendaylight.protocol.bmp.parser.BmpActivator;
wTx.merge(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.of(BmpMonitor.QNAME), parentNode);
wTx.commit().get();
- final BmpDeployerDependencies bmpDependecies = new BmpDeployerDependencies(getDataBroker(), getDomBroker(),
- this.ribExtension, this.mappingService.currentSerializer(), this.clusterSSProv);
- this.bmpApp = new BmpMonitoringStationImpl(bmpDependecies, this.dispatcher, MONITOR_ID, inetAddress, null);
+ this.bmpApp = new BmpMonitoringStationImpl(getDomBroker(), this.dispatcher, this.ribExtension,
+ this.mappingService.currentSerializer(), this.clusterSSProv, MONITOR_ID, inetAddress, null);
readDataOperational(getDataBroker(), BMP_II, monitor -> {
assertEquals(1, monitor.nonnullMonitor().size());
final Monitor bmpMonitor = monitor.nonnullMonitor().values().iterator().next();
@Test
public void deploySecondInstance() throws Exception {
- final BmpDeployerDependencies bmpDependecies = new BmpDeployerDependencies(getDataBroker(), getDomBroker(),
- this.ribExtension, this.mappingService.currentSerializer(), this.clusterSSProv2);
-
- final BmpMonitoringStation monitoringStation2 = new BmpMonitoringStationImpl(bmpDependecies,
- this.dispatcher, new MonitorId("monitor2"),
- new InetSocketAddress(InetAddresses.forString(MONITOR_LOCAL_ADDRESS_2), MONITOR_LOCAL_PORT), null);
+ final BmpMonitoringStation monitoringStation2 = new BmpMonitoringStationImpl(getDomBroker(), this.dispatcher,
+ this.ribExtension, this.mappingService.currentSerializer(), this.clusterSSProv2, new MonitorId("monitor2"),
+ new InetSocketAddress(InetAddresses.forString(MONITOR_LOCAL_ADDRESS_2), MONITOR_LOCAL_PORT), null);
readDataOperational(getDataBroker(), BMP_II, monitor -> {
assertEquals(2, monitor.nonnullMonitor().size());