Split up NetconfKeystoreAdapter
[netconf.git] / apps / netconf-topology-singleton / src / main / java / org / opendaylight / netconf / topology / singleton / impl / utils / NetconfTopologySetup.java
1 /*
2  * Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
3  *
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
7  */
8 package org.opendaylight.netconf.topology.singleton.impl.utils;
9
10 import static java.util.Objects.requireNonNull;
11
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;
29
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;
49
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();
69     }
70
71     public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
72         return clusterSingletonServiceProvider;
73     }
74
75     public DOMRpcProviderService getRpcProviderRegistry() {
76         return rpcProviderRegistry;
77     }
78
79     public DOMActionProviderService getActionProviderRegistry() {
80         return actionProviderRegistry;
81     }
82
83     public DataBroker getDataBroker() {
84         return dataBroker;
85     }
86
87     public InstanceIdentifier<Node> getInstanceIdentifier() {
88         return instanceIdentifier;
89     }
90
91     public Node getNode() {
92         return node;
93     }
94
95     public ListeningExecutorService getProcessingExecutor() {
96         return processingExecutor;
97     }
98
99     public ScheduledExecutorService getKeepaliveExecutor() {
100         return keepaliveExecutor;
101     }
102
103     public ActorSystem getActorSystem() {
104         return actorSystem;
105     }
106
107     public EventExecutor getEventExecutor() {
108         return eventExecutor;
109     }
110
111     public String getTopologyId() {
112         return topologyId;
113     }
114
115     public NetconfClientDispatcher getNetconfClientDispatcher() {
116         return netconfClientDispatcher;
117     }
118
119     public NetconfDevice.SchemaResourcesDTO getSchemaResourcesDTO() {
120         return schemaResourceDTO;
121     }
122
123     public Duration getIdleTimeout() {
124         return idleTimeout;
125     }
126
127     public AAAEncryptionService getEncryptionService() {
128         return encryptionService;
129     }
130
131     public CredentialProvider getCredentialProvider() {
132         return requireNonNull(credentialProvider);
133     }
134
135     public KeyStoreProvider getKeyStoreProvider() {
136         return requireNonNull(keyStoreProvider);
137     }
138
139     public BaseNetconfSchemas getBaseSchemas() {
140         return baseSchemas;
141     }
142
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;
149         private Node node;
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;
162
163         public NetconfTopologySetupBuilder() {
164
165         }
166
167         BaseNetconfSchemas getBaseSchemas() {
168             return requireNonNull(baseSchemas, "BaseSchemas not initialized");
169         }
170
171         public NetconfTopologySetupBuilder setBaseSchemas(final BaseNetconfSchemas baseSchemas) {
172             this.baseSchemas = requireNonNull(baseSchemas);
173             return this;
174         }
175
176         ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
177             return clusterSingletonServiceProvider;
178         }
179
180         public NetconfTopologySetupBuilder setClusterSingletonServiceProvider(
181                 final ClusterSingletonServiceProvider clusterSingletonServiceProvider) {
182             this.clusterSingletonServiceProvider = clusterSingletonServiceProvider;
183             return this;
184         }
185
186         DOMRpcProviderService getRpcProviderRegistry() {
187             return rpcProviderRegistry;
188         }
189
190         public NetconfTopologySetupBuilder setRpcProviderRegistry(final DOMRpcProviderService rpcProviderRegistry) {
191             this.rpcProviderRegistry = rpcProviderRegistry;
192             return this;
193         }
194
195         DOMActionProviderService getActionProviderRegistry() {
196             return actionProviderRegistry;
197         }
198
199         public NetconfTopologySetupBuilder setActionProviderRegistry(
200             final DOMActionProviderService actionProviderRegistry) {
201             this.actionProviderRegistry = actionProviderRegistry;
202             return this;
203         }
204
205         DataBroker getDataBroker() {
206             return dataBroker;
207         }
208
209         public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) {
210             this.dataBroker = dataBroker;
211             return this;
212         }
213
214         InstanceIdentifier<Node> getInstanceIdentifier() {
215             return instanceIdentifier;
216         }
217
218         public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier<Node> instanceIdentifier) {
219             this.instanceIdentifier = instanceIdentifier;
220             return this;
221         }
222
223         public Node getNode() {
224             return node;
225         }
226
227         public NetconfTopologySetupBuilder setNode(final Node node) {
228             this.node = node;
229             return this;
230         }
231
232         public NetconfTopologySetup build() {
233             return new NetconfTopologySetup(this);
234         }
235
236         ScheduledExecutorService getKeepaliveExecutor() {
237             return keepaliveExecutor;
238         }
239
240         public NetconfTopologySetupBuilder setKeepaliveExecutor(final ScheduledExecutorService keepaliveExecutor) {
241             this.keepaliveExecutor = keepaliveExecutor;
242             return this;
243         }
244
245         ListeningExecutorService getProcessingExecutor() {
246             return processingExecutor;
247         }
248
249         public NetconfTopologySetupBuilder setProcessingExecutor(final ListeningExecutorService processingExecutor) {
250             this.processingExecutor = processingExecutor;
251             return this;
252         }
253
254         ActorSystem getActorSystem() {
255             return actorSystem;
256         }
257
258         public NetconfTopologySetupBuilder setActorSystem(final ActorSystem actorSystem) {
259             this.actorSystem = actorSystem;
260             return this;
261         }
262
263         EventExecutor getEventExecutor() {
264             return eventExecutor;
265         }
266
267         public NetconfTopologySetupBuilder setEventExecutor(final EventExecutor eventExecutor) {
268             this.eventExecutor = eventExecutor;
269             return this;
270         }
271
272         String getTopologyId() {
273             return topologyId;
274         }
275
276         public NetconfTopologySetupBuilder setTopologyId(final String topologyId) {
277             this.topologyId = topologyId;
278             return this;
279         }
280
281         NetconfClientDispatcher getNetconfClientDispatcher() {
282             return netconfClientDispatcher;
283         }
284
285         public NetconfTopologySetupBuilder setNetconfClientDispatcher(final NetconfClientDispatcher clientDispatcher) {
286             netconfClientDispatcher = clientDispatcher;
287             return this;
288         }
289
290         public NetconfTopologySetupBuilder setSchemaResourceDTO(
291                 final NetconfDevice.SchemaResourcesDTO schemaResourceDTO) {
292             this.schemaResourceDTO = schemaResourceDTO;
293             return this;
294         }
295
296         NetconfDevice.SchemaResourcesDTO getSchemaResourceDTO() {
297             return schemaResourceDTO;
298         }
299
300         public NetconfTopologySetupBuilder setIdleTimeout(final Duration idleTimeout) {
301             this.idleTimeout = idleTimeout;
302             return this;
303         }
304
305         Duration getIdleTimeout() {
306             return idleTimeout;
307         }
308
309         AAAEncryptionService getEncryptionService() {
310             return encryptionService;
311         }
312
313         public NetconfTopologySetupBuilder setEncryptionService(final AAAEncryptionService encryptionService) {
314             this.encryptionService = encryptionService;
315             return this;
316         }
317
318         CredentialProvider getCredentialProvider() {
319             return requireNonNull(credentialProvider);
320         }
321
322         public NetconfTopologySetupBuilder setCredentialProvider(final CredentialProvider credentialProvider) {
323             this.credentialProvider = credentialProvider;
324             return this;
325         }
326
327         KeyStoreProvider getKeyStoreProvider() {
328             return requireNonNull(keyStoreProvider);
329         }
330
331         public NetconfTopologySetupBuilder setKeyStoreProvider(final KeyStoreProvider keyStoreProvider) {
332             this.keyStoreProvider = keyStoreProvider;
333             return this;
334         }
335
336         public static NetconfTopologySetupBuilder create() {
337             return new NetconfTopologySetupBuilder();
338         }
339     }
340 }