871d7933d619dffa3f19041f6e887ffb369aea29
[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.rev220118.PathComputationRequestInput;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestInputBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.ServicePathRpcResult;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.ServicePathRpcResultBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.service.path.rpc.result.PathDescription;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.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.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.rev210705.path.description.AToZDirection;
67 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder;
68 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection;
69 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder;
70 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.PceMetric;
71 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx;
72 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.ServicePathNotificationTypes;
73 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.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             .setPceRoutingMetric(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 RendererRpcResultSp buildRendererRpcResultSp() {
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         RendererRpcResultSpBuilder builder = new RendererRpcResultSpBuilder();
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 RendererRpcResultSp buildRendererRpcResultSp(
406             ServicePathNotificationTypes servicePathNotificationTypes,
407             String serviceName, RpcStatusEx rpcStatusEx, String message) {
408         RendererRpcResultSpBuilder builder = new RendererRpcResultSpBuilder();
409         builder.setNotificationType(servicePathNotificationTypes).setServiceName(serviceName)
410                 .setStatus(rpcStatusEx).setStatusMessage(message);
411         return builder.build();
412     }
413
414     public static ServiceRpcResultSh buildServiceRpcResultSh(
415             ServiceNotificationTypes serviceNotificationTypes,
416             String serviceName,
417             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx
418                 rpcStatusEx,
419             String message) {
420         ServiceRpcResultShBuilder builder = new ServiceRpcResultShBuilder();
421         builder.setNotificationType(serviceNotificationTypes).setServiceName(serviceName)
422                 .setStatus(rpcStatusEx).setStatusMessage(message);
423         return builder.build();
424     }
425
426     public static RendererRpcResultSp buildFailedRendererRpcResultSp() {
427         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
428         OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
429         DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
430         RendererRpcResultSpBuilder builder = new RendererRpcResultSpBuilder();
431         builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
432                 .setServiceName("service 1").setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
433         return builder.build();
434     }
435
436     public static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
437         long zaWaveLength) {
438         AToZDirection atozDirection = new AToZDirectionBuilder()
439             .setRate(Uint32.valueOf(azRate))
440             .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
441             .build();
442         ZToADirection ztoaDirection = new ZToADirectionBuilder()
443             .setRate(Uint32.valueOf(zaRate))
444             .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
445             .build();
446         PathDescription pathDescription = new PathDescriptionBuilder()
447             .setAToZDirection(atozDirection)
448             .setZToADirection(ztoaDirection)
449             .build();
450         return pathDescription;
451     }
452
453     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
454         .ServiceAEndBuilder getServiceAEndBuildReconfigure() {
455         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
456             .ServiceAEndBuilder()
457             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
458             .setNodeId(new NodeIdType("XPONDER-1-2"))
459             .setTxDirection(getTxDirection())
460             .setRxDirection(getRxDirection());
461     }
462
463     public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
464         .ServiceZEndBuilder getServiceZEndBuildReconfigure() {
465         return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.reconfigure.input
466             .ServiceZEndBuilder()
467             .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate(Uint32.valueOf(1))
468             .setNodeId(new NodeIdType("XPONDER-1-2"))
469             .setTxDirection(getTxDirection())
470             .setRxDirection(getRxDirection());
471     }
472
473     public static <T> ListenableFuture<T> returnFuture(T output) {
474         final ListeningExecutorService executor =
475                 MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
476         return executor.submit(new Callable<T>() {
477             @Override
478             public T call() throws Exception {
479                 return output;
480             }
481         });
482     }
483
484     private ServiceDataUtils() {
485     }
486
487 }