9ee287d97dfa092a6306c88e2ad8be7502d69e04
[netconf.git] / netconf / netconf-topology-singleton / src / main / java / org / opendaylight / netconf / topology / singleton / impl / utils / NetconfTopologySetup.java
1 /*
2  * Copyright (c) 2016 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
9 package org.opendaylight.netconf.topology.singleton.impl.utils;
10
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
25 public class NetconfTopologySetup {
26
27     private final ClusterSingletonServiceProvider clusterSingletonServiceProvider;
28     private final RpcProviderRegistry rpcProviderRegistry;
29     private final DataBroker dataBroker;
30     private final InstanceIdentifier<Node> instanceIdentifier;
31     private final Node node;
32     private final BindingAwareBroker bindingAwareBroker;
33     private final ScheduledThreadPool keepaliveExecutor;
34     private final ThreadPool processingExecutor;
35     private final Broker domBroker;
36     private final ActorSystem actorSystem;
37     private final EventExecutor eventExecutor;
38     private final NetconfClientDispatcher netconfClientDispatcher;
39     private final String topologyId;
40     private final NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
41
42     private NetconfTopologySetup(final NetconfTopologySetupBuilder builder) {
43         this.clusterSingletonServiceProvider = builder.getClusterSingletonServiceProvider();
44         this.rpcProviderRegistry = builder.getRpcProviderRegistry();
45         this.dataBroker = builder.getDataBroker();
46         this.instanceIdentifier = builder.getInstanceIdentifier();
47         this.node = builder.getNode();
48         this.bindingAwareBroker = builder.getBindingAwareBroker();
49         this.keepaliveExecutor = builder.getKeepaliveExecutor();
50         this.processingExecutor = builder.getProcessingExecutor();
51         this.domBroker = builder.getDomBroker();
52         this.actorSystem = builder.getActorSystem();
53         this.eventExecutor = builder.getEventExecutor();
54         this.netconfClientDispatcher = builder.getNetconfClientDispatcher();
55         this.topologyId = builder.getTopologyId();
56         this.schemaResourceDTO = builder.getSchemaResourceDTO();
57     }
58
59     public ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
60         return clusterSingletonServiceProvider;
61     }
62
63     public RpcProviderRegistry getRpcProviderRegistry() {
64         return rpcProviderRegistry;
65     }
66
67     public DataBroker getDataBroker() {
68         return dataBroker;
69     }
70
71     public InstanceIdentifier<Node> getInstanceIdentifier() {
72         return instanceIdentifier;
73     }
74
75     public Node getNode() {
76         return node;
77     }
78
79     public BindingAwareBroker getBindingAwareBroker() {
80         return bindingAwareBroker;
81     }
82
83     public ThreadPool getProcessingExecutor() {
84         return processingExecutor;
85     }
86
87     public ScheduledThreadPool getKeepaliveExecutor() {
88         return keepaliveExecutor;
89     }
90
91     public Broker getDomBroker() {
92         return domBroker;
93     }
94
95     public ActorSystem getActorSystem() {
96         return actorSystem;
97     }
98
99     public EventExecutor getEventExecutor() {
100         return eventExecutor;
101     }
102
103     public String getTopologyId() {
104         return topologyId;
105     }
106
107     public NetconfClientDispatcher getNetconfClientDispatcher() {
108         return netconfClientDispatcher;
109     }
110
111     public NetconfDevice.SchemaResourcesDTO getSchemaResourcesDTO() {
112         return  schemaResourceDTO;
113     }
114
115     public static class NetconfTopologySetupBuilder {
116
117         private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
118         private RpcProviderRegistry rpcProviderRegistry;
119         private DataBroker dataBroker;
120         private InstanceIdentifier<Node> instanceIdentifier;
121         private Node node;
122         private BindingAwareBroker bindingAwareBroker;
123         private ScheduledThreadPool keepaliveExecutor;
124         private ThreadPool processingExecutor;
125         private Broker domBroker;
126         private ActorSystem actorSystem;
127         private EventExecutor eventExecutor;
128         private String topologyId;
129         private NetconfClientDispatcher netconfClientDispatcher;
130         private NetconfDevice.SchemaResourcesDTO schemaResourceDTO;
131
132         public NetconfTopologySetupBuilder(){
133         }
134
135         private ClusterSingletonServiceProvider getClusterSingletonServiceProvider() {
136             return clusterSingletonServiceProvider;
137         }
138
139         public NetconfTopologySetupBuilder setClusterSingletonServiceProvider(
140                 final ClusterSingletonServiceProvider clusterSingletonServiceProvider) {
141             this.clusterSingletonServiceProvider = clusterSingletonServiceProvider;
142             return this;
143         }
144
145         private RpcProviderRegistry getRpcProviderRegistry() {
146             return rpcProviderRegistry;
147         }
148
149         public NetconfTopologySetupBuilder setRpcProviderRegistry(final RpcProviderRegistry rpcProviderRegistry) {
150             this.rpcProviderRegistry = rpcProviderRegistry;
151             return this;
152         }
153
154         private DataBroker getDataBroker() {
155             return dataBroker;
156         }
157
158         public NetconfTopologySetupBuilder setDataBroker(final DataBroker dataBroker) {
159             this.dataBroker = dataBroker;
160             return this;
161         }
162
163         private InstanceIdentifier<Node> getInstanceIdentifier() {
164             return instanceIdentifier;
165         }
166
167         public NetconfTopologySetupBuilder setInstanceIdentifier(final InstanceIdentifier<Node> instanceIdentifier) {
168             this.instanceIdentifier = instanceIdentifier;
169             return this;
170         }
171
172         public Node getNode() {
173             return node;
174         }
175
176         public NetconfTopologySetupBuilder setNode(final Node node) {
177             this.node = node;
178             return this;
179         }
180
181         public NetconfTopologySetup build() {
182             return new NetconfTopologySetup(this);
183         }
184
185         private BindingAwareBroker getBindingAwareBroker() {
186             return bindingAwareBroker;
187         }
188
189         public NetconfTopologySetupBuilder setBindingAwareBroker(BindingAwareBroker bindingAwareBroker) {
190             this.bindingAwareBroker = bindingAwareBroker;
191             return this;
192         }
193
194         private ScheduledThreadPool getKeepaliveExecutor() {
195             return keepaliveExecutor;
196         }
197
198         public NetconfTopologySetupBuilder setKeepaliveExecutor(ScheduledThreadPool keepaliveExecutor) {
199             this.keepaliveExecutor = keepaliveExecutor;
200             return this;
201         }
202
203         private ThreadPool getProcessingExecutor() {
204             return processingExecutor;
205         }
206
207         public NetconfTopologySetupBuilder setProcessingExecutor(ThreadPool processingExecutor) {
208             this.processingExecutor = processingExecutor;
209             return this;
210         }
211
212         private Broker getDomBroker() {
213             return domBroker;
214         }
215
216         public NetconfTopologySetupBuilder setDomBroker(Broker domBroker) {
217             this.domBroker = domBroker;
218             return this;
219         }
220
221         private ActorSystem getActorSystem() {
222             return actorSystem;
223         }
224
225         public NetconfTopologySetupBuilder setActorSystem(ActorSystem actorSystem) {
226             this.actorSystem = actorSystem;
227             return this;
228         }
229
230         private EventExecutor getEventExecutor() {
231             return eventExecutor;
232         }
233
234         public NetconfTopologySetupBuilder setEventExecutor(EventExecutor eventExecutor) {
235             this.eventExecutor = eventExecutor;
236             return this;
237         }
238
239         private String getTopologyId() {
240             return topologyId;
241         }
242
243         public NetconfTopologySetupBuilder setTopologyId(String topologyId) {
244             this.topologyId = topologyId;
245             return this;
246         }
247
248         private NetconfClientDispatcher getNetconfClientDispatcher() {
249             return netconfClientDispatcher;
250         }
251
252         public NetconfTopologySetupBuilder setNetconfClientDispatcher(NetconfClientDispatcher clientDispatcher) {
253             this.netconfClientDispatcher = clientDispatcher;
254             return this;
255         }
256
257         public NetconfTopologySetupBuilder setSchemaResourceDTO(
258                 final NetconfDevice.SchemaResourcesDTO schemaResourceDTO) {
259             this.schemaResourceDTO = schemaResourceDTO;
260             return this;
261         }
262
263         private NetconfDevice.SchemaResourcesDTO getSchemaResourceDTO() {
264             return schemaResourceDTO;
265         }
266
267         public static NetconfTopologySetupBuilder create() {
268             return new NetconfTopologySetupBuilder();
269         }
270     }
271
272
273 }