2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.sdnc.northbound.util;
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;
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;
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;
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;
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;
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;
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;
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.
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)
112 * .setRequestInformation(build(requestInformation()
113 * .setRequestId("request-id: xyz")
114 * .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
116 * .setServiceInformation(build(serviceInformationBuilder()
117 * .setServiceInstanceId("service-instance-id: xyz")
123 public class MDSALUtil {
125 public static PreloadVfModuleTopologyOperationInputBuilder preloadVfModuleTopologyOperationInput() {
126 return new PreloadVfModuleTopologyOperationInputBuilder();
129 public static GenericConfigurationTopologyOperationInputBuilder GenericConfigurationTopologyOperationInput() {
130 return new GenericConfigurationTopologyOperationInputBuilder();
133 public static GenericConfigurationNotificationInputBuilder GenericConfigurationNotificationInput() {
134 return new GenericConfigurationNotificationInputBuilder();
137 public static GetpathsegmentTopologyOperationInputBuilder GetpathsegmentTopologyOperationInput() {
138 return new GetpathsegmentTopologyOperationInputBuilder();
141 public static PolicyUpdateNotifyOperationInputBuilder PolicyUpdateNotifyOperationInput() {
142 return new PolicyUpdateNotifyOperationInputBuilder();
145 public static PortMirrorTopologyOperationInputBuilder PortMirrorTopologyOperationInput() {
146 return new PortMirrorTopologyOperationInputBuilder();
149 public static PreloadVfModuleTopologyOperationOutputBuilder preloadVfModuleTopologyOperationOutput() {
150 return new PreloadVfModuleTopologyOperationOutputBuilder();
153 public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
154 return new PreloadNetworkTopologyOperationInputBuilder();
157 public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
158 return new PreloadNetworkTopologyOperationOutputBuilder();
161 public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
162 return new BrgTopologyOperationInputBuilder();
165 public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
166 return new BrgTopologyOperationOutputBuilder();
169 public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
170 return new TunnelxconnTopologyOperationInputBuilder();
173 public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
174 return new TunnelxconnTopologyOperationOutputBuilder();
177 public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
178 return new SecurityZoneTopologyOperationInputBuilder();
181 public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
182 return new SecurityZoneTopologyOperationOutputBuilder();
185 public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
186 return new ContrailRouteTopologyOperationInputBuilder();
189 public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
190 return new ContrailRouteTopologyOperationOutputBuilder();
193 public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
194 return new VfModuleTopologyOperationInputBuilder();
197 public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
198 return new VfModuleTopologyOperationOutputBuilder();
201 public static PnfTopologyOperationInputBuilder pnfTopologyOperationInput() {
202 return new PnfTopologyOperationInputBuilder();
205 public static PnfTopologyOperationOutputBuilder pnfTopologyOperationOutput() {
206 return new PnfTopologyOperationOutputBuilder();
209 public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
210 return new VnfTopologyOperationInputBuilder();
213 public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
214 return new VnfTopologyOperationOutputBuilder();
217 public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
218 return new ServiceTopologyOperationInputBuilder();
221 public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
222 return new ServiceTopologyOperationOutputBuilder();
226 public static SdncRequestHeaderBuilder sdncRequestHeader() {
227 return new SdncRequestHeaderBuilder();
231 public static RequestInformationBuilder requestInformation() {
232 return new RequestInformationBuilder();
235 public static ServiceResponseInformationBuilder serviceResponseInformation() {
236 return new ServiceResponseInformationBuilder();
239 public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
240 return new SecurityZoneResponseInformationBuilder();
243 public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
244 return new TunnelxconnResponseInformationBuilder();
247 public static BrgResponseInformationBuilder brgResponseInformation() {
248 return new BrgResponseInformationBuilder();
251 public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
252 return new ContrailRouteResponseInformationBuilder();
255 public static PnfResponseInformationBuilder pnfResponseInformation() {
256 return new PnfResponseInformationBuilder();
259 public static VnfResponseInformationBuilder vnfResponseInformation() {
260 return new VnfResponseInformationBuilder();
263 public static VfModuleResponseInformationBuilder vfModuleResponseInformation() {
264 return new VfModuleResponseInformationBuilder();
267 public static ServiceInformationBuilder serviceInformationBuilder() {
268 return new ServiceInformationBuilder();
271 public static PreloadNetworkTopologyInformationBuilder preloadNetworkTopologyInformationBuilder() {
272 return new PreloadNetworkTopologyInformationBuilder();
275 public static NetworkTopologyIdentifierStructureBuilder networkTopologyIdentifierStructureBuilder(){
276 return new NetworkTopologyIdentifierStructureBuilder();
279 public static PnfDetailsBuilder pnfDetailsBuilder() {
280 return new PnfDetailsBuilder();
283 public static VnfInformationBuilder vnfInformationBuilder() {
284 return new VnfInformationBuilder();
287 public static VfModuleInformationBuilder vfModuleInformationBuilder() {
288 return new VfModuleInformationBuilder();
291 public static ServiceBuilder service() {
292 return new ServiceBuilder();
295 public static ServiceDataBuilder serviceData() {
296 return new ServiceDataBuilder();
299 public static ServiceStatusBuilder serviceStatus() {
300 return new ServiceStatusBuilder();
303 public static NetworkInformationBuilder networkInformation() {
304 return new NetworkInformationBuilder();
307 public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
308 return new NetworkTopologyOperationInputBuilder();
311 public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
312 return new NetworkTopologyOperationOutputBuilder();
315 public static PnfTopologyIdentifierStructureBuilder pnfTopologyIdentifierStructureBuilder() {
316 return new PnfTopologyIdentifierStructureBuilder();
319 public static VnfTopologyIdentifierStructureBuilder vnfTopologyIdentifierStructureBuilder() {
320 return new VnfTopologyIdentifierStructureBuilder();
323 public static PreloadVfModuleTopologyInformationBuilder preloadVfModuleTopologyInformationBuilder() {
324 return new PreloadVfModuleTopologyInformationBuilder();
327 public static VfModuleTopologyBuilder vfModuleTopologyBuilder() {
328 return new VfModuleTopologyBuilder();
331 public static VfModuleTopologyIdentifierBuilder vfModuleTopologyIdentifierBuilder() {
332 return new VfModuleTopologyIdentifierBuilder();
335 public static NetworkResponseInformationBuilder networkResponseInformation() {
336 return new NetworkResponseInformationBuilder();
339 public static ConnectionAttachmentTopologyOperationInputBuilder connectionAttachmentTopologyOperationInput() {
340 return new ConnectionAttachmentTopologyOperationInputBuilder();
343 public static ConnectionAttachmentTopologyOperationOutputBuilder connectionAttachmentTopologyOperationOutput() {
344 return new ConnectionAttachmentTopologyOperationOutputBuilder();
347 public static ConnectionAttachmentResponseInformationBuilder connectionAttachmentResponseInformation() {
348 return new ConnectionAttachmentResponseInformationBuilder();
351 public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
352 return new ServiceLevelOperStatusBuilder();
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());