Merge "Bump transportpce-models upstream dependency"
[transportpce.git] / servicehandler / src / test / java / org / opendaylight / transportpce / servicehandler / utils / ServiceDataUtils.java
1 /*
2  * Copyright © 2018 Orange, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.servicehandler.utils;
9
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;
16 import java.util.Map;
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;
75
76 public final class ServiceDataUtils {
77
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())
85             .setServiceZEnd(
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()))
92                     .build())
93             .setSdncRequestHeader(
94                 new SdncRequestHeaderBuilder()
95                     .setRequestId("request 1")
96                     .setRpcAction(RpcActions.ServiceCreate)
97                     .setNotificationUrl("notification url")
98                     .build())
99             .build();
100     }
101
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())
109             .setServiceZEnd(
110                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
111                         .service.create.input.ServiceZEndBuilder()
112                     .setClli("clli")
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()))
118                     .build())
119             .setSdncRequestHeader(
120                 new SdncRequestHeaderBuilder()
121                     .setRequestId("request 1")
122                     .setRpcAction(RpcActions.ServiceCreate)
123                     .setNotificationUrl("notification url")
124                     .build())
125             .setHardConstraints(new HardConstraintsBuilder().build())
126             .build();
127     }
128
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())
136             .setServiceZEnd(
137                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
138                         .service.create.input.ServiceZEndBuilder()
139                     .setClli("clli")
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()))
145                     .build())
146             .setSdncRequestHeader(
147                 new SdncRequestHeaderBuilder()
148                     .setRequestId("request 1")
149                     .setRpcAction(RpcActions.ServiceCreate)
150                     .setNotificationUrl("notification url")
151                     .build())
152             .setSoftConstraints(new SoftConstraintsBuilder().build())
153             .build();
154     }
155
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()))
170             .build();
171     }
172
173     public static TempServiceCreateInput buildTempServiceCreateInput() {
174         return new TempServiceCreateInputBuilder()
175             .setCommonId("commonId")
176             .setConnectionType(ConnectionType.Service)
177             .setCustomer("Customer")
178             .setServiceAEnd(
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()))
185                     .build())
186             .setServiceZEnd(
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()))
193                     .build())
194             .setSdncRequestHeader(
195                 new SdncRequestHeaderBuilder()
196                     .setRequestId("request 1")
197                     .setRpcAction(RpcActions.TempServiceCreate)
198                     .setNotificationUrl("notification url")
199                     .build())
200             .build();
201     }
202
203     public static ServiceFeasibilityCheckInput buildServiceFeasibilityCheckInput() {
204         return new ServiceFeasibilityCheckInputBuilder()
205             .setCommonId("commonId")
206             .setConnectionType(ConnectionType.Service)
207             .setCustomer("Customer")
208             .setServiceAEnd(
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()))
214                     .build())
215             .setServiceZEnd(
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()))
221                     .build())
222             .setSdncRequestHeader(
223                 new SdncRequestHeaderBuilder()
224                     .setRequestId("request 1")
225                     .setRpcAction(RpcActions.ServiceFeasibilityCheck)
226                     .setNotificationUrl("notification url")
227                     .build())
228             .build();
229     }
230
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()
235             .setClli("clli")
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()));
241     }
242
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()
247             .setClli("clli")
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()));
253     }
254
255     private static TxDirection getTxDirection() {
256         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
257                 .service.endpoint.TxDirectionBuilder()
258             .setPort(
259                 new PortBuilder()
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")
267                     .build())
268             .setLgx(
269                 new LgxBuilder()
270                     .setLgxDeviceName("lgx device name")
271                     .setLgxPortName("lgx port name")
272                     .setLgxPortRack("lgx port rack")
273                     .setLgxPortShelf("lgx port shelf")
274                     .build())
275             .setIndex(Uint8.ZERO)
276             .build();
277     }
278
279     private static RxDirection getRxDirection() {
280         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526
281                 .service.endpoint.RxDirectionBuilder()
282             .setPort(
283                 new PortBuilder()
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")
291                     .build())
292             .setLgx(
293                 new LgxBuilder()
294                     .setLgxDeviceName("lgx device name")
295                     .setLgxPortName("lgx port name")
296                     .setLgxPortRack("lgx port rack")
297                     .setLgxPortShelf("lgx port shelf")
298                     .build())
299             .setIndex(Uint8.ZERO)
300             .build();
301     }
302
303     public static ServiceDeleteInput buildServiceDeleteInput() {
304         return new ServiceDeleteInputBuilder()
305             .setServiceDeleteReqInfo(
306                 new ServiceDeleteReqInfoBuilder().setServiceName("service 1")
307                     .setDueDate(
308                         new DateAndTime(
309                             DateTimeFormatter
310                                 .ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx")
311                                 .format(OffsetDateTime.now(ZoneOffset.UTC))))
312                     .setTailRetention(ServiceDeleteReqInfo.TailRetention.No)
313                     .build())
314             .setSdncRequestHeader(
315                 new SdncRequestHeaderBuilder()
316                     .setNotificationUrl("notification url")
317                     .setRequestId("request 1")
318                     .setRequestSystemId("request system 1")
319                     .setRpcAction(RpcActions.ServiceDelete)
320                     .build())
321             .build();
322     }
323
324     public static TempServiceDeleteInput buildTempServiceDeleteInput() {
325         return new TempServiceDeleteInputBuilder().setCommonId("service 1").build();
326     }
327
328     public static TempServiceDeleteInput buildTempServiceDeleteInput(String commonId) {
329         return new TempServiceDeleteInputBuilder().setCommonId(commonId).build();
330     }
331
332     public static ServiceRerouteInput buildServiceRerouteInput() {
333         return new ServiceRerouteInputBuilder().setServiceName("service 1").build();
334     }
335
336     public static ServiceRestorationInput buildServiceRestorationInput() {
337         return new ServiceRestorationInputBuilder()
338             .setServiceName("service 1")
339             .setOption(Option.Permanent)
340             .build();
341     }
342
343     public static ServiceReconfigureInput buildServiceReconfigureInput() {
344         return new ServiceReconfigureInputBuilder()
345             .setCommonId("commonId")
346             .setConnectionType(ConnectionType.Service)
347             .setCustomer("Customer")
348             .setServiceName("service 1")
349             .setServiceAEnd(
350                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
351                         .service.reconfigure.input.ServiceAEndBuilder()
352                     .setClli("clli")
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()))
358                     .build())
359             .setServiceZEnd(
360                 new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
361                         .service.reconfigure.input.ServiceZEndBuilder()
362                     .setClli("clli")
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()))
368                     .build())
369             .build();
370     }
371
372     public static ServicePathRpcResult buildServicePathRpcResult() {
373         return new ServicePathRpcResultBuilder()
374             .setActualDate(
375                 new DateAndTime(
376                     DateTimeFormatter
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")
383             .build();
384     }
385
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));
396         }
397         return builder.build();
398     }
399
400     public static ServicePathRpcResult buildFailedPceServicePathRpcResult() {
401         return new ServicePathRpcResultBuilder()
402             .setActualDate(
403                 new DateAndTime(
404                     DateTimeFormatter
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")
411         .build();
412     }
413
414     public static ServicePathRpcResult buildFailedServicePathRpcResult() {
415         return new ServicePathRpcResultBuilder()
416             .setActualDate(
417                 new DateAndTime(
418                     DateTimeFormatter
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")
426             .build();
427     }
428
429     public static RendererRpcResultSp buildRendererRpcResultSp() {
430         return new RendererRpcResultSpBuilder()
431             .setActualDate(
432                 new DateAndTime(
433                     DateTimeFormatter
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")
440             .build();
441     }
442
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)
451             .build();
452     }
453
454     public static ServiceRpcResultSh buildServiceRpcResultSh(
455             ServiceNotificationTypes serviceNotificationTypes,
456             String serviceName,
457             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118
458                 .RpcStatusEx rpcStatusEx,
459             String message) {
460         return new ServiceRpcResultShBuilder()
461             .setNotificationType(serviceNotificationTypes)
462             .setServiceName(serviceName)
463             .setStatus(rpcStatusEx)
464             .setStatusMessage(message)
465             .build();
466     }
467
468     public static RendererRpcResultSp buildFailedRendererRpcResultSp() {
469         return new RendererRpcResultSpBuilder()
470             .setActualDate(
471                 new DateAndTime(
472                     DateTimeFormatter
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")
479             .build();
480     }
481
482     public static PathDescription createPathDescription(
483             long azRate, long azWaveLength, long zaRate, long zaWaveLength) {
484         return new PathDescriptionBuilder()
485             .setAToZDirection(
486                 new AToZDirectionBuilder()
487                     .setRate(Uint32.valueOf(azRate))
488                     .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
489                     .build())
490             .setZToADirection(
491                 new ZToADirectionBuilder()
492                     .setRate(Uint32.valueOf(zaRate))
493                     .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
494                     .build())
495             .build();
496     }
497
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()
502             .setClli("clli")
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()));
508     }
509
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()
514             .setClli("clli")
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()));
520     }
521
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>() {
526             @Override
527             public T call() throws Exception {
528                 return output;
529             }
530         });
531     }
532
533     private ServiceDataUtils() {
534     }
535
536 }