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 static java.util.Objects.requireNonNull;
12 import akka.actor.ActorSystem;
13 import com.google.common.util.concurrent.ListeningExecutorService;
14 import io.netty.util.concurrent.EventExecutor;
15 import java.time.Duration;
16 import java.util.concurrent.ScheduledExecutorService;
17 import org.opendaylight.aaa.encrypt.AAAEncryptionService;
18 import org.opendaylight.mdsal.binding.api.DataBroker;
19 import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
20 import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
21 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
22 import org.opendaylight.netconf.client.NetconfClientDispatcher;
23 import org.opendaylight.netconf.client.mdsal.NetconfDevice;
24 import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemas;
25 import org.opendaylight.netconf.client.mdsal.api.CredentialProvider;
26 import org.opendaylight.netconf.client.mdsal.api.KeyStoreProvider;
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 public class NetconfTopologySetup {
31 private final ClusterSingletonServiceProvider clusterSingletonServiceProvider;
32 private final DOMRpcProviderService rpcProviderRegistry;
33 private final DOMActionProviderService actionProviderRegistry;
34 private final DataBroker dataBroker;
35 private final InstanceIdentifier<Node> instanceIdentifier;
36 private final Node node;
37 private final ScheduledExecutorService keepaliveExecutor;
38 private final ListeningExecutorService processingExecutor;
39 private final ActorSystem actorSystem;
40 private final EventExecutor eventExecutor;
41 private final NetconfClientDispatcher netconfClientDispatcher;
42 private final String topologyId;
43 private final NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
44 private final Duration idleTimeout;
45 private final AAAEncryptionService encryptionService;
46 private final BaseNetconfSchemas baseSchemas;
47 private final CredentialProvider credentialProvider;
48 private final KeyStoreProvider keyStoreProvider;
50 NetconfTopologySetup(final NetconfTopologySetupBuilder builder) {
51 clusterSingletonServiceProvider = builder.getClusterSingletonServiceProvider();
52 rpcProviderRegistry = builder.getRpcProviderRegistry();
53 actionProviderRegistry = builder.getActionProviderRegistry();
54 dataBroker = builder.getDataBroker();
55 instanceIdentifier = builder.getInstanceIdentifier();
56 node = builder.getNode();
57 keepaliveExecutor = builder.getKeepaliveExecutor();
58 processingExecutor = builder.getProcessingExecutor();
59 actorSystem = builder.getActorSystem();
60 eventExecutor = builder.getEventExecutor();
61 netconfClientDispatcher = builder.getNetconfClientDispatcher();
62 topologyId = builder.getTopologyId();
63 schemaResourceDTO = builder.getSchemaResourceDTO();
64 idleTimeout = builder.getIdleTimeout();
65 encryptionService = builder.getEncryptionService();
66 baseSchemas = builder.getBaseSchemas();
67 credentialProvider = builder.getCredentialProvider();
68 keyStoreProvider = builder.getKeyStoreProvider();
71 public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
72 return clusterSingletonServiceProvider;
75 public DOMRpcProviderService getRpcProviderRegistry() {
76 return rpcProviderRegistry;
79 public DOMActionProviderService getActionProviderRegistry() {
80 return actionProviderRegistry;
83 public DataBroker getDataBroker() {
87 public InstanceIdentifier<Node> getInstanceIdentifier() {
88 return instanceIdentifier;
91 public Node getNode() {
95 public ListeningExecutorService getProcessingExecutor() {
96 return processingExecutor;
99 public ScheduledExecutorService getKeepaliveExecutor() {
100 return keepaliveExecutor;
103 public ActorSystem getActorSystem() {
107 public EventExecutor getEventExecutor() {
108 return eventExecutor;
111 public String getTopologyId() {
115 public NetconfClientDispatcher getNetconfClientDispatcher() {
116 return netconfClientDispatcher;
119 public NetconfDevice.SchemaResourcesDTO getSchemaResourcesDTO() {
120 return schemaResourceDTO;
123 public Duration getIdleTimeout() {
127 public AAAEncryptionService getEncryptionService() {
128 return encryptionService;
131 public CredentialProvider getCredentialProvider() {
132 return requireNonNull(credentialProvider);
135 public KeyStoreProvider getKeyStoreProvider() {
136 return requireNonNull(keyStoreProvider);
139 public BaseNetconfSchemas getBaseSchemas() {
143 public static class NetconfTopologySetupBuilder {
144 private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
145 private DOMRpcProviderService rpcProviderRegistry;
146 private DOMActionProviderService actionProviderRegistry;
147 private DataBroker dataBroker;
148 private InstanceIdentifier<Node> instanceIdentifier;
150 private ScheduledExecutorService keepaliveExecutor;
151 private ListeningExecutorService processingExecutor;
152 private ActorSystem actorSystem;
153 private EventExecutor eventExecutor;
154 private String topologyId;
155 private NetconfClientDispatcher netconfClientDispatcher;
156 private NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
157 private Duration idleTimeout;
158 private AAAEncryptionService encryptionService;
159 private BaseNetconfSchemas baseSchemas;
160 private CredentialProvider credentialProvider;
161 private KeyStoreProvider keyStoreProvider;
163 public NetconfTopologySetupBuilder() {
167 BaseNetconfSchemas getBaseSchemas() {
168 return requireNonNull(baseSchemas, "BaseSchemas not initialized");
171 public NetconfTopologySetupBuilder setBaseSchemas(final BaseNetconfSchemas baseSchemas) {
172 this.baseSchemas = requireNonNull(baseSchemas);
176 ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
177 return clusterSingletonServiceProvider;
180 public NetconfTopologySetupBuilder setClusterSingletonServiceProvider(
181 final ClusterSingletonServiceProvider clusterSingletonServiceProvider) {
182 this.clusterSingletonServiceProvider = clusterSingletonServiceProvider;
186 DOMRpcProviderService getRpcProviderRegistry() {
187 return rpcProviderRegistry;
190 public NetconfTopologySetupBuilder setRpcProviderRegistry(final DOMRpcProviderService rpcProviderRegistry) {
191 this.rpcProviderRegistry = rpcProviderRegistry;
195 DOMActionProviderService getActionProviderRegistry() {
196 return actionProviderRegistry;
199 public NetconfTopologySetupBuilder setActionProviderRegistry(
200 final DOMActionProviderService actionProviderRegistry) {
201 this.actionProviderRegistry = actionProviderRegistry;
205 DataBroker getDataBroker() {
209 public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) {
210 this.dataBroker = dataBroker;
214 InstanceIdentifier<Node> getInstanceIdentifier() {
215 return instanceIdentifier;
218 public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier<Node> instanceIdentifier) {
219 this.instanceIdentifier = instanceIdentifier;
223 public Node getNode() {
227 public NetconfTopologySetupBuilder setNode(final Node node) {
232 public NetconfTopologySetup build() {
233 return new NetconfTopologySetup(this);
236 ScheduledExecutorService getKeepaliveExecutor() {
237 return keepaliveExecutor;
240 public NetconfTopologySetupBuilder setKeepaliveExecutor(final ScheduledExecutorService keepaliveExecutor) {
241 this.keepaliveExecutor = keepaliveExecutor;
245 ListeningExecutorService getProcessingExecutor() {
246 return processingExecutor;
249 public NetconfTopologySetupBuilder setProcessingExecutor(final ListeningExecutorService processingExecutor) {
250 this.processingExecutor = processingExecutor;
254 ActorSystem getActorSystem() {
258 public NetconfTopologySetupBuilder setActorSystem(final ActorSystem actorSystem) {
259 this.actorSystem = actorSystem;
263 EventExecutor getEventExecutor() {
264 return eventExecutor;
267 public NetconfTopologySetupBuilder setEventExecutor(final EventExecutor eventExecutor) {
268 this.eventExecutor = eventExecutor;
272 String getTopologyId() {
276 public NetconfTopologySetupBuilder setTopologyId(final String topologyId) {
277 this.topologyId = topologyId;
281 NetconfClientDispatcher getNetconfClientDispatcher() {
282 return netconfClientDispatcher;
285 public NetconfTopologySetupBuilder setNetconfClientDispatcher(final NetconfClientDispatcher clientDispatcher) {
286 netconfClientDispatcher = clientDispatcher;
290 public NetconfTopologySetupBuilder setSchemaResourceDTO(
291 final NetconfDevice.SchemaResourcesDTO schemaResourceDTO) {
292 this.schemaResourceDTO = schemaResourceDTO;
296 NetconfDevice.SchemaResourcesDTO getSchemaResourceDTO() {
297 return schemaResourceDTO;
300 public NetconfTopologySetupBuilder setIdleTimeout(final Duration idleTimeout) {
301 this.idleTimeout = idleTimeout;
305 Duration getIdleTimeout() {
309 AAAEncryptionService getEncryptionService() {
310 return encryptionService;
313 public NetconfTopologySetupBuilder setEncryptionService(final AAAEncryptionService encryptionService) {
314 this.encryptionService = encryptionService;
318 CredentialProvider getCredentialProvider() {
319 return requireNonNull(credentialProvider);
322 public NetconfTopologySetupBuilder setCredentialProvider(final CredentialProvider credentialProvider) {
323 this.credentialProvider = credentialProvider;
327 KeyStoreProvider getKeyStoreProvider() {
328 return requireNonNull(keyStoreProvider);
331 public NetconfTopologySetupBuilder setKeyStoreProvider(final KeyStoreProvider keyStoreProvider) {
332 this.keyStoreProvider = keyStoreProvider;
336 public static NetconfTopologySetupBuilder create() {
337 return new NetconfTopologySetupBuilder();