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.ContrailRouteTopologyOperationInputBuilder;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationOutputBuilder;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInputBuilder;
32 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutputBuilder;
33 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationInputBuilder;
34 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationOutputBuilder;
35 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVnfTopologyOperationInputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVnfTopologyOperationOutputBuilder;
37 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationInputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationOutputBuilder;
39 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationInputBuilder;
40 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutputBuilder;
41 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInputBuilder;
42 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutputBuilder;
43 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationInputBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationOutputBuilder;
45 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInputBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutputBuilder;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.brg.response.information.BrgResponseInformationBuilder;
48 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.contrail.route.response.information.ContrailRouteResponseInformationBuilder;
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.information.NetworkInformationBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.response.information.NetworkResponseInformationBuilder;
51 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.identifier.NetworkTopologyIdentifierBuilder;
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.information.NetworkTopologyInformationBuilder;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
54 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.security.zone.response.information.SecurityZoneResponseInformationBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformationBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.level.oper.status.ServiceLevelOperStatusBuilder;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.ServiceBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.response.information.ServiceResponseInformationBuilder;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatusBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.tunnelxconn.response.information.TunnelxconnResponseInformationBuilder;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.information.VfModuleInformationBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.information.VnfInformationBuilder;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.response.information.VnfResponseInformationBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.identifier.VnfTopologyIdentifierBuilder;
67 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.information.VnfTopologyInformationBuilder;
68 import org.opendaylight.yangtools.concepts.Builder;
69 import org.opendaylight.yangtools.yang.common.RpcResult;
73 * This uill class provides utility to build yang objects using a recursive syntax that resembles the tree structure
74 * when defining the same yang object in json format.
79 * import static org.onap.sdnc.northbound.util.MDSALUtil.*;
80 * ServiceTopologyOperationInput input = build(
81 * serviceTopologyOperationInput()
82 * .setSdncRequestHeader(build(sdncRequestHeader()
83 * .setSvcRequestId("svc-request-id: xyz")
84 * .setSvcAction(SvcAction.Assign)
86 * .setRequestInformation(build(requestInformation()
87 * .setRequestId("request-id: xyz")
88 * .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
90 * .setServiceInformation(build(serviceInformationBuilder()
91 * .setServiceInstanceId("service-instance-id: xyz")
97 public class MDSALUtil {
99 public static PreloadVnfTopologyOperationInputBuilder preloadVnfTopologyOperationInput() {
100 return new PreloadVnfTopologyOperationInputBuilder();
103 public static PreloadVnfTopologyOperationOutputBuilder preloadVnfTopologyOperationOutput() {
104 return new PreloadVnfTopologyOperationOutputBuilder();
107 public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
108 return new PreloadNetworkTopologyOperationInputBuilder();
111 public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
112 return new PreloadNetworkTopologyOperationOutputBuilder();
115 public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
116 return new BrgTopologyOperationInputBuilder();
119 public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
120 return new BrgTopologyOperationOutputBuilder();
123 public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
124 return new TunnelxconnTopologyOperationInputBuilder();
127 public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
128 return new TunnelxconnTopologyOperationOutputBuilder();
131 public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
132 return new SecurityZoneTopologyOperationInputBuilder();
135 public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
136 return new SecurityZoneTopologyOperationOutputBuilder();
139 public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
140 return new ContrailRouteTopologyOperationInputBuilder();
143 public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
144 return new ContrailRouteTopologyOperationOutputBuilder();
147 public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
148 return new VfModuleTopologyOperationInputBuilder();
151 public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
152 return new VfModuleTopologyOperationOutputBuilder();
155 public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
156 return new VnfTopologyOperationInputBuilder();
159 public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
160 return new VnfTopologyOperationOutputBuilder();
163 public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
164 return new ServiceTopologyOperationInputBuilder();
167 public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
168 return new ServiceTopologyOperationOutputBuilder();
172 public static SdncRequestHeaderBuilder sdncRequestHeader() {
173 return new SdncRequestHeaderBuilder();
177 public static RequestInformationBuilder requestInformation() {
178 return new RequestInformationBuilder();
181 public static ServiceResponseInformationBuilder serviceResponseInformation() {
182 return new ServiceResponseInformationBuilder();
185 public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
186 return new SecurityZoneResponseInformationBuilder();
189 public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
190 return new TunnelxconnResponseInformationBuilder();
193 public static BrgResponseInformationBuilder brgResponseInformation() {
194 return new BrgResponseInformationBuilder();
197 public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
198 return new ContrailRouteResponseInformationBuilder();
201 public static VnfResponseInformationBuilder vnfResponseInformation() {
202 return new VnfResponseInformationBuilder();
205 public static ServiceInformationBuilder serviceInformationBuilder() {
206 return new ServiceInformationBuilder();
209 public static VnfTopologyInformationBuilder vnfTopologyInformationBuilder() {
210 return new VnfTopologyInformationBuilder();
213 public static NetworkTopologyInformationBuilder networkTopologyInformationBuilder() {
214 return new NetworkTopologyInformationBuilder();
217 public static NetworkTopologyIdentifierBuilder networkTopologyIdentifierBuilder(){
218 return new NetworkTopologyIdentifierBuilder();
221 public static VnfTopologyIdentifierBuilder vnfTopologyIdentifierBuilder() {
222 return new VnfTopologyIdentifierBuilder();
225 public static VnfInformationBuilder vnfInformationBuilder() {
226 return new VnfInformationBuilder();
229 public static VfModuleInformationBuilder vfModuleInformationBuilder() {
230 return new VfModuleInformationBuilder();
233 public static ServiceBuilder service() {
234 return new ServiceBuilder();
238 public static ServiceDataBuilder serviceData() {
239 return new ServiceDataBuilder();
243 public static ServiceStatusBuilder serviceStatus() {
244 return new ServiceStatusBuilder();
247 public static NetworkInformationBuilder networkInformation() {
248 return new NetworkInformationBuilder();
251 public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
252 return new NetworkTopologyOperationInputBuilder();
255 public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
256 return new NetworkTopologyOperationOutputBuilder();
259 public static NetworkResponseInformationBuilder networkResponseInformation() {
260 return new NetworkResponseInformationBuilder();
263 public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
264 return new ServiceLevelOperStatusBuilder();
267 public static <P> P build(Builder<P> b) {
268 return b == null ? null : b.build();
271 public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject) {
272 if (sourceDataObject == null) {
275 B bp = builderConstructor.apply(sourceDataObject);
279 public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject,
280 Consumer<B> builder) {
281 if (sourceDataObject == null) {
284 B bp = builderConstructor.apply(sourceDataObject);
289 public static <I, O> O exec(Function<I, Future<RpcResult<O>>> rpc, I rpcParameter,
290 Function<RpcResult<O>, O> rpcResult) throws Exception {
291 Future<RpcResult<O>> future = rpc.apply(rpcParameter);
292 return rpcResult.apply(future.get());