5db09f92ece5279e26a98f418c4b7c84ed62ab67
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / util / MDSALUtil.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.sdnc.northbound.util;
23
24 import java.util.concurrent.Future;
25 import java.util.function.Consumer;
26 import java.util.function.Function;
27 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationInputBuilder;
28 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationOutputBuilder;
29 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ConnectionAttachmentTopologyOperationInputBuilder;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ConnectionAttachmentTopologyOperationOutputBuilder;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationInputBuilder;
32 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationOutputBuilder;
33 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInputBuilder;
34 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutputBuilder;
35 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationInputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationOutputBuilder;
37 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationInputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationOutputBuilder;
39
40 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationTopologyOperationInputBuilder;
41 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationTopologyOperationOutputBuilder;
42
43 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationNotificationInputBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationNotificationOutputBuilder;
45
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GetpathsegmentTopologyOperationInputBuilder;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GetpathsegmentTopologyOperationOutputBuilder;
48
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PolicyUpdateNotifyOperationInputBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PolicyUpdateNotifyOperationOutputBuilder;
51
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PortMirrorTopologyOperationInputBuilder;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PortMirrorTopologyOperationOutputBuilder;
54
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationInputBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationOutputBuilder;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationInputBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutputBuilder;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInputBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutputBuilder;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationInputBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationOutputBuilder;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInputBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutputBuilder;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PnfTopologyOperationInputBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PnfTopologyOperationOutputBuilder;
67 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.brg.response.information.BrgResponseInformationBuilder;
68 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.connection.attachment.response.information.ConnectionAttachmentResponseInformationBuilder;
69 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.contrail.route.response.information.ContrailRouteResponseInformationBuilder;
70 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.information.NetworkInformationBuilder;
71 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.response.information.NetworkResponseInformationBuilder;
72 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.identifier.structure.NetworkTopologyIdentifierStructureBuilder;
73 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.network.topology.information.PreloadNetworkTopologyInformationBuilder;
74 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.vf.module.topology.information.PreloadVfModuleTopologyInformationBuilder;
75 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
76 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
77 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.security.zone.response.information.SecurityZoneResponseInformationBuilder;
78 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
79 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformationBuilder;
80 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.level.oper.status.ServiceLevelOperStatusBuilder;
81 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.ServiceBuilder;
82 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.response.information.ServiceResponseInformationBuilder;
83 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatusBuilder;
84 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.tunnelxconn.response.information.TunnelxconnResponseInformationBuilder;
85 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.information.VfModuleInformationBuilder;
86 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.response.information.VfModuleResponseInformationBuilder;
87 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.topology.VfModuleTopologyBuilder;
88 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.topology.identifier.VfModuleTopologyIdentifierBuilder;
89 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.information.VnfInformationBuilder;
90 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.response.information.VnfResponseInformationBuilder;
91 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.identifier.structure.VnfTopologyIdentifierStructureBuilder;
92 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.details.PnfDetailsBuilder;
93 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.response.information.PnfResponseInformationBuilder;
94 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.topology.identifier.structure.PnfTopologyIdentifierStructureBuilder;
95 import org.opendaylight.yangtools.yang.common.RpcResult;
96
97
98 /**
99  * This uill class provides utility to build yang objects using a recursive syntax that resembles the tree structure
100  * when defining the same yang object in json format.
101  *
102  * For Example
103  * <pre>
104  * {@code
105  * import static org.onap.sdnc.northbound.util.MDSALUtil.*;
106  * ServiceTopologyOperationInput input = build(
107  *         serviceTopologyOperationInput()
108  *                 .setSdncRequestHeader(build(sdncRequestHeader()
109  *                         .setSvcRequestId("svc-request-id: xyz")
110  *                         .setSvcAction(SvcAction.Assign)
111  *                 ))
112  *                 .setRequestInformation(build(requestInformation()
113  *                         .setRequestId("request-id: xyz")
114  *                        .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
115  *                 ))
116  *                .setServiceInformation(build(serviceInformationBuilder()
117  *                         .setServiceInstanceId("service-instance-id: xyz")
118  *                ))
119  * );
120  * }
121  * </pre>
122  */
123 public class MDSALUtil {
124
125     public static PreloadVfModuleTopologyOperationInputBuilder preloadVfModuleTopologyOperationInput() {
126         return new PreloadVfModuleTopologyOperationInputBuilder();
127     }
128
129     public static GenericConfigurationTopologyOperationInputBuilder GenericConfigurationTopologyOperationInput() {
130         return new GenericConfigurationTopologyOperationInputBuilder();
131     }
132
133     public static GenericConfigurationNotificationInputBuilder GenericConfigurationNotificationInput() {
134         return new GenericConfigurationNotificationInputBuilder();
135     }
136
137     public static GetpathsegmentTopologyOperationInputBuilder GetpathsegmentTopologyOperationInput() {
138         return new GetpathsegmentTopologyOperationInputBuilder();
139     }
140
141     public static PolicyUpdateNotifyOperationInputBuilder PolicyUpdateNotifyOperationInput() {
142         return new PolicyUpdateNotifyOperationInputBuilder();
143     }
144
145     public static PortMirrorTopologyOperationInputBuilder PortMirrorTopologyOperationInput() {
146         return new PortMirrorTopologyOperationInputBuilder();
147     }
148
149     public static PreloadVfModuleTopologyOperationOutputBuilder preloadVfModuleTopologyOperationOutput() {
150         return new PreloadVfModuleTopologyOperationOutputBuilder();
151     }
152
153     public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
154         return new PreloadNetworkTopologyOperationInputBuilder();
155     }
156
157     public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
158         return new PreloadNetworkTopologyOperationOutputBuilder();
159     }
160
161     public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
162         return new BrgTopologyOperationInputBuilder();
163     }
164
165     public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
166         return new BrgTopologyOperationOutputBuilder();
167     }
168
169     public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
170         return new TunnelxconnTopologyOperationInputBuilder();
171     }
172
173     public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
174         return new TunnelxconnTopologyOperationOutputBuilder();
175     }
176
177     public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
178         return new SecurityZoneTopologyOperationInputBuilder();
179     }
180
181     public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
182         return new SecurityZoneTopologyOperationOutputBuilder();
183     }
184
185     public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
186         return new ContrailRouteTopologyOperationInputBuilder();
187     }
188
189     public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
190         return new ContrailRouteTopologyOperationOutputBuilder();
191     }
192
193     public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
194         return new VfModuleTopologyOperationInputBuilder();
195     }
196
197     public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
198         return new VfModuleTopologyOperationOutputBuilder();
199     }
200
201     public static PnfTopologyOperationInputBuilder pnfTopologyOperationInput() {
202         return new PnfTopologyOperationInputBuilder();
203     }
204
205     public static PnfTopologyOperationOutputBuilder pnfTopologyOperationOutput() {
206         return new PnfTopologyOperationOutputBuilder();
207     }
208
209     public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
210         return new VnfTopologyOperationInputBuilder();
211     }
212
213     public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
214         return new VnfTopologyOperationOutputBuilder();
215     }
216
217     public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
218         return new ServiceTopologyOperationInputBuilder();
219     }
220
221     public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
222         return new ServiceTopologyOperationOutputBuilder();
223     }
224
225
226     public static SdncRequestHeaderBuilder sdncRequestHeader() {
227         return new SdncRequestHeaderBuilder();
228     }
229
230
231     public static RequestInformationBuilder requestInformation() {
232         return new RequestInformationBuilder();
233     }
234
235     public static ServiceResponseInformationBuilder serviceResponseInformation() {
236         return new ServiceResponseInformationBuilder();
237     }
238     
239     public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
240         return new SecurityZoneResponseInformationBuilder();
241     }
242
243     public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
244         return new TunnelxconnResponseInformationBuilder();
245     }
246
247     public static BrgResponseInformationBuilder brgResponseInformation() {
248         return new BrgResponseInformationBuilder();
249     }
250
251     public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
252         return new ContrailRouteResponseInformationBuilder();
253     }
254
255     public static PnfResponseInformationBuilder pnfResponseInformation() {
256         return new PnfResponseInformationBuilder();
257     }
258
259     public static VnfResponseInformationBuilder vnfResponseInformation() {
260         return new VnfResponseInformationBuilder();
261     }
262
263     public static VfModuleResponseInformationBuilder vfModuleResponseInformation() {
264         return new VfModuleResponseInformationBuilder();
265     }
266
267     public static ServiceInformationBuilder serviceInformationBuilder() {
268         return new ServiceInformationBuilder();
269     }
270
271     public static PreloadNetworkTopologyInformationBuilder preloadNetworkTopologyInformationBuilder() {
272         return new PreloadNetworkTopologyInformationBuilder();
273     }
274
275     public static NetworkTopologyIdentifierStructureBuilder networkTopologyIdentifierStructureBuilder(){
276         return new NetworkTopologyIdentifierStructureBuilder();
277     }
278
279     public static PnfDetailsBuilder pnfDetailsBuilder() {
280         return new PnfDetailsBuilder();
281     }
282
283     public static VnfInformationBuilder vnfInformationBuilder() {
284         return new VnfInformationBuilder();
285     }
286
287     public static VfModuleInformationBuilder vfModuleInformationBuilder() {
288         return new VfModuleInformationBuilder();
289     }
290
291     public static ServiceBuilder service() {
292         return new ServiceBuilder();
293     }
294
295     public static ServiceDataBuilder serviceData() {
296         return new ServiceDataBuilder();
297     }
298
299     public static ServiceStatusBuilder serviceStatus() {
300         return new ServiceStatusBuilder();
301     }
302
303     public static NetworkInformationBuilder networkInformation() {
304         return new NetworkInformationBuilder();
305     }
306
307     public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
308         return new NetworkTopologyOperationInputBuilder();
309     }
310
311     public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
312         return new NetworkTopologyOperationOutputBuilder();
313     }
314
315     public static PnfTopologyIdentifierStructureBuilder pnfTopologyIdentifierStructureBuilder() {
316         return new PnfTopologyIdentifierStructureBuilder();
317     }
318
319     public static VnfTopologyIdentifierStructureBuilder vnfTopologyIdentifierStructureBuilder() {
320         return new VnfTopologyIdentifierStructureBuilder();
321     }
322
323     public static PreloadVfModuleTopologyInformationBuilder preloadVfModuleTopologyInformationBuilder() {
324         return new PreloadVfModuleTopologyInformationBuilder();
325     }
326
327     public static VfModuleTopologyBuilder vfModuleTopologyBuilder() {
328         return new VfModuleTopologyBuilder();
329     }
330     
331     public static VfModuleTopologyIdentifierBuilder vfModuleTopologyIdentifierBuilder() {
332         return new VfModuleTopologyIdentifierBuilder();
333     }
334     
335     public static NetworkResponseInformationBuilder networkResponseInformation() {
336         return new NetworkResponseInformationBuilder();
337     }
338
339     public static ConnectionAttachmentTopologyOperationInputBuilder connectionAttachmentTopologyOperationInput() {
340         return new ConnectionAttachmentTopologyOperationInputBuilder();
341     }
342
343     public static ConnectionAttachmentTopologyOperationOutputBuilder connectionAttachmentTopologyOperationOutput() {
344         return new ConnectionAttachmentTopologyOperationOutputBuilder();
345     }
346
347     public static ConnectionAttachmentResponseInformationBuilder connectionAttachmentResponseInformation() {
348         return new ConnectionAttachmentResponseInformationBuilder();
349     }
350
351     public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
352         return new ServiceLevelOperStatusBuilder();
353     }
354
355     public static <I, O> O exec(Function<I, Future<RpcResult<O>>> rpc, I rpcParameter,
356         Function<RpcResult<O>, O> rpcResult) throws Exception {
357         Future<RpcResult<O>> future = rpc.apply(rpcParameter);
358         return rpcResult.apply(future.get());
359     }
360
361 }