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;
10 import com.google.common.collect.ImmutableMap;
11 import com.google.common.util.concurrent.ListenableFuture;
12 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutput;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEnd;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEndBuilder;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceZEnd;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceZEndBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.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.rev211210.ServiceEndpoint;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.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.otn.common.types.rev210924.ODU0;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU1;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2e;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU3;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU4;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUCn;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexCbr;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexFlexe;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexGfp;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexImp;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU0;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU1;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2e;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU3;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU4;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUCn;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUflex;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OtuRateIdentity;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutput;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutputBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutput;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutputBuilder;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutput;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutputBuilder;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInput;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutput;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutputBuilder;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckInput;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutput;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutputBuilder;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureInput;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutput;
66 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutputBuilder;
67 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteInput;
68 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutput;
69 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutputBuilder;
70 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationInput;
71 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutput;
72 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutputBuilder;
73 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInput;
74 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutput;
75 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutputBuilder;
76 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteInput;
77 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutput;
78 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutputBuilder;
79 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
80 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesBuilder;
81 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesKey;
82 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirection;
83 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
84 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirection;
85 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
86 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
87 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescriptionBuilder;
88 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
89 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
90 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
91 import org.opendaylight.yangtools.yang.common.RpcResult;
92 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
93 import org.slf4j.Logger;
94 import org.slf4j.LoggerFactory;
96 public final class ModelMappingUtils {
97 private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
99 private static final ImmutableMap<String, OduRateIdentity> ODU_RATE_MAP =
100 ImmutableMap.<String, OduRateIdentity>builder()
101 .put("ODU0", ODU0.VALUE)
102 .put("ODU1", ODU1.VALUE)
103 .put("ODU2", ODU2.VALUE)
104 .put("ODU2e", ODU2e.VALUE)
105 .put("ODU3", ODU3.VALUE)
106 .put("ODU4", ODU4.VALUE)
107 .put("ODUCn", ODUCn.VALUE)
108 .put("ODUflexCbr", ODUflexCbr.VALUE)
109 .put("ODUflexFlexe", ODUflexFlexe.VALUE)
110 .put("ODUflexGfp", ODUflexGfp.VALUE)
111 .put("ODUflexImp", ODUflexImp.VALUE)
114 private static final ImmutableMap<String, OtuRateIdentity> OTU_RATE_MAP =
115 ImmutableMap.<String, OtuRateIdentity>builder()
116 .put("OTU0", OTU0.VALUE)
117 .put("OTU1", OTU1.VALUE)
118 .put("OTU2", OTU2.VALUE)
119 .put("OTU2e", OTU2e.VALUE)
120 .put("OTU3", OTU3.VALUE)
121 .put("OTU4", OTU4.VALUE)
122 .put("OTUCn", OTUCn.VALUE)
123 .put("OTUflex", OTUflex.VALUE)
126 private ModelMappingUtils() {
129 public static ServiceImplementationRequestInput createServiceImplementationRequest(
131 PathDescription pathDescription) {
132 return new ServiceImplementationRequestInputBuilder()
133 .setConnectionType(input.getConnectionType())
135 input.isServiceReconfigure()
136 ? input.getNewServiceName()
137 : input.getServiceName())
139 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
140 .service.implementation.request.input.ServiceAEndBuilder()
141 .setServiceFormat(input.getServiceAEnd().getServiceFormat())
142 .setServiceRate(input.getServiceAEnd().getServiceRate())
143 .setOtuServiceRate(getOtuServiceRate(input.getServiceAEnd().getOtuServiceRate()))
144 .setOduServiceRate(getOduServiceRate(input.getServiceAEnd().getOduServiceRate()))
145 .setClli(input.getServiceAEnd().getClli())
146 .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
148 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
149 .service.endpoint.sp.TxDirectionBuilder()
151 input.getServiceAEnd().getTxDirection().values().stream().findFirst().orElseThrow()
155 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
156 .service.endpoint.sp.RxDirectionBuilder()
158 input.getServiceAEnd().getRxDirection().values().stream().findFirst().orElseThrow()
163 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
164 .service.implementation.request.input.ServiceZEndBuilder()
165 .setServiceFormat(input.getServiceZEnd().getServiceFormat())
166 .setServiceRate(input.getServiceZEnd().getServiceRate())
167 .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate()))
168 .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate()))
169 .setClli(input.getServiceZEnd().getClli())
170 .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
172 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
173 .service.endpoint.sp.TxDirectionBuilder()
175 input.getServiceZEnd().getTxDirection().values().stream().findFirst().orElseThrow()
179 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
180 .service.endpoint.sp.RxDirectionBuilder()
182 input.getServiceZEnd().getRxDirection().values().stream().findFirst().orElseThrow()
186 .setConnectionType(input.getConnectionType())
187 .setServiceHandlerHeader(
188 new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build())
190 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
191 .service.implementation.request.input.PathDescriptionBuilder()
192 .setAToZDirection(pathDescription.getAToZDirection())
193 .setZToADirection(pathDescription.getZToADirection())
198 private static OduRateIdentity getOduServiceRate(OduRateIdentity oduServiceRate) {
199 if (oduServiceRate == null || !ODU_RATE_MAP.containsKey(oduServiceRate.toString())) {
200 LOG.error("ODU rate {} not recognized", oduServiceRate);
203 return ODU_RATE_MAP.get(oduServiceRate.toString());
206 private static OtuRateIdentity getOtuServiceRate(OtuRateIdentity otuServiceRate) {
207 if (otuServiceRate == null || !OTU_RATE_MAP.containsKey(otuServiceRate.toString())) {
208 LOG.error("OTU rate {} not recognized", otuServiceRate);
211 return OTU_RATE_MAP.get(otuServiceRate.toString());
214 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
215 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
216 return new ServiceDeleteInputBuilder()
217 .setServiceName(serviceInput.getServiceName())
218 .setServiceHandlerHeader(
219 new ServiceHandlerHeaderBuilder()
220 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
225 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
226 .ServiceDeleteInput createServiceDeleteInput(
227 ServiceRerouteInput serviceRerouteinput,
229 return new ServiceDeleteInputBuilder()
230 .setServiceName(serviceRerouteinput.getServiceName())
231 .setServiceHandlerHeader(
232 new ServiceHandlerHeaderBuilder()
233 .setRequestId(services.getSdncRequestHeader().getRequestId())
238 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
239 .ServiceDeleteInput createServiceDeleteInput(
240 ServiceRestorationInput serviceRestorationInput,
242 return new ServiceDeleteInputBuilder()
243 .setServiceName(serviceRestorationInput.getServiceName())
244 .setServiceHandlerHeader(
245 new ServiceHandlerHeaderBuilder()
246 .setRequestId(services.getSdncRequestHeader().getRequestId())
251 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
252 .ServiceDeleteInput createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
253 String serviceName = serviceReconfigureInput.getServiceName();
254 return new ServiceDeleteInputBuilder()
255 .setServiceName(serviceName)
256 .setServiceHandlerHeader(
257 new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build())
261 public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) {
262 return new ServiceAEndBuilder()
263 .setClli(serviceAEnd.getClli())
264 .setNodeId(serviceAEnd.getNodeId().getValue())
265 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
266 .setServiceFormat(serviceAEnd.getServiceFormat())
267 .setServiceRate(serviceAEnd.getServiceRate())
268 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
272 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
273 .path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
274 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
275 .path.computation.reroute.request.input.ServiceAEndBuilder()
276 .setClli(serviceAEnd.getClli())
277 .setNodeId(serviceAEnd.getNodeId().getValue())
278 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst()
280 .setServiceFormat(serviceAEnd.getServiceFormat())
281 .setServiceRate(serviceAEnd.getServiceRate())
282 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst()
287 public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
288 return new ServiceZEndBuilder()
289 .setClli(serviceZEnd.getClli())
290 .setNodeId(serviceZEnd.getNodeId().getValue())
291 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
292 .setServiceFormat(serviceZEnd.getServiceFormat())
293 .setServiceRate(serviceZEnd.getServiceRate())
294 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
298 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
299 .path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
300 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
301 .path.computation.reroute.request.input.ServiceZEndBuilder()
302 .setClli(serviceZEnd.getClli())
303 .setNodeId(serviceZEnd.getNodeId().getValue())
304 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst()
306 .setServiceFormat(serviceZEnd.getServiceFormat())
307 .setServiceRate(serviceZEnd.getServiceRate())
308 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst()
313 public static RxDirection createRxDirection(
314 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
315 .service.endpoint.RxDirection rxDirection) {
316 return new RxDirectionBuilder().setPort(rxDirection.getPort()).build();
319 public static TxDirection createTxDirection(
320 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
321 .service.endpoint.TxDirection txDirection) {
322 return new TxDirectionBuilder().setPort(txDirection.getPort()).build();
325 public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(
326 ServiceDeleteInput input, String finalAck, String message, String responseCode) {
327 return RpcResultBuilder
329 new ServiceDeleteOutputBuilder()
330 .setConfigurationResponseCommon(
331 new ConfigurationResponseCommonBuilder()
332 .setAckFinalIndicator(finalAck)
333 .setResponseMessage(message)
334 .setResponseCode(responseCode)
336 input.getSdncRequestHeader() == null
338 : input.getSdncRequestHeader().getRequestId())
344 public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
345 TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
346 return RpcResultBuilder
348 new TempServiceDeleteOutputBuilder()
349 .setConfigurationResponseCommon(
350 new ConfigurationResponseCommonBuilder()
351 .setAckFinalIndicator(finalAck)
352 .setResponseMessage(message)
353 .setResponseCode(responseCode)
360 public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(
361 ServiceCreateInput input, String finalAck, String message, String responseCode) {
362 return RpcResultBuilder
364 new ServiceCreateOutputBuilder()
365 .setConfigurationResponseCommon(
366 new ConfigurationResponseCommonBuilder()
367 .setAckFinalIndicator(finalAck)
368 .setResponseMessage(message)
369 .setResponseCode(responseCode)
371 input.getSdncRequestHeader() == null
373 : input.getSdncRequestHeader().getRequestId())
375 .setResponseParameters(new ResponseParametersBuilder().build())
380 public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
381 TempServiceCreateInput input, String finalAck, String message, String responseCode) {
382 return RpcResultBuilder
384 new TempServiceCreateOutputBuilder()
385 .setConfigurationResponseCommon(
386 new ConfigurationResponseCommonBuilder()
387 .setAckFinalIndicator(finalAck)
388 .setResponseMessage(message)
389 .setResponseCode(responseCode)
391 input.getSdncRequestHeader() == null
393 : input.getSdncRequestHeader().getRequestId())
395 .setResponseParameters(new ResponseParametersBuilder().build())
400 public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
401 ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
402 return RpcResultBuilder
404 new ServiceFeasibilityCheckOutputBuilder()
405 .setConfigurationResponseCommon(
406 new ConfigurationResponseCommonBuilder()
407 .setAckFinalIndicator(finalAck)
408 .setResponseMessage(message)
409 .setResponseCode(responseCode)
411 input.getSdncRequestHeader() == null
413 : input.getSdncRequestHeader().getRequestId())
415 .setResponseParameters(new ResponseParametersBuilder().build())
420 public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
421 ServiceReconfigureInput input, String message) {
422 return RpcResultBuilder
424 new ServiceReconfigureOutputBuilder()
425 .setConfigurationResponseCommon(
426 new ConfigurationResponseCommonBuilder()
427 .setResponseMessage(message)
433 public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
434 ServiceRerouteInput input, String finalAckYes, String message, String responseCode) {
435 return RpcResultBuilder
437 new ServiceRerouteOutputBuilder()
438 .setConfigurationResponseCommon(
439 new ConfigurationResponseCommonBuilder()
440 .setAckFinalIndicator(finalAckYes)
441 .setResponseCode(responseCode)
442 .setResponseMessage(message)
444 .setHardConstraints(null)
445 .setSoftConstraints(null)
450 public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message) {
451 return RpcResultBuilder
453 new ServiceRestorationOutputBuilder()
454 .setConfigurationResponseCommon(
455 new ConfigurationResponseCommonBuilder()
456 .setResponseMessage(message)
462 public static Services mappingServices(
463 ServiceCreateInput serviceCreateInput,
464 ServiceReconfigureInput serviceReconfigureInput) {
465 if (serviceCreateInput != null) {
466 return new ServicesBuilder()
467 .setServiceName(serviceCreateInput.getServiceName())
468 .setAdministrativeState(AdminStates.OutOfService)
469 .setOperationalState(State.OutOfService)
470 .setCommonId(serviceCreateInput.getCommonId())
471 .setConnectionType(serviceCreateInput.getConnectionType())
472 .setCustomer(serviceCreateInput.getCustomer())
473 .setCustomerContact(serviceCreateInput.getCustomerContact())
474 .setServiceResiliency(serviceCreateInput.getServiceResiliency())
475 .setHardConstraints(serviceCreateInput.getHardConstraints())
476 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
477 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
478 .setLifecycleState(LifecycleState.Planned)
480 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
481 .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
484 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
485 .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
489 if (serviceReconfigureInput != null) {
490 return new ServicesBuilder()
491 .setServiceName(serviceReconfigureInput.getServiceName())
492 .setAdministrativeState(AdminStates.OutOfService)
493 .setOperationalState(State.OutOfService)
494 .setCommonId(serviceReconfigureInput.getCommonId())
495 .setConnectionType(serviceReconfigureInput.getConnectionType())
496 .setCustomer(serviceReconfigureInput.getCustomer())
497 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
498 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
499 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
500 .setLifecycleState(LifecycleState.Planned)
502 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
503 .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
506 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
507 .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
511 //FIXME: Because of Silicon, we cannot have empty key.
512 //it's this case possible ? There is a Junit test covering null
513 //temporary workaround as now there is a null key check done by yangtools.
514 //Functional review is needed
515 LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null");
516 return new ServicesBuilder().withKey(new ServicesKey("unknown")).build();
519 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
520 .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) {
521 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
522 .temp.service.list.ServicesBuilder()
523 .setServiceName(tempServiceCreateInput.getCommonId())
524 .setAdministrativeState(AdminStates.OutOfService)
525 .setOperationalState(State.OutOfService)
526 .setCommonId(tempServiceCreateInput.getCommonId())
527 .setConnectionType(tempServiceCreateInput.getConnectionType())
528 .setCustomer(tempServiceCreateInput.getCustomer())
529 .setCustomerContact(tempServiceCreateInput.getCustomerContact())
530 .setHardConstraints(tempServiceCreateInput.getHardConstraints())
531 .setSoftConstraints(tempServiceCreateInput.getSoftConstraints())
532 .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
533 .setLifecycleState(LifecycleState.Planned)
535 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
536 .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
538 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
539 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
543 public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
544 if (serviceInput == null) {
545 //FIXME: Because of Silicon, we cannot have empty key.
546 //it's this case possible ? There is a Junit test covering null
547 //temporary workaround as now there is a null key check done by yangtools.
548 //Functional review is needed
549 LOG.warn("ServiceInput is null");
550 return new ServicePathsBuilder().withKey(new ServicePathsKey("unknown")).build();
553 ServicePathsBuilder servicePathBuilder =
554 new ServicePathsBuilder()
556 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
557 .service.path.ServiceAEndBuilder()
558 .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
559 .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
560 .setClli(serviceInput.getServiceAEnd().getClli())
561 .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue())
563 new org.opendaylight.yang.gen.v1
564 .http.org.transportpce.b.c._interface.service.types.rev220118
565 .service.endpoint.sp.TxDirectionBuilder()
567 serviceInput.getServiceAEnd().getTxDirection()
568 .values().stream().findFirst().orElseThrow().getPort())
571 new org.opendaylight.yang.gen.v1
572 .http.org.transportpce.b.c._interface.service.types.rev220118
573 .service.endpoint.sp.RxDirectionBuilder()
575 serviceInput.getServiceAEnd().getRxDirection()
576 .values().stream().findFirst().orElseThrow().getPort())
580 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
581 .service.path.ServiceZEndBuilder()
582 .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
583 .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
584 .setClli(serviceInput.getServiceZEnd().getClli())
585 .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue())
587 new org.opendaylight.yang.gen.v1
588 .http.org.transportpce.b.c._interface.service.types.rev220118
589 .service.endpoint.sp.TxDirectionBuilder()
591 serviceInput.getServiceZEnd().getTxDirection()
592 .values().stream().findFirst().orElseThrow().getPort())
595 new org.opendaylight.yang.gen.v1
596 .http.org.transportpce.b.c._interface.service.types.rev220118
597 .service.endpoint.sp.RxDirectionBuilder()
599 serviceInput.getServiceZEnd().getRxDirection()
600 .values().stream().findFirst().orElseThrow().getPort())
603 .setServicePathName(serviceInput.getServiceName())
604 .setServiceHandlerHeader(
605 new ServiceHandlerHeaderBuilder()
606 .setRequestId(serviceInput.getSdncRequestHeader()
609 if (serviceInput.getHardConstraints() != null) {
610 servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints());
612 if (serviceInput.getSoftConstraints() != null) {
613 servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints());
616 if (output.getResponseParameters().getPathDescription() != null) {
617 servicePathBuilder.setPathDescription(
618 new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build());
620 return servicePathBuilder.build();
624 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
625 value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS",
626 justification = "not relevant to return and zero length array as we need real pos")
627 public static int[] findTheLongestSubstring(String s1, String s2) {
628 if ((s1 == null) || (s2 == null)) {
631 int[][] dp = new int[s1.length() + 1][s2.length() + 1];
634 for (int i = 1; i < dp.length; i++) {
635 for (int j = 1; j < dp[0].length; j++) {
636 char ch1 = s1.charAt(i - 1);
637 char ch2 = s2.charAt(j - 1);
639 dp[i][j] = dp[i - 1][j - 1] + 1;
640 if (dp[i][j] >= maxLen) {
647 return new int[] { endPos - maxLen, endPos };
650 public static ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>>
651 addOpenroadmServiceReply(AddOpenroadmOperationalModesToCatalogInput input, String finalAck,
652 String message,String responseCode) {
653 return RpcResultBuilder
655 new AddOpenroadmOperationalModesToCatalogOutputBuilder()
656 .setConfigurationResponseCommon(
657 new ConfigurationResponseCommonBuilder()
658 .setAckFinalIndicator(finalAck)
659 .setResponseMessage(message)
660 .setResponseCode(responseCode)
662 input.getSdncRequestHeader() == null
664 : input.getSdncRequestHeader().getRequestId())
670 public static ListenableFuture<RpcResult<AddSpecificOperationalModesToCatalogOutput>>
671 addSpecificOpenroadmServiceReply(AddSpecificOperationalModesToCatalogInput input, String finalAck,
672 String message,String responseCode) {
673 return RpcResultBuilder
675 new AddSpecificOperationalModesToCatalogOutputBuilder()
676 .setConfigurationResponseCommon(
677 new ConfigurationResponseCommonBuilder()
678 .setAckFinalIndicator(finalAck)
679 .setResponseMessage(message)
680 .setResponseCode(responseCode)
682 input.getSdncRequestHeader() == null
684 : input.getSdncRequestHeader().getRequestId())