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 java.util.HashMap;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.PathComputationRequestOutput;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEnd;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceAEndBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceZEnd;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.path.computation.request.input.ServiceZEndBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.service.path.rpc.result.PathDescription;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInputBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ServiceEndpoint;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.response.parameters.ResponseParametersBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.TransportAssignmentBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.McTtpBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtp;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtpBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.hierarchy.transport.assignment.NmcCtpKey;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU0;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU1;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU2e;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU3;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODU4;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUCn;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexCbr;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexFlexe;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexGfp;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODUflexImp;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU0;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU1;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU2e;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU3;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTU4;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUCn;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OTUflex;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OduRateIdentity;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.OtuRateIdentity;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutput;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogOutputBuilder;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutput;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogOutputBuilder;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutput;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutputBuilder;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInput;
66 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutput;
67 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutputBuilder;
68 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckInput;
69 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutput;
70 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceFeasibilityCheckOutputBuilder;
71 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureInput;
72 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutput;
73 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceReconfigureOutputBuilder;
74 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteInput;
75 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutput;
76 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRerouteOutputBuilder;
77 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationInput;
78 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutput;
79 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceRestorationOutputBuilder;
80 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateInput;
81 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutput;
82 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceCreateOutputBuilder;
83 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteInput;
84 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutput;
85 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.TempServiceDeleteOutputBuilder;
86 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services;
87 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesBuilder;
88 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.ServicesKey;
89 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchy;
90 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchyBuilder;
91 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.services.SupportingServiceHierarchyKey;
92 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirection;
93 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
94 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirection;
95 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
96 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
97 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescriptionBuilder;
98 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
99 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
100 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
101 import org.opendaylight.yangtools.yang.common.RpcResult;
102 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
103 import org.slf4j.Logger;
104 import org.slf4j.LoggerFactory;
106 public final class ModelMappingUtils {
107 private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
109 private static final ImmutableMap<String, OduRateIdentity> ODU_RATE_MAP =
110 ImmutableMap.<String, OduRateIdentity>builder()
111 .put("ODU0", ODU0.VALUE)
112 .put("ODU1", ODU1.VALUE)
113 .put("ODU2", ODU2.VALUE)
114 .put("ODU2e", ODU2e.VALUE)
115 .put("ODU3", ODU3.VALUE)
116 .put("ODU4", ODU4.VALUE)
117 .put("ODUCn", ODUCn.VALUE)
118 .put("ODUflexCbr", ODUflexCbr.VALUE)
119 .put("ODUflexFlexe", ODUflexFlexe.VALUE)
120 .put("ODUflexGfp", ODUflexGfp.VALUE)
121 .put("ODUflexImp", ODUflexImp.VALUE)
124 private static final ImmutableMap<String, OtuRateIdentity> OTU_RATE_MAP =
125 ImmutableMap.<String, OtuRateIdentity>builder()
126 .put("OTU0", OTU0.VALUE)
127 .put("OTU1", OTU1.VALUE)
128 .put("OTU2", OTU2.VALUE)
129 .put("OTU2e", OTU2e.VALUE)
130 .put("OTU3", OTU3.VALUE)
131 .put("OTU4", OTU4.VALUE)
132 .put("OTUCn", OTUCn.VALUE)
133 .put("OTUflex", OTUflex.VALUE)
136 private ModelMappingUtils() {
139 public static ServiceImplementationRequestInput createServiceImplementationRequest(
141 PathDescription pathDescription) {
142 return new ServiceImplementationRequestInputBuilder()
143 .setConnectionType(input.getConnectionType())
145 input.isServiceReconfigure()
146 ? input.getNewServiceName()
147 : input.getServiceName())
149 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
150 .service.implementation.request.input.ServiceAEndBuilder()
151 .setServiceFormat(input.getServiceAEnd().getServiceFormat())
152 .setServiceRate(input.getServiceAEnd().getServiceRate())
153 .setOtuServiceRate(getOtuServiceRate(input.getServiceAEnd().getOtuServiceRate()))
154 .setOduServiceRate(getOduServiceRate(input.getServiceAEnd().getOduServiceRate()))
155 .setClli(input.getServiceAEnd().getClli())
156 .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
158 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
159 .service.endpoint.sp.TxDirectionBuilder()
161 input.getServiceAEnd().getTxDirection().values().stream().findFirst().orElseThrow()
165 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
166 .service.endpoint.sp.RxDirectionBuilder()
168 input.getServiceAEnd().getRxDirection().values().stream().findFirst().orElseThrow()
173 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
174 .service.implementation.request.input.ServiceZEndBuilder()
175 .setServiceFormat(input.getServiceZEnd().getServiceFormat())
176 .setServiceRate(input.getServiceZEnd().getServiceRate())
177 .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate()))
178 .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate()))
179 .setClli(input.getServiceZEnd().getClli())
180 .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
182 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
183 .service.endpoint.sp.TxDirectionBuilder()
185 input.getServiceZEnd().getTxDirection().values().stream().findFirst().orElseThrow()
189 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
190 .service.endpoint.sp.RxDirectionBuilder()
192 input.getServiceZEnd().getRxDirection().values().stream().findFirst().orElseThrow()
196 .setConnectionType(input.getConnectionType())
197 .setServiceHandlerHeader(
198 new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build())
200 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
201 .service.implementation.request.input.PathDescriptionBuilder()
202 .setAToZDirection(pathDescription.getAToZDirection())
203 .setZToADirection(pathDescription.getZToADirection())
208 private static OduRateIdentity getOduServiceRate(OduRateIdentity oduServiceRate) {
209 if (oduServiceRate == null || !ODU_RATE_MAP.containsKey(oduServiceRate.toString())) {
210 LOG.error("ODU rate {} not recognized", oduServiceRate);
213 return ODU_RATE_MAP.get(oduServiceRate.toString());
216 private static OtuRateIdentity getOtuServiceRate(OtuRateIdentity otuServiceRate) {
217 if (otuServiceRate == null || !OTU_RATE_MAP.containsKey(otuServiceRate.toString())) {
218 LOG.error("OTU rate {} not recognized", otuServiceRate);
221 return OTU_RATE_MAP.get(otuServiceRate.toString());
224 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
225 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
226 return new ServiceDeleteInputBuilder()
227 .setServiceName(serviceInput.getServiceName())
228 .setServiceHandlerHeader(
229 new ServiceHandlerHeaderBuilder()
230 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
235 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
236 .ServiceDeleteInput createServiceDeleteInput(
237 ServiceRerouteInput serviceRerouteinput,
239 return new ServiceDeleteInputBuilder()
240 .setServiceName(serviceRerouteinput.getServiceName())
241 .setServiceHandlerHeader(
242 new ServiceHandlerHeaderBuilder()
243 .setRequestId(services.getSdncRequestHeader().getRequestId())
248 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
249 .ServiceDeleteInput createServiceDeleteInput(
250 ServiceRestorationInput serviceRestorationInput,
252 return new ServiceDeleteInputBuilder()
253 .setServiceName(serviceRestorationInput.getServiceName())
254 .setServiceHandlerHeader(
255 new ServiceHandlerHeaderBuilder()
256 .setRequestId(services.getSdncRequestHeader().getRequestId())
261 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
262 .ServiceDeleteInput createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
263 String serviceName = serviceReconfigureInput.getServiceName();
264 return new ServiceDeleteInputBuilder()
265 .setServiceName(serviceName)
266 .setServiceHandlerHeader(
267 new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build())
271 public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) {
272 return new ServiceAEndBuilder()
273 .setClli(serviceAEnd.getClli())
274 .setNodeId(serviceAEnd.getNodeId().getValue())
275 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
276 .setServiceFormat(serviceAEnd.getServiceFormat())
277 .setServiceRate(serviceAEnd.getServiceRate())
278 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
282 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
283 .path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
284 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
285 .path.computation.reroute.request.input.ServiceAEndBuilder()
286 .setClli(serviceAEnd.getClli())
287 .setNodeId(serviceAEnd.getNodeId().getValue())
288 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst()
290 .setServiceFormat(serviceAEnd.getServiceFormat())
291 .setServiceRate(serviceAEnd.getServiceRate())
292 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst()
297 public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
298 return new ServiceZEndBuilder()
299 .setClli(serviceZEnd.getClli())
300 .setNodeId(serviceZEnd.getNodeId().getValue())
301 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().orElseThrow()))
302 .setServiceFormat(serviceZEnd.getServiceFormat())
303 .setServiceRate(serviceZEnd.getServiceRate())
304 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().orElseThrow()))
308 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
309 .path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
310 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
311 .path.computation.reroute.request.input.ServiceZEndBuilder()
312 .setClli(serviceZEnd.getClli())
313 .setNodeId(serviceZEnd.getNodeId().getValue())
314 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst()
316 .setServiceFormat(serviceZEnd.getServiceFormat())
317 .setServiceRate(serviceZEnd.getServiceRate())
318 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst()
323 public static RxDirection createRxDirection(
324 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
325 .service.endpoint.RxDirection rxDirection) {
326 return new RxDirectionBuilder().setPort(rxDirection.getPort()).build();
329 public static TxDirection createTxDirection(
330 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
331 .service.endpoint.TxDirection txDirection) {
332 return new TxDirectionBuilder().setPort(txDirection.getPort()).build();
335 public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(
336 ServiceDeleteInput input, String finalAck, String message, String responseCode) {
337 return RpcResultBuilder
339 new ServiceDeleteOutputBuilder()
340 .setConfigurationResponseCommon(
341 new ConfigurationResponseCommonBuilder()
342 .setAckFinalIndicator(finalAck)
343 .setResponseMessage(message)
344 .setResponseCode(responseCode)
346 input.getSdncRequestHeader() == null
348 : input.getSdncRequestHeader().getRequestId())
354 public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
355 TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
356 return RpcResultBuilder
358 new TempServiceDeleteOutputBuilder()
359 .setConfigurationResponseCommon(
360 new ConfigurationResponseCommonBuilder()
361 .setAckFinalIndicator(finalAck)
362 .setResponseMessage(message)
363 .setResponseCode(responseCode)
370 public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(
371 ServiceCreateInput input, String finalAck, String message, String responseCode) {
372 return RpcResultBuilder
374 new ServiceCreateOutputBuilder()
375 .setConfigurationResponseCommon(
376 new ConfigurationResponseCommonBuilder()
377 .setAckFinalIndicator(finalAck)
378 .setResponseMessage(message)
379 .setResponseCode(responseCode)
381 input.getSdncRequestHeader() == null
383 : input.getSdncRequestHeader().getRequestId())
385 .setResponseParameters(new ResponseParametersBuilder().build())
390 public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
391 TempServiceCreateInput input, String finalAck, String message, String responseCode) {
392 return RpcResultBuilder
394 new TempServiceCreateOutputBuilder()
395 .setConfigurationResponseCommon(
396 new ConfigurationResponseCommonBuilder()
397 .setAckFinalIndicator(finalAck)
398 .setResponseMessage(message)
399 .setResponseCode(responseCode)
401 input.getSdncRequestHeader() == null
403 : input.getSdncRequestHeader().getRequestId())
405 .setResponseParameters(new ResponseParametersBuilder().build())
410 public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
411 ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
412 return RpcResultBuilder
414 new ServiceFeasibilityCheckOutputBuilder()
415 .setConfigurationResponseCommon(
416 new ConfigurationResponseCommonBuilder()
417 .setAckFinalIndicator(finalAck)
418 .setResponseMessage(message)
419 .setResponseCode(responseCode)
421 input.getSdncRequestHeader() == null
423 : input.getSdncRequestHeader().getRequestId())
425 .setResponseParameters(new ResponseParametersBuilder().build())
430 public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
431 ServiceReconfigureInput input, String message) {
432 return RpcResultBuilder
434 new ServiceReconfigureOutputBuilder()
435 .setConfigurationResponseCommon(
436 new ConfigurationResponseCommonBuilder()
437 .setResponseMessage(message)
443 public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
444 ServiceRerouteInput input, String finalAckYes, String message, String responseCode) {
445 return RpcResultBuilder
447 new ServiceRerouteOutputBuilder()
448 .setConfigurationResponseCommon(
449 new ConfigurationResponseCommonBuilder()
450 .setAckFinalIndicator(finalAckYes)
451 .setResponseCode(responseCode)
452 .setResponseMessage(message)
454 .setHardConstraints(null)
455 .setSoftConstraints(null)
460 public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message) {
461 return RpcResultBuilder
463 new ServiceRestorationOutputBuilder()
464 .setConfigurationResponseCommon(
465 new ConfigurationResponseCommonBuilder()
466 .setResponseMessage(message)
472 public static Services mappingServices(
473 ServiceCreateInput serviceCreateInput,
474 ServiceReconfigureInput serviceReconfigureInput) {
475 if (serviceCreateInput != null) {
476 return new ServicesBuilder()
477 .setServiceName(serviceCreateInput.getServiceName())
478 .setAdministrativeState(AdminStates.OutOfService)
479 .setOperationalState(State.OutOfService)
480 .setCommonId(serviceCreateInput.getCommonId())
481 .setConnectionType(serviceCreateInput.getConnectionType())
482 .setCustomer(serviceCreateInput.getCustomer())
483 .setCustomerContact(serviceCreateInput.getCustomerContact())
484 .setServiceResiliency(serviceCreateInput.getServiceResiliency())
485 .setHardConstraints(serviceCreateInput.getHardConstraints())
486 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
487 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
488 .setLifecycleState(LifecycleState.Planned)
490 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
491 .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
494 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
495 .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
499 if (serviceReconfigureInput != null) {
500 return new ServicesBuilder()
501 .setServiceName(serviceReconfigureInput.getServiceName())
502 .setAdministrativeState(AdminStates.OutOfService)
503 .setOperationalState(State.OutOfService)
504 .setCommonId(serviceReconfigureInput.getCommonId())
505 .setConnectionType(serviceReconfigureInput.getConnectionType())
506 .setCustomer(serviceReconfigureInput.getCustomer())
507 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
508 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
509 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
510 .setLifecycleState(LifecycleState.Planned)
512 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
513 .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
516 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
517 .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
521 //FIXME: Because of Silicon, we cannot have empty key.
522 //it's this case possible ? There is a Junit test covering null
523 //temporary workaround as now there is a null key check done by yangtools.
524 //Functional review is needed
525 LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null");
526 return new ServicesBuilder().withKey(new ServicesKey("unknown")).build();
529 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
530 .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput,
531 PathDescription pathDescription) {
532 Map<SupportingServiceHierarchyKey, SupportingServiceHierarchy> supportingServiceHierarchyMap = new HashMap<>();
533 Map<NmcCtpKey, NmcCtp> nmcCtpMap = new HashMap<>();
534 SupportingServiceHierarchyKey supportingServiceHierarchyKey = new SupportingServiceHierarchyKey(
535 tempServiceCreateInput.getCommonId());
536 // TODO: here we assume the A-Z and Z-A has parameters
537 LOG.info("Min and Max frequencies are {} {}", pathDescription.getAToZDirection().getAToZMinFrequency(),
538 pathDescription.getAToZDirection().getAToZMinFrequency());
543 .setFrequency(pathDescription.getAToZDirection().getCentralFrequency())
544 .setWidth(pathDescription.getAToZDirection().getWidth())
546 supportingServiceHierarchyMap.put(
547 supportingServiceHierarchyKey,
548 new SupportingServiceHierarchyBuilder().setServiceIdentifier(tempServiceCreateInput.getCommonId())
549 .setTransportAssignment(
550 new TransportAssignmentBuilder()
553 .setMaxFreq(pathDescription.getAToZDirection().getAToZMaxFrequency())
554 .setMinFreq(pathDescription.getAToZDirection().getAToZMinFrequency())
556 .setNmcCtp(nmcCtpMap)
559 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
560 .temp.service.list.ServicesBuilder()
561 .setServiceName(tempServiceCreateInput.getCommonId())
562 .setAdministrativeState(AdminStates.OutOfService)
563 .setOperationalState(State.OutOfService)
564 .setCommonId(tempServiceCreateInput.getCommonId())
565 .setConnectionType(tempServiceCreateInput.getConnectionType())
566 .setCustomer(tempServiceCreateInput.getCustomer())
567 .setCustomerContact(tempServiceCreateInput.getCustomerContact())
568 .setHardConstraints(tempServiceCreateInput.getHardConstraints())
569 .setSoftConstraints(tempServiceCreateInput.getSoftConstraints())
570 .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
571 .setLifecycleState(LifecycleState.Planned)
573 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
574 .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
576 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
577 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
578 .setSupportingServiceHierarchy(supportingServiceHierarchyMap)
582 public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
583 if (serviceInput == null) {
584 //FIXME: Because of Silicon, we cannot have empty key.
585 //it's this case possible ? There is a Junit test covering null
586 //temporary workaround as now there is a null key check done by yangtools.
587 //Functional review is needed
588 LOG.warn("ServiceInput is null");
589 return new ServicePathsBuilder().withKey(new ServicePathsKey("unknown")).build();
592 ServicePathsBuilder servicePathBuilder =
593 new ServicePathsBuilder()
595 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
596 .service.path.ServiceAEndBuilder()
597 .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
598 .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
599 .setClli(serviceInput.getServiceAEnd().getClli())
600 .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue())
602 new org.opendaylight.yang.gen.v1
603 .http.org.transportpce.b.c._interface.service.types.rev220118
604 .service.endpoint.sp.TxDirectionBuilder()
606 serviceInput.getServiceAEnd().getTxDirection()
607 .values().stream().findFirst().orElseThrow().getPort())
610 new org.opendaylight.yang.gen.v1
611 .http.org.transportpce.b.c._interface.service.types.rev220118
612 .service.endpoint.sp.RxDirectionBuilder()
614 serviceInput.getServiceAEnd().getRxDirection()
615 .values().stream().findFirst().orElseThrow().getPort())
619 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
620 .service.path.ServiceZEndBuilder()
621 .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
622 .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
623 .setClli(serviceInput.getServiceZEnd().getClli())
624 .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue())
626 new org.opendaylight.yang.gen.v1
627 .http.org.transportpce.b.c._interface.service.types.rev220118
628 .service.endpoint.sp.TxDirectionBuilder()
630 serviceInput.getServiceZEnd().getTxDirection()
631 .values().stream().findFirst().orElseThrow().getPort())
634 new org.opendaylight.yang.gen.v1
635 .http.org.transportpce.b.c._interface.service.types.rev220118
636 .service.endpoint.sp.RxDirectionBuilder()
638 serviceInput.getServiceZEnd().getRxDirection()
639 .values().stream().findFirst().orElseThrow().getPort())
642 .setServicePathName(serviceInput.getServiceName())
643 .setServiceHandlerHeader(
644 new ServiceHandlerHeaderBuilder()
645 .setRequestId(serviceInput.getSdncRequestHeader()
648 if (serviceInput.getHardConstraints() != null) {
649 servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints());
651 if (serviceInput.getSoftConstraints() != null) {
652 servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints());
655 if (output.getResponseParameters().getPathDescription() != null) {
656 servicePathBuilder.setPathDescription(
657 new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build());
659 return servicePathBuilder.build();
663 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
664 value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS",
665 justification = "not relevant to return and zero length array as we need real pos")
666 public static int[] findTheLongestSubstring(String s1, String s2) {
667 if ((s1 == null) || (s2 == null)) {
670 int[][] dp = new int[s1.length() + 1][s2.length() + 1];
673 for (int i = 1; i < dp.length; i++) {
674 for (int j = 1; j < dp[0].length; j++) {
675 char ch1 = s1.charAt(i - 1);
676 char ch2 = s2.charAt(j - 1);
678 dp[i][j] = dp[i - 1][j - 1] + 1;
679 if (dp[i][j] >= maxLen) {
686 return new int[] { endPos - maxLen, endPos };
689 public static ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>>
690 addOpenroadmServiceReply(AddOpenroadmOperationalModesToCatalogInput input, String finalAck,
691 String message,String responseCode) {
692 return RpcResultBuilder
694 new AddOpenroadmOperationalModesToCatalogOutputBuilder()
695 .setConfigurationResponseCommon(
696 new ConfigurationResponseCommonBuilder()
697 .setAckFinalIndicator(finalAck)
698 .setResponseMessage(message)
699 .setResponseCode(responseCode)
701 input.getSdncRequestHeader() == null
703 : input.getSdncRequestHeader().getRequestId())
709 public static ListenableFuture<RpcResult<AddSpecificOperationalModesToCatalogOutput>>
710 addSpecificOpenroadmServiceReply(AddSpecificOperationalModesToCatalogInput input, String finalAck,
711 String message,String responseCode) {
712 return RpcResultBuilder
714 new AddSpecificOperationalModesToCatalogOutputBuilder()
715 .setConfigurationResponseCommon(
716 new ConfigurationResponseCommonBuilder()
717 .setAckFinalIndicator(finalAck)
718 .setResponseMessage(message)
719 .setResponseCode(responseCode)
721 input.getSdncRequestHeader() == null
723 : input.getSdncRequestHeader().getRequestId())