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().get().getPort())
154 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
155 .service.endpoint.sp.RxDirectionBuilder()
157 input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort())
161 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
162 .service.implementation.request.input.ServiceZEndBuilder()
163 .setServiceFormat(input.getServiceZEnd().getServiceFormat())
164 .setServiceRate(input.getServiceZEnd().getServiceRate())
165 .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate()))
166 .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate()))
167 .setClli(input.getServiceZEnd().getClli())
168 .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
170 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
171 .service.endpoint.sp.TxDirectionBuilder()
173 input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort())
176 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
177 .service.endpoint.sp.RxDirectionBuilder()
179 input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort())
182 .setConnectionType(input.getConnectionType())
183 .setServiceHandlerHeader(
184 new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build())
186 new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
187 .service.implementation.request.input.PathDescriptionBuilder()
188 .setAToZDirection(pathDescription.getAToZDirection())
189 .setZToADirection(pathDescription.getZToADirection())
194 private static OduRateIdentity getOduServiceRate(OduRateIdentity oduServiceRate) {
195 if (oduServiceRate == null || !ODU_RATE_MAP.containsKey(oduServiceRate.toString())) {
196 LOG.error("ODU rate {} not recognized", oduServiceRate);
199 return ODU_RATE_MAP.get(oduServiceRate.toString());
202 private static OtuRateIdentity getOtuServiceRate(OtuRateIdentity otuServiceRate) {
203 if (otuServiceRate == null || !OTU_RATE_MAP.containsKey(otuServiceRate.toString())) {
204 LOG.error("OTU rate {} not recognized", otuServiceRate);
207 return OTU_RATE_MAP.get(otuServiceRate.toString());
210 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
211 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
212 return new ServiceDeleteInputBuilder()
213 .setServiceName(serviceInput.getServiceName())
214 .setServiceHandlerHeader(
215 new ServiceHandlerHeaderBuilder()
216 .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
221 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
222 .ServiceDeleteInput createServiceDeleteInput(
223 ServiceRerouteInput serviceRerouteinput,
225 return new ServiceDeleteInputBuilder()
226 .setServiceName(serviceRerouteinput.getServiceName())
227 .setServiceHandlerHeader(
228 new ServiceHandlerHeaderBuilder()
229 .setRequestId(services.getSdncRequestHeader().getRequestId())
234 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
235 .ServiceDeleteInput createServiceDeleteInput(
236 ServiceRestorationInput serviceRestorationInput,
238 return new ServiceDeleteInputBuilder()
239 .setServiceName(serviceRestorationInput.getServiceName())
240 .setServiceHandlerHeader(
241 new ServiceHandlerHeaderBuilder()
242 .setRequestId(services.getSdncRequestHeader().getRequestId())
247 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915
248 .ServiceDeleteInput createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
249 String serviceName = serviceReconfigureInput.getServiceName();
250 return new ServiceDeleteInputBuilder()
251 .setServiceName(serviceName)
252 .setServiceHandlerHeader(
253 new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build())
257 public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) {
258 return new ServiceAEndBuilder()
259 .setClli(serviceAEnd.getClli())
260 .setNodeId(serviceAEnd.getNodeId().getValue())
261 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get()))
262 .setServiceFormat(serviceAEnd.getServiceFormat())
263 .setServiceRate(serviceAEnd.getServiceRate())
264 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get()))
268 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
269 .path.computation.reroute.request.input.ServiceAEnd createServiceAEndReroute(ServiceEndpoint serviceAEnd) {
270 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
271 .path.computation.reroute.request.input.ServiceAEndBuilder()
272 .setClli(serviceAEnd.getClli())
273 .setNodeId(serviceAEnd.getNodeId().getValue())
274 .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get()))
275 .setServiceFormat(serviceAEnd.getServiceFormat())
276 .setServiceRate(serviceAEnd.getServiceRate())
277 .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get()))
281 public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) {
282 return new ServiceZEndBuilder()
283 .setClli(serviceZEnd.getClli())
284 .setNodeId(serviceZEnd.getNodeId().getValue())
285 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get()))
286 .setServiceFormat(serviceZEnd.getServiceFormat())
287 .setServiceRate(serviceZEnd.getServiceRate())
288 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get()))
292 public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
293 .path.computation.reroute.request.input.ServiceZEnd createServiceZEndReroute(ServiceEndpoint serviceZEnd) {
294 return new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808
295 .path.computation.reroute.request.input.ServiceZEndBuilder()
296 .setClli(serviceZEnd.getClli())
297 .setNodeId(serviceZEnd.getNodeId().getValue())
298 .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get()))
299 .setServiceFormat(serviceZEnd.getServiceFormat())
300 .setServiceRate(serviceZEnd.getServiceRate())
301 .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get()))
305 public static RxDirection createRxDirection(
306 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
307 .service.endpoint.RxDirection rxDirection) {
308 return new RxDirectionBuilder().setPort(rxDirection.getPort()).build();
311 public static TxDirection createTxDirection(
312 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
313 .service.endpoint.TxDirection txDirection) {
314 return new TxDirectionBuilder().setPort(txDirection.getPort()).build();
317 public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(
318 ServiceDeleteInput input, String finalAck, String message, String responseCode) {
319 return RpcResultBuilder
321 new ServiceDeleteOutputBuilder()
322 .setConfigurationResponseCommon(
323 new ConfigurationResponseCommonBuilder()
324 .setAckFinalIndicator(finalAck)
325 .setResponseMessage(message)
326 .setResponseCode(responseCode)
328 input.getSdncRequestHeader() == null
330 : input.getSdncRequestHeader().getRequestId())
336 public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
337 TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
338 return RpcResultBuilder
340 new TempServiceDeleteOutputBuilder()
341 .setConfigurationResponseCommon(
342 new ConfigurationResponseCommonBuilder()
343 .setAckFinalIndicator(finalAck)
344 .setResponseMessage(message)
345 .setResponseCode(responseCode)
352 public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(
353 ServiceCreateInput input, String finalAck, String message, String responseCode) {
354 return RpcResultBuilder
356 new ServiceCreateOutputBuilder()
357 .setConfigurationResponseCommon(
358 new ConfigurationResponseCommonBuilder()
359 .setAckFinalIndicator(finalAck)
360 .setResponseMessage(message)
361 .setResponseCode(responseCode)
363 input.getSdncRequestHeader() == null
365 : input.getSdncRequestHeader().getRequestId())
367 .setResponseParameters(new ResponseParametersBuilder().build())
372 public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
373 TempServiceCreateInput input, String finalAck, String message, String responseCode) {
374 return RpcResultBuilder
376 new TempServiceCreateOutputBuilder()
377 .setConfigurationResponseCommon(
378 new ConfigurationResponseCommonBuilder()
379 .setAckFinalIndicator(finalAck)
380 .setResponseMessage(message)
381 .setResponseCode(responseCode)
383 input.getSdncRequestHeader() == null
385 : input.getSdncRequestHeader().getRequestId())
387 .setResponseParameters(new ResponseParametersBuilder().build())
392 public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
393 ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
394 return RpcResultBuilder
396 new ServiceFeasibilityCheckOutputBuilder()
397 .setConfigurationResponseCommon(
398 new ConfigurationResponseCommonBuilder()
399 .setAckFinalIndicator(finalAck)
400 .setResponseMessage(message)
401 .setResponseCode(responseCode)
403 input.getSdncRequestHeader() == null
405 : input.getSdncRequestHeader().getRequestId())
407 .setResponseParameters(new ResponseParametersBuilder().build())
412 public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
413 ServiceReconfigureInput input, String message) {
414 return RpcResultBuilder
416 new ServiceReconfigureOutputBuilder()
417 .setConfigurationResponseCommon(
418 new ConfigurationResponseCommonBuilder()
419 .setResponseMessage(message)
425 public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(
426 ServiceRerouteInput input, String finalAckYes, String message, String responseCode) {
427 return RpcResultBuilder
429 new ServiceRerouteOutputBuilder()
430 .setConfigurationResponseCommon(
431 new ConfigurationResponseCommonBuilder()
432 .setAckFinalIndicator(finalAckYes)
433 .setResponseCode(responseCode)
434 .setResponseMessage(message)
436 .setHardConstraints(null)
437 .setSoftConstraints(null)
442 public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message) {
443 return RpcResultBuilder
445 new ServiceRestorationOutputBuilder()
446 .setConfigurationResponseCommon(
447 new ConfigurationResponseCommonBuilder()
448 .setResponseMessage(message)
454 public static Services mappingServices(
455 ServiceCreateInput serviceCreateInput,
456 ServiceReconfigureInput serviceReconfigureInput) {
457 if (serviceCreateInput != null) {
458 return new ServicesBuilder()
459 .setServiceName(serviceCreateInput.getServiceName())
460 .setAdministrativeState(AdminStates.OutOfService)
461 .setOperationalState(State.OutOfService)
462 .setCommonId(serviceCreateInput.getCommonId())
463 .setConnectionType(serviceCreateInput.getConnectionType())
464 .setCustomer(serviceCreateInput.getCustomer())
465 .setCustomerContact(serviceCreateInput.getCustomerContact())
466 .setServiceResiliency(serviceCreateInput.getServiceResiliency())
467 .setHardConstraints(serviceCreateInput.getHardConstraints())
468 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
469 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
470 .setLifecycleState(LifecycleState.Planned)
472 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
473 .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd())
476 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
477 .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd())
481 if (serviceReconfigureInput != null) {
482 return new ServicesBuilder()
483 .setServiceName(serviceReconfigureInput.getServiceName())
484 .setAdministrativeState(AdminStates.OutOfService)
485 .setOperationalState(State.OutOfService)
486 .setCommonId(serviceReconfigureInput.getCommonId())
487 .setConnectionType(serviceReconfigureInput.getConnectionType())
488 .setCustomer(serviceReconfigureInput.getCustomer())
489 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
490 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
491 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
492 .setLifecycleState(LifecycleState.Planned)
494 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
495 .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd())
498 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
499 .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd())
503 //FIXME: Because of Silicon, we cannot have empty key.
504 //it's this case possible ? There is a Junit test covering null
505 //temporary workaround as now there is a null key check done by yangtools.
506 //Functional review is needed
507 LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null");
508 return new ServicesBuilder().withKey(new ServicesKey("unknown")).build();
511 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
512 .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) {
513 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
514 .temp.service.list.ServicesBuilder()
515 .setServiceName(tempServiceCreateInput.getCommonId())
516 .setAdministrativeState(AdminStates.OutOfService)
517 .setOperationalState(State.OutOfService)
518 .setCommonId(tempServiceCreateInput.getCommonId())
519 .setConnectionType(tempServiceCreateInput.getConnectionType())
520 .setCustomer(tempServiceCreateInput.getCustomer())
521 .setCustomerContact(tempServiceCreateInput.getCustomerContact())
522 .setHardConstraints(tempServiceCreateInput.getHardConstraints())
523 .setSoftConstraints(tempServiceCreateInput.getSoftConstraints())
524 .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader())
525 .setLifecycleState(LifecycleState.Planned)
527 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
528 .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build())
530 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210
531 .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build())
535 public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
536 if (serviceInput == null) {
537 //FIXME: Because of Silicon, we cannot have empty key.
538 //it's this case possible ? There is a Junit test covering null
539 //temporary workaround as now there is a null key check done by yangtools.
540 //Functional review is needed
541 LOG.warn("ServiceInput is null");
542 return new ServicePathsBuilder().withKey(new ServicePathsKey("unknown")).build();
545 ServicePathsBuilder servicePathBuilder =
546 new ServicePathsBuilder()
548 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
549 .service.path.ServiceAEndBuilder()
550 .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
551 .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
552 .setClli(serviceInput.getServiceAEnd().getClli())
553 .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue())
555 new org.opendaylight.yang.gen.v1
556 .http.org.transportpce.b.c._interface.service.types.rev220118
557 .service.endpoint.sp.TxDirectionBuilder()
559 serviceInput.getServiceAEnd().getTxDirection()
560 .values().stream().findFirst().get().getPort())
563 new org.opendaylight.yang.gen.v1
564 .http.org.transportpce.b.c._interface.service.types.rev220118
565 .service.endpoint.sp.RxDirectionBuilder()
567 serviceInput.getServiceAEnd().getRxDirection()
568 .values().stream().findFirst().get().getPort())
572 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
573 .service.path.ServiceZEndBuilder()
574 .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
575 .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
576 .setClli(serviceInput.getServiceZEnd().getClli())
577 .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue())
579 new org.opendaylight.yang.gen.v1
580 .http.org.transportpce.b.c._interface.service.types.rev220118
581 .service.endpoint.sp.TxDirectionBuilder()
583 serviceInput.getServiceZEnd().getTxDirection()
584 .values().stream().findFirst().get().getPort())
587 new org.opendaylight.yang.gen.v1
588 .http.org.transportpce.b.c._interface.service.types.rev220118
589 .service.endpoint.sp.RxDirectionBuilder()
591 serviceInput.getServiceZEnd().getRxDirection()
592 .values().stream().findFirst().get().getPort())
595 .setServicePathName(serviceInput.getServiceName())
596 .setServiceHandlerHeader(
597 new ServiceHandlerHeaderBuilder()
598 .setRequestId(serviceInput.getSdncRequestHeader()
601 if (serviceInput.getHardConstraints() != null) {
602 servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints());
604 if (serviceInput.getSoftConstraints() != null) {
605 servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints());
608 if (output.getResponseParameters().getPathDescription() != null) {
609 servicePathBuilder.setPathDescription(
610 new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build());
612 return servicePathBuilder.build();
616 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
617 value = "PZLA_PREFER_ZERO_LENGTH_ARRAYS",
618 justification = "not relevant to return and zero length array as we need real pos")
619 public static int[] findTheLongestSubstring(String s1, String s2) {
620 if ((s1 == null) || (s2 == null)) {
623 int[][] dp = new int[s1.length() + 1][s2.length() + 1];
626 for (int i = 1; i < dp.length; i++) {
627 for (int j = 1; j < dp[0].length; j++) {
628 char ch1 = s1.charAt(i - 1);
629 char ch2 = s2.charAt(j - 1);
631 dp[i][j] = dp[i - 1][j - 1] + 1;
632 if (dp[i][j] >= maxLen) {
639 return new int[] { endPos - maxLen, endPos };
642 public static ListenableFuture<RpcResult<AddOpenroadmOperationalModesToCatalogOutput>>
643 addOpenroadmServiceReply(AddOpenroadmOperationalModesToCatalogInput input, String finalAck,
644 String message,String responseCode) {
645 return RpcResultBuilder
647 new AddOpenroadmOperationalModesToCatalogOutputBuilder()
648 .setConfigurationResponseCommon(
649 new ConfigurationResponseCommonBuilder()
650 .setAckFinalIndicator(finalAck)
651 .setResponseMessage(message)
652 .setResponseCode(responseCode)
654 input.getSdncRequestHeader() == null
656 : input.getSdncRequestHeader().getRequestId())
662 public static ListenableFuture<RpcResult<AddSpecificOperationalModesToCatalogOutput>>
663 addSpecificOpenroadmServiceReply(AddSpecificOperationalModesToCatalogInput input, String finalAck,
664 String message,String responseCode) {
665 return RpcResultBuilder
667 new AddSpecificOperationalModesToCatalogOutputBuilder()
668 .setConfigurationResponseCommon(
669 new ConfigurationResponseCommonBuilder()
670 .setAckFinalIndicator(finalAck)
671 .setResponseMessage(message)
672 .setResponseCode(responseCode)
674 input.getSdncRequestHeader() == null
676 : input.getSdncRequestHeader().getRequestId())