2 * Copyright (c) 2016 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.netconf.topology.singleton.impl.utils;
11 import akka.actor.ActorSystem;
12 import io.netty.util.concurrent.EventExecutor;
13 import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
14 import org.opendaylight.controller.config.threadpool.ThreadPool;
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
16 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
17 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
18 import org.opendaylight.controller.sal.core.api.Broker;
19 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
20 import org.opendaylight.netconf.client.NetconfClientDispatcher;
21 import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
24 import scala.concurrent.duration.Duration;
26 public class NetconfTopologySetup {
28 private final ClusterSingletonServiceProvider clusterSingletonServiceProvider;
29 private final RpcProviderRegistry rpcProviderRegistry;
30 private final DataBroker dataBroker;
31 private final InstanceIdentifier<Node> instanceIdentifier;
32 private final Node node;
33 private final BindingAwareBroker bindingAwareBroker;
34 private final ScheduledThreadPool keepaliveExecutor;
35 private final ThreadPool processingExecutor;
36 private final Broker domBroker;
37 private final ActorSystem actorSystem;
38 private final EventExecutor eventExecutor;
39 private final NetconfClientDispatcher netconfClientDispatcher;
40 private final String topologyId;
41 private final NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
42 private final Duration idleTimeout;
44 private NetconfTopologySetup(final NetconfTopologySetupBuilder builder) {
45 this.clusterSingletonServiceProvider = builder.getClusterSingletonServiceProvider();
46 this.rpcProviderRegistry = builder.getRpcProviderRegistry();
47 this.dataBroker = builder.getDataBroker();
48 this.instanceIdentifier = builder.getInstanceIdentifier();
49 this.node = builder.getNode();
50 this.bindingAwareBroker = builder.getBindingAwareBroker();
51 this.keepaliveExecutor = builder.getKeepaliveExecutor();
52 this.processingExecutor = builder.getProcessingExecutor();
53 this.domBroker = builder.getDomBroker();
54 this.actorSystem = builder.getActorSystem();
55 this.eventExecutor = builder.getEventExecutor();
56 this.netconfClientDispatcher = builder.getNetconfClientDispatcher();
57 this.topologyId = builder.getTopologyId();
58 this.schemaResourceDTO = builder.getSchemaResourceDTO();
59 this.idleTimeout = builder.getIdleTimeout();
62 public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
63 return clusterSingletonServiceProvider;
66 public RpcProviderRegistry getRpcProviderRegistry() {
67 return rpcProviderRegistry;
70 public DataBroker getDataBroker() {
74 public InstanceIdentifier<Node> getInstanceIdentifier() {
75 return instanceIdentifier;
78 public Node getNode() {
82 public BindingAwareBroker getBindingAwareBroker() {
83 return bindingAwareBroker;
86 public ThreadPool getProcessingExecutor() {
87 return processingExecutor;
90 public ScheduledThreadPool getKeepaliveExecutor() {
91 return keepaliveExecutor;
94 public Broker getDomBroker() {
98 public ActorSystem getActorSystem() {
102 public EventExecutor getEventExecutor() {
103 return eventExecutor;
106 public String getTopologyId() {
110 public NetconfClientDispatcher getNetconfClientDispatcher() {
111 return netconfClientDispatcher;
114 public NetconfDevice.SchemaResourcesDTO getSchemaResourcesDTO() {
115 return schemaResourceDTO;
118 public Duration getIdleTimeout() {
122 public static class NetconfTopologySetupBuilder {
124 private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
125 private RpcProviderRegistry rpcProviderRegistry;
126 private DataBroker dataBroker;
127 private InstanceIdentifier<Node> instanceIdentifier;
129 private BindingAwareBroker bindingAwareBroker;
130 private ScheduledThreadPool keepaliveExecutor;
131 private ThreadPool processingExecutor;
132 private Broker domBroker;
133 private ActorSystem actorSystem;
134 private EventExecutor eventExecutor;
135 private String topologyId;
136 private NetconfClientDispatcher netconfClientDispatcher;
137 private NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
138 private Duration idleTimeout;
140 public NetconfTopologySetupBuilder(){
143 private ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
144 return clusterSingletonServiceProvider;
147 public NetconfTopologySetupBuilder setClusterSingletonServiceProvider(
148 final ClusterSingletonServiceProvider clusterSingletonServiceProvider) {
149 this.clusterSingletonServiceProvider = clusterSingletonServiceProvider;
153 private RpcProviderRegistry getRpcProviderRegistry() {
154 return rpcProviderRegistry;
157 public NetconfTopologySetupBuilder setRpcProviderRegistry(final RpcProviderRegistry rpcProviderRegistry) {
158 this.rpcProviderRegistry = rpcProviderRegistry;
162 private DataBroker getDataBroker() {
166 public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) {
167 this.dataBroker = dataBroker;
171 private InstanceIdentifier<Node> getInstanceIdentifier() {
172 return instanceIdentifier;
175 public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier<Node> instanceIdentifier) {
176 this.instanceIdentifier = instanceIdentifier;
180 public Node getNode() {
184 public NetconfTopologySetupBuilder setNode(final Node node) {
189 public NetconfTopologySetup build() {
190 return new NetconfTopologySetup(this);
193 private BindingAwareBroker getBindingAwareBroker() {
194 return bindingAwareBroker;
197 public NetconfTopologySetupBuilder setBindingAwareBroker(final BindingAwareBroker bindingAwareBroker) {
198 this.bindingAwareBroker = bindingAwareBroker;
202 private ScheduledThreadPool getKeepaliveExecutor() {
203 return keepaliveExecutor;
206 public NetconfTopologySetupBuilder setKeepaliveExecutor(final ScheduledThreadPool keepaliveExecutor) {
207 this.keepaliveExecutor = keepaliveExecutor;
211 private ThreadPool getProcessingExecutor() {
212 return processingExecutor;
215 public NetconfTopologySetupBuilder setProcessingExecutor(final ThreadPool processingExecutor) {
216 this.processingExecutor = processingExecutor;
220 private Broker getDomBroker() {
224 public NetconfTopologySetupBuilder setDomBroker(final Broker domBroker) {
225 this.domBroker = domBroker;
229 private ActorSystem getActorSystem() {
233 public NetconfTopologySetupBuilder setActorSystem(final ActorSystem actorSystem) {
234 this.actorSystem = actorSystem;
238 private EventExecutor getEventExecutor() {
239 return eventExecutor;
242 public NetconfTopologySetupBuilder setEventExecutor(final EventExecutor eventExecutor) {
243 this.eventExecutor = eventExecutor;
247 private String getTopologyId() {
251 public NetconfTopologySetupBuilder setTopologyId(final String topologyId) {
252 this.topologyId = topologyId;
256 private NetconfClientDispatcher getNetconfClientDispatcher() {
257 return netconfClientDispatcher;
260 public NetconfTopologySetupBuilder setNetconfClientDispatcher(final NetconfClientDispatcher clientDispatcher) {
261 this.netconfClientDispatcher = clientDispatcher;
265 public NetconfTopologySetupBuilder setSchemaResourceDTO(
266 final NetconfDevice.SchemaResourcesDTO schemaResourceDTO) {
267 this.schemaResourceDTO = schemaResourceDTO;
271 private NetconfDevice.SchemaResourcesDTO getSchemaResourceDTO() {
272 return schemaResourceDTO;
275 public NetconfTopologySetupBuilder setIdleTimeout(final Duration idleTimeout) {
276 this.idleTimeout = idleTimeout;
280 private Duration getIdleTimeout() {
284 public static NetconfTopologySetupBuilder create() {
285 return new NetconfTopologySetupBuilder();