2 * Copyright © 2017 Orange, Inc. and others. All rights reserved.
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
8 package org.opendaylight.transportpce.servicehandler.utils;
10 import com.google.common.util.concurrent.ListenableFuture;
11 import org.opendaylight.transportpce.servicehandler.ServiceInput;
12 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEnd;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEnd;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceEndpoint;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.response.parameters.ResponseParametersBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutput;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutputBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInput;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutputBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInput;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInput;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutput;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutputBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutput;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutputBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInput;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutput;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutputBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirection;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirection;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescriptionBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
53 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
54 import org.opendaylight.yangtools.yang.common.RpcResult;
55 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
58 public final class ModelMappingUtils {
59 private ModelMappingUtils() {
62 public static ServiceImplementationRequestInput createServiceImplementationRequest(
64 PathDescription pathDescription) {
65 ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder =
66 new ServiceImplementationRequestInputBuilder().setServiceName(input.getServiceName());
67 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
68 .service.implementation.request.input.ServiceAEndBuilder serviceAEnd =
69 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
70 .service.implementation.request.input.ServiceAEndBuilder()
71 .setServiceFormat(input.getServiceAEnd().getServiceFormat())
72 .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli())
73 .setNodeId(input.getServiceAEnd().getNodeId().getValue())
75 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
76 .service.endpoint.sp.TxDirectionBuilder()
77 .setPort(input.getServiceAEnd().getTxDirection().values().stream().findFirst().orElseThrow()
81 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
82 .service.endpoint.sp.RxDirectionBuilder()
83 .setPort(input.getServiceAEnd().getRxDirection().values().stream().findFirst().orElseThrow()
86 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
87 .service.implementation.request.input.ServiceZEndBuilder serviceZEnd =
88 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
89 .service.implementation.request.input.ServiceZEndBuilder()
90 .setServiceFormat(input.getServiceZEnd().getServiceFormat())
91 .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli())
92 .setNodeId(input.getServiceZEnd().getNodeId().getValue())
94 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
95 .service.endpoint.sp.TxDirectionBuilder()
96 .setPort(input.getServiceZEnd().getTxDirection().values().stream().findFirst().orElseThrow()
100 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
101 .service.endpoint.sp.RxDirectionBuilder()
102 .setPort(input.getServiceZEnd().getRxDirection().values().stream().findFirst().orElseThrow()
105 return serviceImplementationRequestInputBuilder
106 .setServiceAEnd(serviceAEnd.build())
107 .setServiceZEnd(serviceZEnd.build())
108 .setServiceHandlerHeader(
109 new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build())
111 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
112 .service.implementation.request.input.PathDescriptionBuilder()
113 .setAToZDirection(pathDescription.getAToZDirection())
114 .setZToADirection(pathDescription.getZToADirection())
119 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
120 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
121 return new ServiceDeleteInputBuilder()
122 .setServiceName(serviceInput.getServiceName())
123 .setServiceHandlerHeader(
124 new ServiceHandlerHeaderBuilder()
125 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
130 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
131 .ServiceDeleteInput createServiceDeleteInput(
132 ServiceRerouteInput serviceRerouteinput,
134 return new ServiceDeleteInputBuilder()
135 .setServiceName(serviceRerouteinput.getServiceName())
136 .setServiceHandlerHeader(
137 new ServiceHandlerHeaderBuilder().setRequestId(services.getSdncRequestHeader().getRequestId()).build())
141 public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) {
142 return new ServiceAEndBuilder()
143 .setClli(serviceAEnd.getClli())
144 .setNodeId(new NodeIdType(serviceAEnd.getNodeId().getValue()).getValue())
146 createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
147 .setServiceFormat(serviceAEnd.getServiceFormat())
148 .setServiceRate(serviceAEnd.getServiceRate())
150 createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
154 public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
155 return new ServiceZEndBuilder()
156 .setClli(serviceZEnd.getClli())
157 .setNodeId(new NodeIdType(serviceZEnd.getNodeId().getValue()).getValue())
159 createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
160 .setServiceFormat(serviceZEnd.getServiceFormat())
161 .setServiceRate(serviceZEnd.getServiceRate())
163 createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
167 public static RxDirection createRxDirection(
168 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
169 .service.endpoint.RxDirection rxDirection) {
170 return new RxDirectionBuilder()
171 .setPort(rxDirection.getPort())
175 public static TxDirection createTxDirection(
176 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
177 .service.endpoint.TxDirection txDirection) {
178 return new TxDirectionBuilder()
179 .setPort(txDirection.getPort())
183 public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(
184 ServiceDeleteInput input, String finalAck, String message, String responseCode) {
185 return RpcResultBuilder
187 new ServiceDeleteOutputBuilder()
188 .setConfigurationResponseCommon(
189 new ConfigurationResponseCommonBuilder()
190 .setAckFinalIndicator(finalAck)
191 .setResponseMessage(message)
192 .setResponseCode(responseCode)
194 input.getSdncRequestHeader() == null
196 : input.getSdncRequestHeader().getRequestId())
202 public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
203 TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
204 return RpcResultBuilder
206 new TempServiceDeleteOutputBuilder()
207 .setConfigurationResponseCommon(
208 new ConfigurationResponseCommonBuilder()
209 .setAckFinalIndicator(finalAck)
210 .setResponseMessage(message)
211 .setResponseCode(responseCode)
218 public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(
219 ServiceCreateInput input, String finalAck, String message, String responseCode) {
220 return RpcResultBuilder
222 new ServiceCreateOutputBuilder()
223 .setConfigurationResponseCommon(
224 new ConfigurationResponseCommonBuilder()
225 .setAckFinalIndicator(finalAck)
226 .setResponseMessage(message)
227 .setResponseCode(responseCode)
229 input.getSdncRequestHeader() == null
231 : input.getSdncRequestHeader().getRequestId())
233 .setResponseParameters(new ResponseParametersBuilder().build())
238 public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
239 TempServiceCreateInput input, String finalAck, String message, String responseCode) {
240 return RpcResultBuilder
242 new TempServiceCreateOutputBuilder()
243 .setConfigurationResponseCommon(
244 new ConfigurationResponseCommonBuilder()
245 .setAckFinalIndicator(finalAck)
246 .setResponseMessage(message)
247 .setResponseCode(responseCode)
249 input.getSdncRequestHeader() == null
251 : input.getSdncRequestHeader().getRequestId())
253 .setResponseParameters(new ResponseParametersBuilder().build())
258 public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
259 ServiceRerouteInput input, String finalAckYes, String message) {
260 return RpcResultBuilder
262 new ServiceRerouteOutputBuilder()
263 .setConfigurationResponseCommon(
264 new ConfigurationResponseCommonBuilder().setResponseMessage(message).build())
265 .setHardConstraints(null)
266 .setSoftConstraints(null)
271 public static Services mappingServices(
272 ServiceCreateInput serviceCreateInput, ServiceReconfigureInput serviceReconfigureInput) {
273 if (serviceCreateInput != null) {
274 return new ServicesBuilder()
275 .setServiceName(serviceCreateInput.getServiceName())
276 .setAdministrativeState(AdminStates.OutOfService)
277 .setOperationalState(State.OutOfService)
278 .setCommonId(serviceCreateInput.getCommonId())
279 .setConnectionType(serviceCreateInput.getConnectionType())
280 .setCustomer(serviceCreateInput.getCustomer())
281 .setCustomerContact(serviceCreateInput.getCustomerContact())
282 .setHardConstraints(serviceCreateInput.getHardConstraints())
283 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
284 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
285 .setLifecycleState(LifecycleState.Planned)
287 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
288 .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
291 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
292 .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
296 if (serviceReconfigureInput != null) {
297 return new ServicesBuilder()
298 .setServiceName(serviceReconfigureInput.getServiceName())
299 .setAdministrativeState(AdminStates.OutOfService)
300 .setOperationalState(State.OutOfService)
301 .setCommonId(serviceReconfigureInput.getCommonId())
302 .setConnectionType(serviceReconfigureInput.getConnectionType())
303 .setCustomer(serviceReconfigureInput.getCustomer())
304 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
305 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
306 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
307 .setLifecycleState(LifecycleState.Planned)
309 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
310 .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
313 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
314 .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
318 return new ServicesBuilder().build();
321 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
322 .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) {
323 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
324 .temp.service.list.ServicesBuilder()
325 .setServiceName(tempServiceCreateInput.getCommonId())
326 .setAdministrativeState(AdminStates.OutOfService)
327 .setOperationalState(State.OutOfService)
328 .setCommonId(tempServiceCreateInput.getCommonId())
329 .setConnectionType(tempServiceCreateInput.getConnectionType())
330 .setCustomer(tempServiceCreateInput.getCustomer())
331 .setCustomerContact(tempServiceCreateInput.getCustomerContact())
332 .setHardConstraints(tempServiceCreateInput.getHardConstraints())
333 .setSoftConstraints(tempServiceCreateInput.getSoftConstraints())
334 .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
335 .setLifecycleState(LifecycleState.Planned)
337 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
338 .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
340 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
341 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
345 public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
346 if (serviceInput == null) {
347 return new ServicePathsBuilder().build();
349 ServicePathsBuilder servicePathBuilder =
350 new ServicePathsBuilder()
352 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
353 .service.path.ServiceAEndBuilder()
354 .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
355 .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
356 .setClli(serviceInput.getServiceAEnd().getClli())
357 .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue())
359 new org.opendaylight.yang.gen.v1
360 .http.org.transportpce.b.c._interface.service.types.rev220118
361 .service.endpoint.sp.TxDirectionBuilder()
363 serviceInput.getServiceAEnd().getTxDirection()
364 .values().stream().findFirst().orElseThrow().getPort())
367 new org.opendaylight.yang.gen.v1
368 .http.org.transportpce.b.c._interface.service.types.rev220118
369 .service.endpoint.sp.RxDirectionBuilder()
371 serviceInput.getServiceAEnd().getRxDirection()
372 .values().stream().findFirst().orElseThrow().getPort())
376 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
377 .service.path.ServiceZEndBuilder()
378 .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
379 .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
380 .setClli(serviceInput.getServiceZEnd().getClli())
381 .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue())
383 new org.opendaylight.yang.gen.v1
384 .http.org.transportpce.b.c._interface.service.types.rev220118
385 .service.endpoint.sp.TxDirectionBuilder()
387 serviceInput.getServiceZEnd().getTxDirection()
388 .values().stream().findFirst().orElseThrow().getPort())
391 new org.opendaylight.yang.gen.v1
392 .http.org.transportpce.b.c._interface.service.types.rev220118
393 .service.endpoint.sp.RxDirectionBuilder()
395 serviceInput.getServiceZEnd().getRxDirection()
396 .values().stream().findFirst().orElseThrow().getPort())
399 .setServicePathName(serviceInput.getServiceName())
400 .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
401 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build())
403 new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build());
404 if (serviceInput.getHardConstraints() != null) {
405 servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints());
407 if (serviceInput.getSoftConstraints() != null) {
408 servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints());
410 return servicePathBuilder.build();