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 edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
13 import java.util.HashMap;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEnd;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceAEndBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEnd;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.path.computation.request.input.ServiceZEndBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceEndpoint;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.configuration.response.common.ConfigurationResponseCommonBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.response.parameters.ResponseParametersBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.TransportAssignmentBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.McTtpBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.NmcCtp;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.NmcCtpBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.hierarchy.transport.assignment.NmcCtpKey;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU0;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU1;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2e;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU3;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU4;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUCn;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexCbr;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexFlexe;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexGfp;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexImp;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU0;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU1;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2e;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU3;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU4;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUCn;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUflex;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OtuRateIdentity;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogInput;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutput;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddOpenroadmOperationalModesToCatalogOutputBuilder;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogInput;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogOutput;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.AddSpecificOperationalModesToCatalogOutputBuilder;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutput;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutputBuilder;
66 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInput;
67 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput;
68 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutputBuilder;
69 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckInput;
70 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckOutput;
71 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckOutputBuilder;
72 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInput;
73 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureOutput;
74 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureOutputBuilder;
75 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInput;
76 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutput;
77 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteOutputBuilder;
78 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInput;
79 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationOutput;
80 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationOutputBuilder;
81 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput;
82 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutput;
83 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateOutputBuilder;
84 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInput;
85 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutput;
86 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteOutputBuilder;
87 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
88 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder;
89 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesKey;
90 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list.services.SupportingServiceHierarchy;
91 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list.services.SupportingServiceHierarchyBuilder;
92 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.temp.service.list.services.SupportingServiceHierarchyKey;
93 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirection;
94 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
95 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirection;
96 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
97 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
98 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescriptionBuilder;
99 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
100 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
101 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
102 import org.opendaylight.yangtools.yang.common.RpcResult;
103 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
104 import org.slf4j.Logger;
105 import org.slf4j.LoggerFactory;
107 public final class ModelMappingUtils {
108 private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
110 private static final ImmutableMap<String, OduRateIdentity> ODU_RATE_MAP =
111 ImmutableMap.<String, OduRateIdentity>builder()
112 .put("ODU0", ODU0.VALUE)
113 .put("ODU1", ODU1.VALUE)
114 .put("ODU2", ODU2.VALUE)
115 .put("ODU2e", ODU2e.VALUE)
116 .put("ODU3", ODU3.VALUE)
117 .put("ODU4", ODU4.VALUE)
118 .put("ODUCn", ODUCn.VALUE)
119 .put("ODUflexCbr", ODUflexCbr.VALUE)
120 .put("ODUflexFlexe", ODUflexFlexe.VALUE)
121 .put("ODUflexGfp", ODUflexGfp.VALUE)
122 .put("ODUflexImp", ODUflexImp.VALUE)
125 private static final ImmutableMap<String, OtuRateIdentity> OTU_RATE_MAP =
126 ImmutableMap.<String, OtuRateIdentity>builder()
127 .put("OTU0", OTU0.VALUE)
128 .put("OTU1", OTU1.VALUE)
129 .put("OTU2", OTU2.VALUE)
130 .put("OTU2e", OTU2e.VALUE)
131 .put("OTU3", OTU3.VALUE)
132 .put("OTU4", OTU4.VALUE)
133 .put("OTUCn", OTUCn.VALUE)
134 .put("OTUflex", OTUflex.VALUE)
137 private ModelMappingUtils() {
140 public static ServiceImplementationRequestInput createServiceImplementationRequest(
142 PathDescription pathDescription) {
143 return new ServiceImplementationRequestInputBuilder()
144 .setConnectionType(input.getConnectionType())
146 input.isServiceReconfigure()
147 ? input.getNewServiceName()
148 : input.getServiceName())
150 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
151 .service.implementation.request.input.ServiceAEndBuilder()
152 .setServiceFormat(input.getServiceAEnd().getServiceFormat())
153 .setServiceRate(input.getServiceAEnd().getServiceRate())
154 .setOtuServiceRate(getOtuServiceRate(input.getServiceAEnd().getOtuServiceRate()))
155 .setOduServiceRate(getOduServiceRate(input.getServiceAEnd().getOduServiceRate()))
156 .setClli(input.getServiceAEnd().getClli())
157 .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
159 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
160 .service.endpoint.sp.TxDirectionBuilder()
162 input.getServiceAEnd().getTxDirection().values().stream().findFirst().orElseThrow()
166 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
167 .service.endpoint.sp.RxDirectionBuilder()
169 input.getServiceAEnd().getRxDirection().values().stream().findFirst().orElseThrow()
174 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
175 .service.implementation.request.input.ServiceZEndBuilder()
176 .setServiceFormat(input.getServiceZEnd().getServiceFormat())
177 .setServiceRate(input.getServiceZEnd().getServiceRate())
178 .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate()))
179 .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate()))
180 .setClli(input.getServiceZEnd().getClli())
181 .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
183 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
184 .service.endpoint.sp.TxDirectionBuilder()
186 input.getServiceZEnd().getTxDirection().values().stream().findFirst().orElseThrow()
190 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
191 .service.endpoint.sp.RxDirectionBuilder()
193 input.getServiceZEnd().getRxDirection().values().stream().findFirst().orElseThrow()
197 .setConnectionType(input.getConnectionType())
198 .setServiceHandlerHeader(
199 new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build())
201 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
202 .service.implementation.request.input.PathDescriptionBuilder()
203 .setAToZDirection(pathDescription.getAToZDirection())
204 .setZToADirection(pathDescription.getZToADirection())
209 private static OduRateIdentity getOduServiceRate(OduRateIdentity oduServiceRate) {
210 if (oduServiceRate == null || !ODU_RATE_MAP.containsKey(oduServiceRate.toString())) {
211 LOG.error("ODU rate {} not recognized", oduServiceRate);
214 return ODU_RATE_MAP.get(oduServiceRate.toString());
217 private static OtuRateIdentity getOtuServiceRate(OtuRateIdentity otuServiceRate) {
218 if (otuServiceRate == null || !OTU_RATE_MAP.containsKey(otuServiceRate.toString())) {
219 LOG.error("OTU rate {} not recognized", otuServiceRate);
222 return OTU_RATE_MAP.get(otuServiceRate.toString());
225 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
226 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
227 return new ServiceDeleteInputBuilder()
228 .setServiceName(serviceInput.getServiceName())
229 .setServiceHandlerHeader(
230 new ServiceHandlerHeaderBuilder()
231 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
236 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
237 .ServiceDeleteInput createServiceDeleteInput(
238 ServiceRerouteInput serviceRerouteinput,
240 return new ServiceDeleteInputBuilder()
241 .setServiceName(serviceRerouteinput.getServiceName())
242 .setServiceHandlerHeader(
243 new ServiceHandlerHeaderBuilder()
244 .setRequestId(services.getSdncRequestHeader().getRequestId())
249 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
250 .ServiceDeleteInput createServiceDeleteInput(
251 ServiceRestorationInput serviceRestorationInput,
253 return new ServiceDeleteInputBuilder()
254 .setServiceName(serviceRestorationInput.getServiceName())
255 .setServiceHandlerHeader(
256 new ServiceHandlerHeaderBuilder()
257 .setRequestId(services.getSdncRequestHeader().getRequestId())
262 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
263 .ServiceDeleteInput createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
264 String serviceName = serviceReconfigureInput.getServiceName();
265 return new ServiceDeleteInputBuilder()
266 .setServiceName(serviceName)
267 .setServiceHandlerHeader(
268 new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build())
272 public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) {
273 return new ServiceAEndBuilder()
274 .setClli(serviceAEnd.getClli())
275 .setNodeId(serviceAEnd.getNodeId().getValue())
276 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
277 .setServiceFormat(serviceAEnd.getServiceFormat())
278 .setServiceRate(serviceAEnd.getServiceRate())
279 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
283 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
284 .path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
285 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
286 .path.computation.reroute.request.input.ServiceAEndBuilder()
287 .setClli(serviceAEnd.getClli())
288 .setNodeId(serviceAEnd.getNodeId().getValue())
289 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst()
291 .setServiceFormat(serviceAEnd.getServiceFormat())
292 .setServiceRate(serviceAEnd.getServiceRate())
293 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst()
298 public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
299 return new ServiceZEndBuilder()
300 .setClli(serviceZEnd.getClli())
301 .setNodeId(serviceZEnd.getNodeId().getValue())
302 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
303 .setServiceFormat(serviceZEnd.getServiceFormat())
304 .setServiceRate(serviceZEnd.getServiceRate())
305 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
309 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
310 .path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
311 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
312 .path.computation.reroute.request.input.ServiceZEndBuilder()
313 .setClli(serviceZEnd.getClli())
314 .setNodeId(serviceZEnd.getNodeId().getValue())
315 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst()
317 .setServiceFormat(serviceZEnd.getServiceFormat())
318 .setServiceRate(serviceZEnd.getServiceRate())
319 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst()
324 public static RxDirection createRxDirection(
325 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
326 .service.endpoint.RxDirection rxDirection) {
327 return new RxDirectionBuilder().setPort(rxDirection.getPort()).build();
330 public static TxDirection createTxDirection(
331 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
332 .service.endpoint.TxDirection txDirection) {
333 return new TxDirectionBuilder().setPort(txDirection.getPort()).build();
336 public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(
337 ServiceDeleteInput input, String finalAck, String message, String responseCode) {
338 return RpcResultBuilder
340 new ServiceDeleteOutputBuilder()
341 .setConfigurationResponseCommon(
342 new ConfigurationResponseCommonBuilder()
343 .setAckFinalIndicator(finalAck)
344 .setResponseMessage(message)
345 .setResponseCode(responseCode)
347 input.getSdncRequestHeader() == null
349 : input.getSdncRequestHeader().getRequestId())
355 public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
356 TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
357 return RpcResultBuilder
359 new TempServiceDeleteOutputBuilder()
360 .setConfigurationResponseCommon(
361 new ConfigurationResponseCommonBuilder()
362 .setAckFinalIndicator(finalAck)
363 .setResponseMessage(message)
364 .setResponseCode(responseCode)
371 public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(
372 ServiceCreateInput input, String finalAck, String message, String responseCode) {
373 return RpcResultBuilder
375 new ServiceCreateOutputBuilder()
376 .setConfigurationResponseCommon(
377 new ConfigurationResponseCommonBuilder()
378 .setAckFinalIndicator(finalAck)
379 .setResponseMessage(message)
380 .setResponseCode(responseCode)
382 input.getSdncRequestHeader() == null
384 : input.getSdncRequestHeader().getRequestId())
386 .setResponseParameters(new ResponseParametersBuilder().build())
391 public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
392 TempServiceCreateInput input, String finalAck, String message, String responseCode) {
393 return RpcResultBuilder
395 new TempServiceCreateOutputBuilder()
396 .setConfigurationResponseCommon(
397 new ConfigurationResponseCommonBuilder()
398 .setAckFinalIndicator(finalAck)
399 .setResponseMessage(message)
400 .setResponseCode(responseCode)
402 input.getSdncRequestHeader() == null
404 : input.getSdncRequestHeader().getRequestId())
406 .setResponseParameters(new ResponseParametersBuilder().build())
411 public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
412 ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
413 return RpcResultBuilder
415 new ServiceFeasibilityCheckOutputBuilder()
416 .setConfigurationResponseCommon(
417 new ConfigurationResponseCommonBuilder()
418 .setAckFinalIndicator(finalAck)
419 .setResponseMessage(message)
420 .setResponseCode(responseCode)
422 input.getSdncRequestHeader() == null
424 : input.getSdncRequestHeader().getRequestId())
426 .setResponseParameters(new ResponseParametersBuilder().build())
431 public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
432 ServiceReconfigureInput input, String message) {
433 return RpcResultBuilder
435 new ServiceReconfigureOutputBuilder()
436 .setConfigurationResponseCommon(
437 new ConfigurationResponseCommonBuilder()
438 .setResponseMessage(message)
444 public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
445 ServiceRerouteInput input, String finalAckYes, String message, String responseCode) {
446 return RpcResultBuilder
448 new ServiceRerouteOutputBuilder()
449 .setConfigurationResponseCommon(
450 new ConfigurationResponseCommonBuilder()
451 .setAckFinalIndicator(finalAckYes)
452 .setResponseCode(responseCode)
453 .setResponseMessage(message)
455 .setHardConstraints(null)
456 .setSoftConstraints(null)
461 public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message) {
462 return RpcResultBuilder
464 new ServiceRestorationOutputBuilder()
465 .setConfigurationResponseCommon(
466 new ConfigurationResponseCommonBuilder()
467 .setResponseMessage(message)
473 public static Services mappingServices(
474 ServiceCreateInput serviceCreateInput,
475 ServiceReconfigureInput serviceReconfigureInput) {
476 if (serviceCreateInput != null) {
477 return new ServicesBuilder()
478 .setServiceName(serviceCreateInput.getServiceName())
479 .setAdministrativeState(AdminStates.OutOfService)
480 .setOperationalState(State.OutOfService)
481 .setCommonId(serviceCreateInput.getCommonId())
482 .setConnectionType(serviceCreateInput.getConnectionType())
483 .setCustomer(serviceCreateInput.getCustomer())
484 .setCustomerContact(serviceCreateInput.getCustomerContact())
485 .setServiceResiliency(serviceCreateInput.getServiceResiliency())
486 .setHardConstraints(serviceCreateInput.getHardConstraints())
487 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
488 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
489 .setLifecycleState(LifecycleState.Planned)
491 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
492 .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
495 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
496 .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
500 if (serviceReconfigureInput != null) {
501 return new ServicesBuilder()
502 .setServiceName(serviceReconfigureInput.getServiceName())
503 .setAdministrativeState(AdminStates.OutOfService)
504 .setOperationalState(State.OutOfService)
505 .setCommonId(serviceReconfigureInput.getCommonId())
506 .setConnectionType(serviceReconfigureInput.getConnectionType())
507 .setCustomer(serviceReconfigureInput.getCustomer())
508 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
509 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
510 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
511 .setLifecycleState(LifecycleState.Planned)
513 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
514 .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
517 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
518 .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
522 //FIXME: Because of Silicon, we cannot have empty key.
523 //it's this case possible ? There is a Junit test covering null
524 //temporary workaround as now there is a null key check done by yangtools.
525 //Functional review is needed
526 LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null");
527 return new ServicesBuilder().withKey(new ServicesKey("unknown")).build();
530 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
531 .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput,
532 PathDescription pathDescription) {
533 Map<SupportingServiceHierarchyKey, SupportingServiceHierarchy> supportingServiceHierarchyMap = new HashMap<>();
534 Map<NmcCtpKey, NmcCtp> nmcCtpMap = new HashMap<>();
535 SupportingServiceHierarchyKey supportingServiceHierarchyKey = new SupportingServiceHierarchyKey(
536 tempServiceCreateInput.getCommonId());
537 // TODO: here we assume the A-Z and Z-A has parameters
538 LOG.info("Min and Max frequencies are {} {}", pathDescription.getAToZDirection().getAToZMinFrequency(),
539 pathDescription.getAToZDirection().getAToZMinFrequency());
544 .setFrequency(pathDescription.getAToZDirection().getCentralFrequency())
545 .setWidth(pathDescription.getAToZDirection().getWidth())
547 supportingServiceHierarchyMap.put(
548 supportingServiceHierarchyKey,
549 new SupportingServiceHierarchyBuilder().setServiceIdentifier(tempServiceCreateInput.getCommonId())
550 .setTransportAssignment(
551 new TransportAssignmentBuilder()
554 .setMaxFreq(pathDescription.getAToZDirection().getAToZMaxFrequency())
555 .setMinFreq(pathDescription.getAToZDirection().getAToZMinFrequency())
557 .setNmcCtp(nmcCtpMap)
560 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
561 .temp.service.list.ServicesBuilder()
562 .setServiceName(tempServiceCreateInput.getCommonId())
563 .setAdministrativeState(AdminStates.OutOfService)
564 .setOperationalState(State.OutOfService)
565 .setCommonId(tempServiceCreateInput.getCommonId())
566 .setConnectionType(tempServiceCreateInput.getConnectionType())
567 .setCustomer(tempServiceCreateInput.getCustomer())
568 .setCustomerContact(tempServiceCreateInput.getCustomerContact())
569 .setHardConstraints(tempServiceCreateInput.getHardConstraints())
570 .setSoftConstraints(tempServiceCreateInput.getSoftConstraints())
571 .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
572 .setLifecycleState(LifecycleState.Planned)
574 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
575 .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
577 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
578 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
579 .setSupportingServiceHierarchy(supportingServiceHierarchyMap)
583 public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
584 if (serviceInput == null) {
585 //FIXME: Because of Silicon, we cannot have empty key.
586 //it's this case possible ? There is a Junit test covering null
587 //temporary workaround as now there is a null key check done by yangtools.
588 //Functional review is needed
589 LOG.warn("ServiceInput is null");
590 return new ServicePathsBuilder().withKey(new ServicePathsKey("unknown")).build();
593 ServicePathsBuilder servicePathBuilder =
594 new ServicePathsBuilder()
596 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
597 .service.path.ServiceAEndBuilder()
598 .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
599 .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
600 .setClli(serviceInput.getServiceAEnd().getClli())
601 .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue())
603 new org.opendaylight.yang.gen.v1
604 .http.org.transportpce.b.c._interface.service.types.rev220118
605 .service.endpoint.sp.TxDirectionBuilder()
607 serviceInput.getServiceAEnd().getTxDirection()
608 .values().stream().findFirst().orElseThrow().getPort())
611 new org.opendaylight.yang.gen.v1
612 .http.org.transportpce.b.c._interface.service.types.rev220118
613 .service.endpoint.sp.RxDirectionBuilder()
615 serviceInput.getServiceAEnd().getRxDirection()
616 .values().stream().findFirst().orElseThrow().getPort())
620 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
621 .service.path.ServiceZEndBuilder()
622 .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
623 .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
624 .setClli(serviceInput.getServiceZEnd().getClli())
625 .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue())
627 new org.opendaylight.yang.gen.v1
628 .http.org.transportpce.b.c._interface.service.types.rev220118
629 .service.endpoint.sp.TxDirectionBuilder()
631 serviceInput.getServiceZEnd().getTxDirection()
632 .values().stream().findFirst().orElseThrow().getPort())
635 new org.opendaylight.yang.gen.v1
636 .http.org.transportpce.b.c._interface.service.types.rev220118
637 .service.endpoint.sp.RxDirectionBuilder()
639 serviceInput.getServiceZEnd().getRxDirection()
640 .values().stream().findFirst().orElseThrow().getPort())
643 .setServicePathName(serviceInput.getServiceName())
644 .setServiceHandlerHeader(
645 new ServiceHandlerHeaderBuilder()
646 .setRequestId(serviceInput.getSdncRequestHeader()
649 if (serviceInput.getHardConstraints() != null) {
650 servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints());
652 if (serviceInput.getSoftConstraints() != null) {
653 servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints());
656 if (output.getResponseParameters().getPathDescription() != null) {
657 servicePathBuilder.setPathDescription(
658 new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build());
660 return servicePathBuilder.build();
665 value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS",
666 justification = "not relevant to return and zero length array as we need real pos")
667 public static int[] findTheLongestSubstring(String s1, String s2) {
668 if ((s1 == null) || (s2 == null)) {
671 int[][] dp = new int[s1.length() + 1][s2.length() + 1];
674 for (int i = 1; i < dp.length; i++) {
675 for (int j = 1; j < dp[0].length; j++) {
676 char ch1 = s1.charAt(i - 1);
677 char ch2 = s2.charAt(j - 1);
679 dp[i][j] = dp[i - 1][j - 1] + 1;
680 if (dp[i][j] >= maxLen) {
687 return new int[] { endPos - maxLen, endPos };
690 public static ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>>
691 addOpenroadmServiceReply(AddOpenroadmOperationalModesToCatalogInput input, String finalAck,
692 String message,String responseCode) {
693 return RpcResultBuilder
695 new AddOpenroadmOperationalModesToCatalogOutputBuilder()
696 .setConfigurationResponseCommon(
697 new ConfigurationResponseCommonBuilder()
698 .setAckFinalIndicator(finalAck)
699 .setResponseMessage(message)
700 .setResponseCode(responseCode)
702 input.getSdncRequestHeader() == null
704 : input.getSdncRequestHeader().getRequestId())
710 public static ListenableFuture<RpcResult<AddSpecificOperationalModesToCatalogOutput>>
711 addSpecificOpenroadmServiceReply(AddSpecificOperationalModesToCatalogInput input, String finalAck,
712 String message,String responseCode) {
713 return RpcResultBuilder
715 new AddSpecificOperationalModesToCatalogOutputBuilder()
716 .setConfigurationResponseCommon(
717 new ConfigurationResponseCommonBuilder()
718 .setAckFinalIndicator(finalAck)
719 .setResponseMessage(message)
720 .setResponseCode(responseCode)
722 input.getSdncRequestHeader() == null
724 : input.getSdncRequestHeader().getRequestId())