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