2 * Copyright © 2018 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.servicehandler.utils;
10 import com.google.common.util.concurrent.ListenableFuture;
11 import com.google.common.util.concurrent.ListeningExecutorService;
12 import com.google.common.util.concurrent.MoreExecutors;
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;
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.rev171017.ServiceRpcResultSh;
31 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev171017.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.rev191009.RpcStatusEx;
69 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.ServicePathNotificationTypes;
70 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.service.handler.header.ServiceHandlerHeaderBuilder;
71 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
73 public final class ServiceDataUtils {
75 public static ServiceCreateInput buildServiceCreateInput() {
77 ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
78 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
79 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
98 return builtInput.build();
101 public static ServiceCreateInput buildServiceCreateInputWithHardConstraints() {
103 ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
104 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
105 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
125 return builtInput.build();
128 public static ServiceCreateInput buildServiceCreateInputWithSoftConstraints() {
130 ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
131 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
132 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
152 return builtInput.build();
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());
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()))
176 public static TempServiceCreateInput buildTempServiceCreateInput() {
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())
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())
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());
202 return builtInput.build();
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())
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())
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();
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());
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());
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())
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())
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();
285 public static TempServiceDeleteInput buildTempServiceDeleteInput() {
286 TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder();
287 deleteInputBldr.setCommonId("service 1");
288 return deleteInputBldr.build();
291 public static TempServiceDeleteInput buildTempServiceDeleteInput(String commonId) {
292 TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder();
293 deleteInputBldr.setCommonId(commonId);
294 return deleteInputBldr.build();
297 public static ServiceRerouteInput buildServiceRerouteInput() {
298 ServiceRerouteInputBuilder builder = new ServiceRerouteInputBuilder();
299 builder.setServiceName("service 1");
300 return builder.build();
303 public static ServiceRestorationInput buildServiceRestorationInput() {
304 ServiceRestorationInputBuilder builder = new ServiceRestorationInputBuilder();
305 builder.setServiceName("service 1");
306 builder.setOption(Option.Permanent);
307 return builder.build();
310 public static ServiceReconfigureInput buildServiceReconfigureInput() {
311 ServiceReconfigureInputBuilder builtInput = new ServiceReconfigureInputBuilder();
312 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
313 .ServiceAEnd serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service
314 .reconfigure.input.ServiceAEndBuilder()
315 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1)
316 .setNodeId("XPONDER-1-2").setTxDirection(getTxDirection()).setRxDirection(getRxDirection())
318 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
319 .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service
320 .reconfigure.input.ServiceZEndBuilder()
321 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1)
322 .setNodeId("XPONDER-3-2").setTxDirection(getTxDirection()).setRxDirection(getRxDirection())
324 builtInput.setCommonId("commonId");
325 builtInput.setConnectionType(ConnectionType.Service);
326 builtInput.setCustomer("Customer");
327 builtInput.setServiceName("service 1");
328 builtInput.setServiceAEnd(serviceAEnd);
329 builtInput.setServiceZEnd(serviceZEnd);
330 return builtInput.build();
333 public static ServicePathRpcResult buildServicePathRpcResult() {
334 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
335 OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
336 DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
337 ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
338 builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
339 .setPathDescription(createPathDescription(0,1, 0, 1))
340 .setServiceName("service 1")
341 .setStatus(RpcStatusEx.Successful).setStatusMessage("success");
342 return builder.build();
345 public static ServicePathRpcResult buildServicePathRpcResult(
346 ServicePathNotificationTypes servicePathNotificationTypes, String serviceName, RpcStatusEx rpcStatusEx,
347 String message, Boolean pathDescription) {
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.setNotificationType(servicePathNotificationTypes)
353 .setServiceName(serviceName)
354 .setStatus(rpcStatusEx).setStatusMessage(message);
355 if (pathDescription) {
356 builder.setPathDescription(createPathDescription(0L, 5L, 0L, 5L));
358 return builder.build();
361 public static ServicePathRpcResult buildFailedPceServicePathRpcResult() {
362 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
363 OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
364 DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
365 ServicePathRpcResultBuilder builder = new ServicePathRpcResultBuilder();
366 builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.PathComputationRequest)
367 .setPathDescription(createPathDescription(0, 1, 0, 1)).setServiceName("service 1")
368 .setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
369 return builder.build();
372 public static ServicePathRpcResult buildFailedServicePathRpcResult() {
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.ServiceImplementationRequest)
378 .setPathDescription(createPathDescription(0,1, 0, 1))
379 .setServiceName("service 1")
380 .setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
381 return builder.build();
384 public static ServiceRpcResultSp buildServiceRpcResultSp() {
385 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
386 OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
387 DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
388 ServiceRpcResultSpBuilder builder = new ServiceRpcResultSpBuilder();
389 builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
390 .setServiceName("service 1").setStatus(RpcStatusEx.Successful).setStatusMessage("success");
391 return builder.build();
394 public static ServiceRpcResultSp buildServiceRpcResultSp(ServicePathNotificationTypes servicePathNotificationTypes,
395 String serviceName, RpcStatusEx rpcStatusEx, String message) {
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.setNotificationType(servicePathNotificationTypes).setServiceName(serviceName)
401 .setStatus(rpcStatusEx).setStatusMessage(message);
402 return builder.build();
405 public static ServiceRpcResultSh buildServiceRpcResultSh(ServiceNotificationTypes serviceNotificationTypes,
406 String serviceName, org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
407 .rev191009.RpcStatusEx rpcStatusEx, String message) {
408 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
409 OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
410 DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
411 ServiceRpcResultShBuilder builder = new ServiceRpcResultShBuilder();
412 builder.setNotificationType(serviceNotificationTypes).setServiceName(serviceName)
413 .setStatus(rpcStatusEx).setStatusMessage(message);
414 return builder.build();
417 public static ServiceRpcResultSp buildFailedServiceRpcResultSp() {
418 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
419 OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
420 DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
421 ServiceRpcResultSpBuilder builder = new ServiceRpcResultSpBuilder();
422 builder.setActualDate(datetime).setNotificationType(ServicePathNotificationTypes.ServiceImplementationRequest)
423 .setServiceName("service 1").setStatus(RpcStatusEx.Failed).setStatusMessage("failed");
424 return builder.build();
427 public static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
429 AToZDirection atozDirection = new AToZDirectionBuilder()
431 .setAToZWavelengthNumber(azWaveLength)
434 ZToADirection ztoaDirection = new ZToADirectionBuilder()
436 .setZToAWavelengthNumber(zaWaveLength)
439 PathDescription pathDescription = new PathDescriptionBuilder()
440 .setAToZDirection(atozDirection)
441 .setZToADirection(ztoaDirection)
443 return pathDescription;
446 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
447 .ServiceAEndBuilder getServiceAEndBuildReconfigure() {
448 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
449 .ServiceAEndBuilder()
450 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
451 .setTxDirection(getTxDirection())
452 .setRxDirection(getRxDirection());
455 public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
456 .ServiceZEndBuilder getServiceZEndBuildReconfigure() {
457 return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.reconfigure.input
458 .ServiceZEndBuilder()
459 .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
460 .setTxDirection(getTxDirection())
461 .setRxDirection(getRxDirection());
464 public static <T> ListenableFuture<T> returnFuture(T output) {
465 final ListeningExecutorService executor =
466 MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1));
467 return executor.submit(new Callable<T>() {
469 public T call() throws Exception {
475 private ServiceDataUtils() {