Technical debt - fix SH deprecated warnings
[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.concurrent.Callable;
17 import java.util.concurrent.Executors;
18 import org.opendaylight.transportpce.servicehandler.MappingConstraints;
19 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.ServicePathRpcResult;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.ServicePathRpcResultBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescription;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.service.path.rpc.result.PathDescriptionBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev200520.ServiceRpcResultSp;
27 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev200520.ServiceRpcResultSpBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev171017.ServiceRpcResultSh;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev171017.ServiceRpcResultShBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceNotificationTypes;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeader;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeaderBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.endpoint.RxDirection;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.endpoint.TxDirection;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.lgx.LgxBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev190329.routing.constraints.HardConstraintsBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains.rev190329.routing.constraints.SoftConstraintsBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInputBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceDeleteInput;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceDeleteInputBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceFeasibilityCheckInput;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceFeasibilityCheckInputBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceReconfigureInput;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceReconfigureInputBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceRerouteInput;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceRerouteInputBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceRestorationInput;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceRestorationInput.Option;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceRestorationInputBuilder;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInput;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInputBuilder;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceDeleteInput;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceDeleteInputBuilder;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.delete.input.ServiceDeleteReqInfo;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.delete.input.ServiceDeleteReqInfoBuilder;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceAEnd;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceAEndBuilder;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceZEnd;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.feasibility.check.inputs.ServiceZEndBuilder;
66 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirection;
67 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirectionBuilder;
68 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirection;
69 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirectionBuilder;
70 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
71 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx;
72 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.ServicePathNotificationTypes;
73 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder;
74 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
75 import org.opendaylight.yangtools.yang.common.Uint32;
76
77 public final class ServiceDataUtils {
78
79     public static ServiceCreateInput buildServiceCreateInput() {
80
81         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
82             .ServiceAEnd serviceAEnd = getServiceAEndBuild()
83             .build();
84         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
85             .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service
86             .create.input.ServiceZEndBuilder()
87             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
88             .setNodeId(new NodeIdType("XPONDER-3-2"))
89             .setTxDirection(getTxDirection())
90             .setRxDirection(getRxDirection())
91             .build();
92
93         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder()
94             .setCommonId("commonId")
95             .setConnectionType(ConnectionType.Service)
96             .setCustomer("Customer")
97             .setServiceName("service 1")
98             .setServiceAEnd(serviceAEnd)
99             .setServiceZEnd(serviceZEnd)
100             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
101                 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build());
102
103         return builtInput.build();
104     }
105
106     public static ServiceCreateInput buildServiceCreateInputWithHardConstraints() {
107
108         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
109                 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
110                 .build();
111         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
112                 .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service
113                 .create.input.ServiceZEndBuilder()
114                 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
115                 .setNodeId(new NodeIdType("XPONDER-3-2"))
116                 .setTxDirection(getTxDirection())
117                 .setRxDirection(getRxDirection())
118                 .build();
119
120         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder()
121             .setCommonId("commonId")
122             .setConnectionType(ConnectionType.Service)
123             .setCustomer("Customer")
124             .setServiceName("service 1")
125             .setServiceAEnd(serviceAEnd)
126             .setServiceZEnd(serviceZEnd)
127             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
128                 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build())
129             .setHardConstraints(new HardConstraintsBuilder().build());
130
131         return builtInput.build();
132     }
133
134     public static ServiceCreateInput buildServiceCreateInputWithSoftConstraints() {
135
136         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
137                 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
138                 .build();
139         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
140                 .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service
141                 .create.input.ServiceZEndBuilder()
142                 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
143                 .setNodeId(new NodeIdType("XPONDER-3-2"))
144                 .setTxDirection(getTxDirection())
145                 .setRxDirection(getRxDirection())
146                 .build();
147
148         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder()
149             .setCommonId("commonId")
150             .setConnectionType(ConnectionType.Service)
151             .setCustomer("Customer")
152             .setServiceName("service 1")
153             .setServiceAEnd(serviceAEnd)
154             .setServiceZEnd(serviceZEnd)
155             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
156                 .setRpcAction(RpcActions.ServiceCreate).setNotificationUrl("notification url").build())
157             .setSoftConstraints(new SoftConstraintsBuilder().build());
158
159         return builtInput.build();
160     }
161
162     public static PathComputationRequestInput createPceRequestInput(ServiceCreateInput input) {
163         MappingConstraints mappingConstraints =
164                 new MappingConstraints(input.getHardConstraints(), input.getSoftConstraints());
165         mappingConstraints.serviceToServicePathConstarints();
166         ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
167         SdncRequestHeader serviceHandler = input.getSdncRequestHeader();
168         if (serviceHandler != null) {
169             serviceHandlerHeader.setRequestId(serviceHandler.getRequestId());
170         }
171         return new PathComputationRequestInputBuilder()
172             .setServiceName(input.getServiceName())
173             .setResourceReserve(true)
174             .setServiceHandlerHeader(serviceHandlerHeader.build())
175             .setHardConstraints(mappingConstraints.getServicePathHardConstraints())
176             .setSoftConstraints(mappingConstraints.getServicePathSoftConstraints())
177             .setPceMetric(PceMetric.TEMetric)
178             .setServiceAEnd(ModelMappingUtils.createServiceAEnd(input.getServiceAEnd()))
179             .setServiceZEnd(ModelMappingUtils.createServiceZEnd(input.getServiceZEnd()))
180             .build();
181     }
182
183     public static TempServiceCreateInput buildTempServiceCreateInput() {
184
185         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.create.input
186             .ServiceAEnd serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
187             .temp.service.create.input.ServiceAEndBuilder()
188             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
189             .setNodeId(new NodeIdType("XPONDER-1-2"))
190             .setTxDirection(getTxDirection())
191             .setRxDirection(getRxDirection())
192             .build();
193         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.create.input
194             .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
195             .service.create.input.ServiceZEndBuilder()
196             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
197             .setNodeId(new NodeIdType("XPONDER-3-2"))
198             .setTxDirection(getTxDirection())
199             .setRxDirection(getRxDirection())
200             .build();
201
202         TempServiceCreateInputBuilder builtInput = new TempServiceCreateInputBuilder()
203             .setCommonId("commonId")
204             .setConnectionType(ConnectionType.Service)
205             .setCustomer("Customer")
206             .setServiceAEnd(serviceAEnd)
207             .setServiceZEnd(serviceZEnd)
208             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
209                 .setRpcAction(RpcActions.TempServiceCreate).setNotificationUrl("notification url").build());
210
211         return builtInput.build();
212     }
213
214     public static ServiceFeasibilityCheckInput buildServiceFeasibilityCheckInput() {
215
216         ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
217                     .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
218                     .setNodeId(new NodeIdType("XPONDER-1-2"))
219                     .setTxDirection(getTxDirection()).setRxDirection(getRxDirection()).build();
220         ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
221                     .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
222                     .setNodeId(new NodeIdType("XPONDER-3-2"))
223                     .setTxDirection(getTxDirection()).setRxDirection(getRxDirection()).build();
224
225         ServiceFeasibilityCheckInputBuilder builtInput = new ServiceFeasibilityCheckInputBuilder()
226             .setCommonId("commonId")
227             .setConnectionType(ConnectionType.Service)
228             .setCustomer("Customer")
229             .setServiceAEnd(serviceAEnd)
230             .setServiceZEnd(serviceZEnd)
231             .setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
232                 .setRpcAction(RpcActions.ServiceFeasibilityCheck).setNotificationUrl("notification url").build());
233         return builtInput.build();
234     }
235
236     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
237         .ServiceAEndBuilder getServiceAEndBuild() {
238         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
239             .ServiceAEndBuilder()
240             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
241             .setNodeId(new NodeIdType("XPONDER-1-2"))
242             .setTxDirection(getTxDirection())
243             .setRxDirection(getRxDirection());
244     }
245
246     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
247         .ServiceZEndBuilder getServiceZEndBuild() {
248         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
249             .ServiceZEndBuilder()
250             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
251             .setNodeId(new NodeIdType("XPONDER-1-2"))
252             .setTxDirection(getTxDirection())
253             .setRxDirection(getRxDirection());
254     }
255
256     private static TxDirection getTxDirection() {
257         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service
258                 .endpoint.TxDirectionBuilder().setPort(new PortBuilder().setPortDeviceName("device name")
259                         .setPortName("port name").setPortRack("port rack").setPortShelf("port shelf")
260                         .setPortSlot("port slot").setPortSubSlot("port subslot").setPortType("port type").build())
261                         .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name").setLgxPortName("lgx port name")
262                                 .setLgxPortRack("lgx port rack").setLgxPortShelf("lgx port shelf").build())
263                         .build();
264     }
265
266     private static RxDirection getRxDirection() {
267         return new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service
268                 .endpoint.RxDirectionBuilder()
269                 .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
270                     .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
271                     .setPortSubSlot("port subslot").setPortType("port type").build())
272                 .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
273                     .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
274                     .setLgxPortShelf("lgx port shelf").build())
275                         .build();
276     }
277
278     public static ServiceDeleteInput buildServiceDeleteInput() {
279
280         ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
281         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
282         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
283         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
284         deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("service 1")
285             .setDueDate(datetime).setTailRetention(ServiceDeleteReqInfo.TailRetention.No).build());
286         SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
287             .setNotificationUrl("notification url")
288             .setRequestId("request 1")
289             .setRequestSystemId("request system 1")
290             .setRpcAction(RpcActions.ServiceDelete);
291         deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
292         return deleteInputBldr.build();
293     }
294
295     public static TempServiceDeleteInput buildTempServiceDeleteInput() {
296         TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder()
297             .setCommonId("service 1");
298         return deleteInputBldr.build();
299     }
300
301     public static TempServiceDeleteInput buildTempServiceDeleteInput(String commonId) {
302         TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder()
303             .setCommonId(commonId);
304         return deleteInputBldr.build();
305     }
306
307     public static ServiceRerouteInput buildServiceRerouteInput() {
308         ServiceRerouteInputBuilder builder = new ServiceRerouteInputBuilder()
309             .setServiceName("service 1");
310         return builder.build();
311     }
312
313     public static ServiceRestorationInput buildServiceRestorationInput() {
314         ServiceRestorationInputBuilder builder = new ServiceRestorationInputBuilder()
315             .setServiceName("service 1")
316             .setOption(Option.Permanent);
317         return builder.build();
318     }
319
320     public static ServiceReconfigureInput buildServiceReconfigureInput() {
321
322         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
323             .ServiceAEnd serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service
324                 .reconfigure.input.ServiceAEndBuilder()
325                 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
326                 .setNodeId(new NodeIdType("XPONDER-1-2")).setTxDirection(getTxDirection())
327                 .setRxDirection(getRxDirection())
328                 .build();
329         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
330             .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service
331                 .reconfigure.input.ServiceZEndBuilder()
332                 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
333                 .setNodeId(new NodeIdType("XPONDER-3-2")).setTxDirection(getTxDirection())
334                 .setRxDirection(getRxDirection())
335                 .build();
336
337         ServiceReconfigureInputBuilder builtInput = new ServiceReconfigureInputBuilder()
338             .setCommonId("commonId")
339             .setConnectionType(ConnectionType.Service)
340             .setCustomer("Customer")
341             .setServiceName("service 1")
342             .setServiceAEnd(serviceAEnd)
343             .setServiceZEnd(serviceZEnd);
344         return builtInput.build();
345     }
346
347     public static ServicePathRpcResult buildServicePathRpcResult() {
348         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
349         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
350         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
351         ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
352         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
353             .setPathDescription(createPathDescription(0,1, 0, 1))
354             .setServiceName("service 1")
355             .setStatus(RpcStatusEx.Successful).setStatusMessage("success");
356         return builder.build();
357     }
358
359     public static ServicePathRpcResult buildServicePathRpcResult(
360             ServicePathNotificationTypes servicePathNotificationTypes, String serviceName, RpcStatusEx rpcStatusEx,
361             String message, Boolean pathDescription) {
362         ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
363         builder.setNotificationType(servicePathNotificationTypes)
364                 .setServiceName(serviceName)
365                 .setStatus(rpcStatusEx).setStatusMessage(message);
366         if (pathDescription) {
367             builder.setPathDescription(createPathDescription(0L, 5L, 0L, 5L));
368         }
369         return builder.build();
370     }
371
372     public static ServicePathRpcResult buildFailedPceServicePathRpcResult() {
373         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
374         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
375         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
376         ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
377         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
378                 .setPathDescription(createPathDescription(0, 1, 0, 1)).setServiceName("service 1")
379                 .setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
380         return builder.build();
381     }
382
383     public static ServicePathRpcResult buildFailedServicePathRpcResult() {
384         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
385         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
386         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
387         ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
388         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
389             .setPathDescription(createPathDescription(0,1, 0, 1))
390             .setServiceName("service 1")
391                 .setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
392         return builder.build();
393     }
394
395     public static ServiceRpcResultSp buildServiceRpcResultSp() {
396         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
397         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
398         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
399         ServiceRpcResultSpBuilder builder = new ServiceRpcResultSpBuilder();
400         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
401                 .setServiceName("service 1").setStatus(RpcStatusEx.Successful).setStatusMessage("success");
402         return builder.build();
403     }
404
405     public static ServiceRpcResultSp buildServiceRpcResultSp(ServicePathNotificationTypes servicePathNotificationTypes,
406             String serviceName, RpcStatusEx rpcStatusEx, String message) {
407         ServiceRpcResultSpBuilder builder = new ServiceRpcResultSpBuilder();
408         builder.setNotificationType(servicePathNotificationTypes).setServiceName(serviceName)
409                 .setStatus(rpcStatusEx).setStatusMessage(message);
410         return builder.build();
411     }
412
413     public static ServiceRpcResultSh buildServiceRpcResultSh(
414             ServiceNotificationTypes serviceNotificationTypes,
415             String serviceName,
416             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx
417                 rpcStatusEx,
418             String message) {
419         ServiceRpcResultShBuilder builder = new ServiceRpcResultShBuilder();
420         builder.setNotificationType(serviceNotificationTypes).setServiceName(serviceName)
421                 .setStatus(rpcStatusEx).setStatusMessage(message);
422         return builder.build();
423     }
424
425     public static ServiceRpcResultSp buildFailedServiceRpcResultSp() {
426         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
427         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
428         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
429         ServiceRpcResultSpBuilder builder = new ServiceRpcResultSpBuilder();
430         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
431                 .setServiceName("service 1").setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
432         return builder.build();
433     }
434
435     public static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
436         long zaWaveLength) {
437         AToZDirection atozDirection = new AToZDirectionBuilder()
438             .setRate(Uint32.valueOf(azRate))
439             .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
440             .build();
441         ZToADirection ztoaDirection = new ZToADirectionBuilder()
442             .setRate(Uint32.valueOf(zaRate))
443             .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
444             .build();
445         PathDescription pathDescription = new PathDescriptionBuilder()
446             .setAToZDirection(atozDirection)
447             .setZToADirection(ztoaDirection)
448             .build();
449         return pathDescription;
450     }
451
452     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
453         .ServiceAEndBuilder getServiceAEndBuildReconfigure() {
454         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
455             .ServiceAEndBuilder()
456             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
457             .setNodeId(new NodeIdType("XPONDER-1-2"))
458             .setTxDirection(getTxDirection())
459             .setRxDirection(getRxDirection());
460     }
461
462     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
463         .ServiceZEndBuilder getServiceZEndBuildReconfigure() {
464         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
465             .ServiceZEndBuilder()
466             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
467             .setNodeId(new NodeIdType("XPONDER-1-2"))
468             .setTxDirection(getTxDirection())
469             .setRxDirection(getRxDirection());
470     }
471
472     public static <T> ListenableFuture<T> returnFuture(T output) {
473         final ListeningExecutorService executor =
474                 MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
475         return executor.submit(new Callable<T>() {
476             @Override
477             public T call() throws Exception {
478                 return output;
479             }
480         });
481     }
482
483     private ServiceDataUtils() {
484     }
485
486 }