2 * Copyright © 2018 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.servicehandler.utils;
10 import com.google.common.util.concurrent.ListenableFuture;
11 import com.google.common.util.concurrent.ListeningExecutorService;
12 import com.google.common.util.concurrent.MoreExecutors;
13 import java.time.OffsetDateTime;
14 import java.time.ZoneOffset;
15 import java.time.format.DateTimeFormatter;
17 import java.util.concurrent.Callable;
18 import java.util.concurrent.Executors;
19 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResult;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.ServicePathRpcResultBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescription;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.service.path.rpc.result.PathDescriptionBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSp;
27 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.RendererRpcResultSpBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultSh;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev201125.ServiceRpcResultShBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ConnectionType;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.RpcActions;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.ServiceNotificationTypes;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.sdnc.request.header.SdncRequestHeader;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.sdnc.request.header.SdncRequestHeaderBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.RxDirection;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.RxDirectionKey;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirection;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.endpoint.TxDirectionKey;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.lgx.LgxBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.service.port.PortBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.routing.constraints.HardConstraintsBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev221209.routing.constraints.SoftConstraintsBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev191129.ServiceFormat;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInputBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInput;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInputBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckInput;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceFeasibilityCheckInputBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInput;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceReconfigureInputBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInput;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRerouteInputBuilder;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInput;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInput.Option;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceRestorationInputBuilder;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInputBuilder;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInput;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceDeleteInputBuilder;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.feasibility.check.inputs.ServiceAEndBuilder;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.feasibility.check.inputs.ServiceZEndBuilder;
66 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder;
67 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder;
68 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.PceMetric;
69 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx;
70 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.ServicePathNotificationTypes;
71 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
72 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
73 import org.opendaylight.yangtools.yang.common.Uint32;
74 import org.opendaylight.yangtools.yang.common.Uint8;
76 public final class ServiceDataUtils {
78 public static ServiceCreateInput buildServiceCreateInput() {
79 return new ServiceCreateInputBuilder()
80 .setCommonId("commonId")
81 .setConnectionType(ConnectionType.Service)
82 .setCustomer("Customer")
83 .setServiceName("service 1")
84 .setServiceAEnd(getServiceAEndBuild().build())
86 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
87 .service.create.input.ServiceZEndBuilder()
88 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
89 .setNodeId(new NodeIdType("XPONDER-3-2"))
90 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
91 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
93 .setSdncRequestHeader(
94 new SdncRequestHeaderBuilder()
95 .setRequestId("request 1")
96 .setRpcAction(RpcActions.ServiceCreate)
97 .setNotificationUrl("notification url")
102 public static ServiceCreateInput buildServiceCreateInputWithHardConstraints() {
103 return new ServiceCreateInputBuilder()
104 .setCommonId("commonId")
105 .setConnectionType(ConnectionType.Service)
106 .setCustomer("Customer")
107 .setServiceName("service 1")
108 .setServiceAEnd(getServiceAEndBuild().build())
110 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
111 .service.create.input.ServiceZEndBuilder()
113 .setServiceFormat(ServiceFormat.OC)
114 .setServiceRate(Uint32.valueOf(1))
115 .setNodeId(new NodeIdType("XPONDER-3-2"))
116 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
117 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
119 .setSdncRequestHeader(
120 new SdncRequestHeaderBuilder()
121 .setRequestId("request 1")
122 .setRpcAction(RpcActions.ServiceCreate)
123 .setNotificationUrl("notification url")
125 .setHardConstraints(new HardConstraintsBuilder().build())
129 public static ServiceCreateInput buildServiceCreateInputWithSoftConstraints() {
130 return new ServiceCreateInputBuilder()
131 .setCommonId("commonId")
132 .setConnectionType(ConnectionType.Service)
133 .setCustomer("Customer")
134 .setServiceName("service 1")
135 .setServiceAEnd(getServiceAEndBuild().build())
137 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
138 .service.create.input.ServiceZEndBuilder()
140 .setServiceFormat(ServiceFormat.OC)
141 .setServiceRate(Uint32.valueOf(1))
142 .setNodeId(new NodeIdType("XPONDER-3-2"))
143 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
144 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
146 .setSdncRequestHeader(
147 new SdncRequestHeaderBuilder()
148 .setRequestId("request 1")
149 .setRpcAction(RpcActions.ServiceCreate)
150 .setNotificationUrl("notification url")
152 .setSoftConstraints(new SoftConstraintsBuilder().build())
156 public static PathComputationRequestInput createPceRequestInput(ServiceCreateInput input) {
157 SdncRequestHeader serviceHandler = input.getSdncRequestHeader();
158 return new PathComputationRequestInputBuilder()
159 .setServiceName(input.getServiceName())
160 .setResourceReserve(true)
161 .setServiceHandlerHeader(
162 serviceHandler == null
163 ? new ServiceHandlerHeaderBuilder().build()
164 : new ServiceHandlerHeaderBuilder().setRequestId(serviceHandler.getRequestId()).build())
165 .setHardConstraints(input.getHardConstraints())
166 .setSoftConstraints(input.getSoftConstraints())
167 .setPceRoutingMetric(PceMetric.TEMetric)
168 .setServiceAEnd(ModelMappingUtils.createServiceAEnd(input.getServiceAEnd()))
169 .setServiceZEnd(ModelMappingUtils.createServiceZEnd(input.getServiceZEnd()))
173 public static TempServiceCreateInput buildTempServiceCreateInput() {
174 return new TempServiceCreateInputBuilder()
175 .setCommonId("commonId")
176 .setConnectionType(ConnectionType.Service)
177 .setCustomer("Customer")
179 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
180 .temp.service.create.input.ServiceAEndBuilder()
181 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
182 .setNodeId(new NodeIdType("XPONDER-1-2"))
183 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
184 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
187 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
188 .temp.service.create.input.ServiceZEndBuilder()
189 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
190 .setNodeId(new NodeIdType("XPONDER-3-2"))
191 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
192 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
194 .setSdncRequestHeader(
195 new SdncRequestHeaderBuilder()
196 .setRequestId("request 1")
197 .setRpcAction(RpcActions.TempServiceCreate)
198 .setNotificationUrl("notification url")
203 public static ServiceFeasibilityCheckInput buildServiceFeasibilityCheckInput() {
204 return new ServiceFeasibilityCheckInputBuilder()
205 .setCommonId("commonId")
206 .setConnectionType(ConnectionType.Service)
207 .setCustomer("Customer")
209 new ServiceAEndBuilder()
210 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
211 .setNodeId(new NodeIdType("XPONDER-1-2"))
212 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
213 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
216 new ServiceZEndBuilder()
217 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
218 .setNodeId(new NodeIdType("XPONDER-3-2"))
219 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
220 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
222 .setSdncRequestHeader(
223 new SdncRequestHeaderBuilder()
224 .setRequestId("request 1")
225 .setRpcAction(RpcActions.ServiceFeasibilityCheck)
226 .setNotificationUrl("notification url")
231 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
232 .service.create.input.ServiceAEndBuilder getServiceAEndBuild() {
233 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
234 .service.create.input.ServiceAEndBuilder()
236 .setServiceFormat(ServiceFormat.OC)
237 .setServiceRate(Uint32.valueOf(1))
238 .setNodeId(new NodeIdType("XPONDER-1-2"))
239 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
240 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()));
243 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
244 .service.create.input.ServiceZEndBuilder getServiceZEndBuild() {
245 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
246 .service.create.input.ServiceZEndBuilder()
248 .setServiceFormat(ServiceFormat.OC)
249 .setServiceRate(Uint32.valueOf(1))
250 .setNodeId(new NodeIdType("XPONDER-1-2"))
251 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
252 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()));
255 private static TxDirection getTxDirection() {
256 return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
257 .service.endpoint.TxDirectionBuilder()
260 .setPortDeviceName("device name")
261 .setPortName("port name")
262 .setPortRack("port rack")
263 .setPortShelf("port shelf")
264 .setPortSlot("port slot")
265 .setPortSubSlot("port subslot")
266 .setPortType("port type")
270 .setLgxDeviceName("lgx device name")
271 .setLgxPortName("lgx port name")
272 .setLgxPortRack("lgx port rack")
273 .setLgxPortShelf("lgx port shelf")
275 .setIndex(Uint8.ZERO)
279 private static RxDirection getRxDirection() {
280 return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
281 .service.endpoint.RxDirectionBuilder()
284 .setPortDeviceName("device name")
285 .setPortName("port name")
286 .setPortRack("port rack")
287 .setPortShelf("port shelf")
288 .setPortSlot("port slot")
289 .setPortSubSlot("port subslot")
290 .setPortType("port type")
294 .setLgxDeviceName("lgx device name")
295 .setLgxPortName("lgx port name")
296 .setLgxPortRack("lgx port rack")
297 .setLgxPortShelf("lgx port shelf")
299 .setIndex(Uint8.ZERO)
303 public static ServiceDeleteInput buildServiceDeleteInput() {
304 return new ServiceDeleteInputBuilder()
305 .setServiceDeleteReqInfo(
306 new ServiceDeleteReqInfoBuilder().setServiceName("service 1")
310 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
311 .format(OffsetDateTime.now(ZoneOffset.UTC))))
312 .setTailRetention(ServiceDeleteReqInfo.TailRetention.No)
314 .setSdncRequestHeader(
315 new SdncRequestHeaderBuilder()
316 .setNotificationUrl("notification url")
317 .setRequestId("request 1")
318 .setRequestSystemId("request system 1")
319 .setRpcAction(RpcActions.ServiceDelete)
324 public static TempServiceDeleteInput buildTempServiceDeleteInput() {
325 return new TempServiceDeleteInputBuilder().setCommonId("service 1").build();
328 public static TempServiceDeleteInput buildTempServiceDeleteInput(String commonId) {
329 return new TempServiceDeleteInputBuilder().setCommonId(commonId).build();
332 public static ServiceRerouteInput buildServiceRerouteInput() {
333 return new ServiceRerouteInputBuilder().setServiceName("service 1").build();
336 public static ServiceRestorationInput buildServiceRestorationInput() {
337 return new ServiceRestorationInputBuilder()
338 .setServiceName("service 1")
339 .setOption(Option.Permanent)
343 public static ServiceReconfigureInput buildServiceReconfigureInput() {
344 return new ServiceReconfigureInputBuilder()
345 .setCommonId("commonId")
346 .setConnectionType(ConnectionType.Service)
347 .setCustomer("Customer")
348 .setServiceName("service 1")
350 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
351 .service.reconfigure.input.ServiceAEndBuilder()
353 .setServiceFormat(ServiceFormat.OC)
354 .setServiceRate(Uint32.valueOf(1))
355 .setNodeId(new NodeIdType("XPONDER-1-2"))
356 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
357 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
360 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
361 .service.reconfigure.input.ServiceZEndBuilder()
363 .setServiceFormat(ServiceFormat.OC)
364 .setServiceRate(Uint32.valueOf(1))
365 .setNodeId(new NodeIdType("XPONDER-3-2"))
366 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
367 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()))
372 public static ServicePathRpcResult buildServicePathRpcResult() {
373 return new ServicePathRpcResultBuilder()
377 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
378 .format(OffsetDateTime.now(ZoneOffset.UTC))))
379 .setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
380 .setPathDescription(createPathDescription(0,1, 0, 1))
381 .setServiceName("service 1")
382 .setStatus(RpcStatusEx.Successful).setStatusMessage("success")
386 public static ServicePathRpcResult buildServicePathRpcResult(
387 ServicePathNotificationTypes servicePathNotificationTypes, String serviceName, RpcStatusEx rpcStatusEx,
388 String message, Boolean pathDescription) {
389 ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder()
390 .setNotificationType(servicePathNotificationTypes)
391 .setServiceName(serviceName)
392 .setStatus(rpcStatusEx)
393 .setStatusMessage(message);
394 if (pathDescription) {
395 builder.setPathDescription(createPathDescription(0L, 5L, 0L, 5L));
397 return builder.build();
400 public static ServicePathRpcResult buildFailedPceServicePathRpcResult() {
401 return new ServicePathRpcResultBuilder()
405 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
406 .format(OffsetDateTime.now(ZoneOffset.UTC))))
407 .setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
408 .setPathDescription(createPathDescription(0, 1, 0, 1))
409 .setServiceName("service 1")
410 .setStatus(RpcStatusEx.Failed).setStatusMessage("failed")
414 public static ServicePathRpcResult buildFailedServicePathRpcResult() {
415 return new ServicePathRpcResultBuilder()
419 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
420 .format(OffsetDateTime.now(ZoneOffset.UTC))))
421 .setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
422 .setPathDescription(createPathDescription(0,1, 0, 1))
423 .setServiceName("service 1")
424 .setStatus(RpcStatusEx.Failed)
425 .setStatusMessage("failed")
429 public static RendererRpcResultSp buildRendererRpcResultSp() {
430 return new RendererRpcResultSpBuilder()
434 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
435 .format(OffsetDateTime.now(ZoneOffset.UTC))))
436 .setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
437 .setServiceName("service 1")
438 .setStatus(RpcStatusEx.Successful)
439 .setStatusMessage("success")
443 public static RendererRpcResultSp buildRendererRpcResultSp(
444 ServicePathNotificationTypes servicePathNotificationTypes,
445 String serviceName, RpcStatusEx rpcStatusEx, String message) {
446 return new RendererRpcResultSpBuilder()
447 .setNotificationType(servicePathNotificationTypes)
448 .setServiceName(serviceName)
449 .setStatus(rpcStatusEx)
450 .setStatusMessage(message)
454 public static ServiceRpcResultSh buildServiceRpcResultSh(
455 ServiceNotificationTypes serviceNotificationTypes,
457 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
458 .RpcStatusEx rpcStatusEx,
460 return new ServiceRpcResultShBuilder()
461 .setNotificationType(serviceNotificationTypes)
462 .setServiceName(serviceName)
463 .setStatus(rpcStatusEx)
464 .setStatusMessage(message)
468 public static RendererRpcResultSp buildFailedRendererRpcResultSp() {
469 return new RendererRpcResultSpBuilder()
473 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
474 .format(OffsetDateTime.now(ZoneOffset.UTC))))
475 .setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
476 .setServiceName("service 1")
477 .setStatus(RpcStatusEx.Failed)
478 .setStatusMessage("failed")
482 public static PathDescription createPathDescription(
483 long azRate, long azWaveLength, long zaRate, long zaWaveLength) {
484 return new PathDescriptionBuilder()
486 new AToZDirectionBuilder()
487 .setRate(Uint32.valueOf(azRate))
488 .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
491 new ZToADirectionBuilder()
492 .setRate(Uint32.valueOf(zaRate))
493 .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
498 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
499 .service.reconfigure.input.ServiceAEndBuilder getServiceAEndBuildReconfigure() {
500 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
501 .service.reconfigure.input.ServiceAEndBuilder()
503 .setServiceFormat(ServiceFormat.OC)
504 .setServiceRate(Uint32.valueOf(1))
505 .setNodeId(new NodeIdType("XPONDER-1-2"))
506 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
507 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()));
510 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
511 .service.reconfigure.input.ServiceZEndBuilder getServiceZEndBuildReconfigure() {
512 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
513 .service.reconfigure.input.ServiceZEndBuilder()
515 .setServiceFormat(ServiceFormat.OC)
516 .setServiceRate(Uint32.valueOf(1))
517 .setNodeId(new NodeIdType("XPONDER-1-2"))
518 .setTxDirection(Map.of(new TxDirectionKey(getTxDirection().key()),getTxDirection()))
519 .setRxDirection(Map.of(new RxDirectionKey(getRxDirection().key()), getRxDirection()));
522 public static <T> ListenableFuture<T> returnFuture(T output) {
523 final ListeningExecutorService executor =
524 MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
525 return executor.submit(new Callable<T>() {
527 public T call() throws Exception {
533 private ServiceDataUtils() {