2 * Copyright (c) 2017 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
8 package org.opendaylight.netconf.topology.singleton.impl.utils;
10 import akka.actor.ActorSystem;
11 import com.google.common.util.concurrent.ListeningExecutorService;
12 import io.netty.util.concurrent.EventExecutor;
13 import java.util.concurrent.ScheduledExecutorService;
14 import org.opendaylight.aaa.encrypt.AAAEncryptionService;
15 import org.opendaylight.mdsal.binding.api.DataBroker;
16 import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
17 import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
18 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
19 import org.opendaylight.netconf.client.NetconfClientDispatcher;
20 import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23 import scala.concurrent.duration.Duration;
25 public class NetconfTopologySetup {
27 private final ClusterSingletonServiceProvider clusterSingletonServiceProvider;
28 private final DOMRpcProviderService rpcProviderRegistry;
29 private final DOMActionProviderService actionProviderRegistry;
30 private final DataBroker dataBroker;
31 private final InstanceIdentifier<Node> instanceIdentifier;
32 private final Node node;
33 private final ScheduledExecutorService keepaliveExecutor;
34 private final ListeningExecutorService processingExecutor;
35 private final ActorSystem actorSystem;
36 private final EventExecutor eventExecutor;
37 private final NetconfClientDispatcher netconfClientDispatcher;
38 private final String topologyId;
39 private final NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
40 private final Duration idleTimeout;
41 private final String privateKeyPath;
42 private final String privateKeyPassphrase;
43 private final AAAEncryptionService encryptionService;
45 NetconfTopologySetup(final NetconfTopologySetupBuilder builder) {
46 this.clusterSingletonServiceProvider = builder.getClusterSingletonServiceProvider();
47 this.rpcProviderRegistry = builder.getRpcProviderRegistry();
48 this.actionProviderRegistry = builder.getActionProviderRegistry();
49 this.dataBroker = builder.getDataBroker();
50 this.instanceIdentifier = builder.getInstanceIdentifier();
51 this.node = builder.getNode();
52 this.keepaliveExecutor = builder.getKeepaliveExecutor();
53 this.processingExecutor = builder.getProcessingExecutor();
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();
60 this.privateKeyPath = builder.getPrivateKeyPath();
61 this.privateKeyPassphrase = builder.getPrivateKeyPassphrase();
62 this.encryptionService = builder.getEncryptionService();
65 public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
66 return clusterSingletonServiceProvider;
69 public DOMRpcProviderService getRpcProviderRegistry() {
70 return rpcProviderRegistry;
73 public DOMActionProviderService getActionProviderRegistry() {
74 return actionProviderRegistry;
77 public DataBroker getDataBroker() {
81 public InstanceIdentifier<Node> getInstanceIdentifier() {
82 return instanceIdentifier;
85 public Node getNode() {
89 public ListeningExecutorService getProcessingExecutor() {
90 return processingExecutor;
93 public ScheduledExecutorService getKeepaliveExecutor() {
94 return keepaliveExecutor;
97 public ActorSystem getActorSystem() {
101 public EventExecutor getEventExecutor() {
102 return eventExecutor;
105 public String getTopologyId() {
109 public NetconfClientDispatcher getNetconfClientDispatcher() {
110 return netconfClientDispatcher;
113 public NetconfDevice.SchemaResourcesDTO getSchemaResourcesDTO() {
114 return schemaResourceDTO;
117 public Duration getIdleTimeout() {
121 public String getPrivateKeyPath() {
122 return privateKeyPath;
125 public String getPrivateKeyPassphrase() {
126 return privateKeyPassphrase;
129 public AAAEncryptionService getEncryptionService() {
130 return encryptionService;
133 public static class NetconfTopologySetupBuilder {
135 private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
136 private DOMRpcProviderService rpcProviderRegistry;
137 private DOMActionProviderService actionProviderRegistry;
138 private DataBroker dataBroker;
139 private InstanceIdentifier<Node> instanceIdentifier;
141 private ScheduledExecutorService keepaliveExecutor;
142 private ListeningExecutorService processingExecutor;
143 private ActorSystem actorSystem;
144 private EventExecutor eventExecutor;
145 private String topologyId;
146 private NetconfClientDispatcher netconfClientDispatcher;
147 private NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
148 private Duration idleTimeout;
149 private String privateKeyPath;
150 private String privateKeyPassphrase;
151 private AAAEncryptionService encryptionService;
153 public NetconfTopologySetupBuilder() {
156 private ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
157 return clusterSingletonServiceProvider;
160 public NetconfTopologySetupBuilder setClusterSingletonServiceProvider(
161 final ClusterSingletonServiceProvider clusterSingletonServiceProvider) {
162 this.clusterSingletonServiceProvider = clusterSingletonServiceProvider;
166 private DOMRpcProviderService getRpcProviderRegistry() {
167 return rpcProviderRegistry;
170 public NetconfTopologySetupBuilder setRpcProviderRegistry(final DOMRpcProviderService rpcProviderRegistry) {
171 this.rpcProviderRegistry = rpcProviderRegistry;
175 private DOMActionProviderService getActionProviderRegistry() {
176 return actionProviderRegistry;
179 public NetconfTopologySetupBuilder setActionProviderRegistry(
180 final DOMActionProviderService actionProviderRegistry) {
181 this.actionProviderRegistry = actionProviderRegistry;
185 private DataBroker getDataBroker() {
189 public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) {
190 this.dataBroker = dataBroker;
194 private InstanceIdentifier<Node> getInstanceIdentifier() {
195 return instanceIdentifier;
198 public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier<Node> instanceIdentifier) {
199 this.instanceIdentifier = instanceIdentifier;
203 public Node getNode() {
207 public NetconfTopologySetupBuilder setNode(final Node node) {
212 public NetconfTopologySetup build() {
213 return new NetconfTopologySetup(this);
216 private ScheduledExecutorService getKeepaliveExecutor() {
217 return keepaliveExecutor;
220 public NetconfTopologySetupBuilder setKeepaliveExecutor(final ScheduledExecutorService keepaliveExecutor) {
221 this.keepaliveExecutor = keepaliveExecutor;
225 private ListeningExecutorService getProcessingExecutor() {
226 return processingExecutor;
229 public NetconfTopologySetupBuilder setProcessingExecutor(final ListeningExecutorService processingExecutor) {
230 this.processingExecutor = processingExecutor;
234 private ActorSystem getActorSystem() {
238 public NetconfTopologySetupBuilder setActorSystem(final ActorSystem actorSystem) {
239 this.actorSystem = actorSystem;
243 private EventExecutor getEventExecutor() {
244 return eventExecutor;
247 public NetconfTopologySetupBuilder setEventExecutor(final EventExecutor eventExecutor) {
248 this.eventExecutor = eventExecutor;
252 private String getTopologyId() {
256 public NetconfTopologySetupBuilder setTopologyId(final String topologyId) {
257 this.topologyId = topologyId;
261 private NetconfClientDispatcher getNetconfClientDispatcher() {
262 return netconfClientDispatcher;
265 public NetconfTopologySetupBuilder setNetconfClientDispatcher(final NetconfClientDispatcher clientDispatcher) {
266 this.netconfClientDispatcher = clientDispatcher;
270 public NetconfTopologySetupBuilder setSchemaResourceDTO(
271 final NetconfDevice.SchemaResourcesDTO schemaResourceDTO) {
272 this.schemaResourceDTO = schemaResourceDTO;
276 private NetconfDevice.SchemaResourcesDTO getSchemaResourceDTO() {
277 return schemaResourceDTO;
280 public NetconfTopologySetupBuilder setIdleTimeout(final Duration idleTimeout) {
281 this.idleTimeout = idleTimeout;
285 private Duration getIdleTimeout() {
289 public NetconfTopologySetupBuilder setPrivateKeyPath(final String privateKeyPath) {
290 this.privateKeyPath = privateKeyPath;
294 public String getPrivateKeyPath() {
295 return this.privateKeyPath;
298 public NetconfTopologySetupBuilder setPrivateKeyPassphrase(final String privateKeyPassphrase) {
299 this.privateKeyPassphrase = privateKeyPassphrase;
303 public String getPrivateKeyPassphrase() {
304 return this.privateKeyPassphrase;
307 private AAAEncryptionService getEncryptionService() {
308 return this.encryptionService;
311 public NetconfTopologySetupBuilder setEncryptionService(final AAAEncryptionService encryptionService) {
312 this.encryptionService = encryptionService;
316 public static NetconfTopologySetupBuilder create() {
317 return new NetconfTopologySetupBuilder();