Adding testcases for new allotted resource
[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.PreloadVnfTopologyOperationInputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVnfTopologyOperationOutputBuilder;
39 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationInputBuilder;
40 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationOutputBuilder;
41 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationInputBuilder;
42 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutputBuilder;
43 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInputBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutputBuilder;
45 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationInputBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationOutputBuilder;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInputBuilder;
48 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutputBuilder;
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.brg.response.information.BrgResponseInformationBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.connection.attachment.response.information.ConnectionAttachmentResponseInformationBuilder;
51 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.contrail.route.response.information.ContrailRouteResponseInformationBuilder;
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.information.NetworkInformationBuilder;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.response.information.NetworkResponseInformationBuilder;
54 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.identifier.NetworkTopologyIdentifierBuilder;
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.information.NetworkTopologyInformationBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.security.zone.response.information.SecurityZoneResponseInformationBuilder;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformationBuilder;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.level.oper.status.ServiceLevelOperStatusBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.ServiceBuilder;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.response.information.ServiceResponseInformationBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatusBuilder;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.tunnelxconn.response.information.TunnelxconnResponseInformationBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.information.VfModuleInformationBuilder;
67 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.information.VnfInformationBuilder;
68 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.response.information.VnfResponseInformationBuilder;
69 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.identifier.VnfTopologyIdentifierBuilder;
70 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.information.VnfTopologyInformationBuilder;
71 import org.opendaylight.yangtools.concepts.Builder;
72 import org.opendaylight.yangtools.yang.common.RpcResult;
73
74
75 /**
76  * This uill class provides utility to build yang objects using a recursive syntax that resembles the tree structure
77  * when defining the same yang object in json format.
78  *
79  * For Example
80  * <pre>
81  * {@code
82  * import static org.onap.sdnc.northbound.util.MDSALUtil.*;
83  * ServiceTopologyOperationInput input = build(
84  *         serviceTopologyOperationInput()
85  *                 .setSdncRequestHeader(build(sdncRequestHeader()
86  *                         .setSvcRequestId("svc-request-id: xyz")
87  *                         .setSvcAction(SvcAction.Assign)
88  *                 ))
89  *                 .setRequestInformation(build(requestInformation()
90  *                         .setRequestId("request-id: xyz")
91  *                        .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
92  *                 ))
93  *                .setServiceInformation(build(serviceInformationBuilder()
94  *                         .setServiceInstanceId("service-instance-id: xyz")
95  *                ))
96  * );
97  * }
98  * </pre>
99  */
100 public class MDSALUtil {
101
102     public static PreloadVnfTopologyOperationInputBuilder preloadVnfTopologyOperationInput() {
103         return new PreloadVnfTopologyOperationInputBuilder();
104     }
105
106     public static PreloadVnfTopologyOperationOutputBuilder preloadVnfTopologyOperationOutput() {
107         return new PreloadVnfTopologyOperationOutputBuilder();
108     }
109
110     public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
111         return new PreloadNetworkTopologyOperationInputBuilder();
112     }
113
114     public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
115         return new PreloadNetworkTopologyOperationOutputBuilder();
116     }
117
118     public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
119         return new BrgTopologyOperationInputBuilder();
120     }
121
122     public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
123         return new BrgTopologyOperationOutputBuilder();
124     }
125
126     public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
127         return new TunnelxconnTopologyOperationInputBuilder();
128     }
129
130     public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
131         return new TunnelxconnTopologyOperationOutputBuilder();
132     }
133
134     public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
135         return new SecurityZoneTopologyOperationInputBuilder();
136     }
137
138     public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
139         return new SecurityZoneTopologyOperationOutputBuilder();
140     }
141
142     public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
143         return new ContrailRouteTopologyOperationInputBuilder();
144     }
145
146     public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
147         return new ContrailRouteTopologyOperationOutputBuilder();
148     }
149
150     public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
151         return new VfModuleTopologyOperationInputBuilder();
152     }
153
154     public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
155         return new VfModuleTopologyOperationOutputBuilder();
156     }
157
158     public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
159         return new VnfTopologyOperationInputBuilder();
160     }
161
162     public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
163         return new VnfTopologyOperationOutputBuilder();
164     }
165
166     public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
167         return new ServiceTopologyOperationInputBuilder();
168     }
169
170     public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
171         return new ServiceTopologyOperationOutputBuilder();
172     }
173
174
175     public static SdncRequestHeaderBuilder sdncRequestHeader() {
176         return new SdncRequestHeaderBuilder();
177     }
178
179
180     public static RequestInformationBuilder requestInformation() {
181         return new RequestInformationBuilder();
182     }
183
184     public static ServiceResponseInformationBuilder serviceResponseInformation() {
185         return new ServiceResponseInformationBuilder();
186     }
187
188     public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
189         return new SecurityZoneResponseInformationBuilder();
190     }
191
192     public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
193         return new TunnelxconnResponseInformationBuilder();
194     }
195
196     public static BrgResponseInformationBuilder brgResponseInformation() {
197         return new BrgResponseInformationBuilder();
198     }
199
200     public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
201         return new ContrailRouteResponseInformationBuilder();
202     }
203
204     public static VnfResponseInformationBuilder vnfResponseInformation() {
205         return new VnfResponseInformationBuilder();
206     }
207
208     public static ServiceInformationBuilder serviceInformationBuilder() {
209         return new ServiceInformationBuilder();
210     }
211
212     public static VnfTopologyInformationBuilder vnfTopologyInformationBuilder() {
213         return new VnfTopologyInformationBuilder();
214     }
215
216     public static NetworkTopologyInformationBuilder networkTopologyInformationBuilder() {
217         return new NetworkTopologyInformationBuilder();
218     }
219
220     public static NetworkTopologyIdentifierBuilder networkTopologyIdentifierBuilder(){
221         return new NetworkTopologyIdentifierBuilder();
222     }
223
224     public static VnfTopologyIdentifierBuilder vnfTopologyIdentifierBuilder() {
225         return new VnfTopologyIdentifierBuilder();
226     }
227
228     public static VnfInformationBuilder vnfInformationBuilder() {
229         return new VnfInformationBuilder();
230     }
231
232     public static VfModuleInformationBuilder vfModuleInformationBuilder() {
233         return new VfModuleInformationBuilder();
234     }
235
236     public static ServiceBuilder service() {
237         return new ServiceBuilder();
238     }
239
240
241     public static ServiceDataBuilder serviceData() {
242         return new ServiceDataBuilder();
243     }
244
245
246     public static ServiceStatusBuilder serviceStatus() {
247         return new ServiceStatusBuilder();
248     }
249
250     public static NetworkInformationBuilder networkInformation() {
251         return new NetworkInformationBuilder();
252     }
253
254     public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
255         return new NetworkTopologyOperationInputBuilder();
256     }
257
258     public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
259         return new NetworkTopologyOperationOutputBuilder();
260     }
261
262     public static NetworkResponseInformationBuilder networkResponseInformation() {
263         return new NetworkResponseInformationBuilder();
264     }
265
266     public static ConnectionAttachmentTopologyOperationInputBuilder connectionAttachmentTopologyOperationInput() {
267         return new ConnectionAttachmentTopologyOperationInputBuilder();
268     }
269
270     public static ConnectionAttachmentTopologyOperationOutputBuilder connectionAttachmentTopologyOperationOutput() {
271         return new ConnectionAttachmentTopologyOperationOutputBuilder();
272     }
273
274     public static ConnectionAttachmentResponseInformationBuilder connectionAttachmentResponseInformation() {
275         return new ConnectionAttachmentResponseInformationBuilder();
276     }
277
278     public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
279         return new ServiceLevelOperStatusBuilder();
280     }
281
282     public static <P> P build(Builder<P> b) {
283         return b == null ? null : b.build();
284     }
285
286     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject) {
287         if (sourceDataObject == null) {
288             return null;
289         }
290         B bp = builderConstructor.apply(sourceDataObject);
291         return bp.build();
292     }
293
294     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject,
295         Consumer<B> builder) {
296         if (sourceDataObject == null) {
297             return null;
298         }
299         B bp = builderConstructor.apply(sourceDataObject);
300         builder.accept(bp);
301         return bp.build();
302     }
303
304     public static <I, O> O exec(Function<I, Future<RpcResult<O>>> rpc, I rpcParameter,
305         Function<RpcResult<O>, O> rpcResult) throws Exception {
306         Future<RpcResult<O>> future = rpc.apply(rpcParameter);
307         return rpcResult.apply(future.get());
308     }
309
310 }