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;
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;
77 public final class ServiceDataUtils {
79 public static ServiceCreateInput buildServiceCreateInput() {
81 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
82 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
103 return builtInput.build();
106 public static ServiceCreateInput buildServiceCreateInputWithHardConstraints() {
108 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
109 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
131 return builtInput.build();
134 public static ServiceCreateInput buildServiceCreateInputWithSoftConstraints() {
136 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.create.input
137 .ServiceAEnd serviceAEnd = getServiceAEndBuild()
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())
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());
159 return builtInput.build();
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());
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()))
183 public static TempServiceCreateInput buildTempServiceCreateInput() {
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())
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())
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());
211 return builtInput.build();
214 public static ServiceFeasibilityCheckInput buildServiceFeasibilityCheckInput() {
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();
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();
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());
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());
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())
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())
278 public static ServiceDeleteInput buildServiceDeleteInput() {
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();
295 public static TempServiceDeleteInput buildTempServiceDeleteInput() {
296 TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder()
297 .setCommonId("service 1");
298 return deleteInputBldr.build();
301 public static TempServiceDeleteInput buildTempServiceDeleteInput(String commonId) {
302 TempServiceDeleteInputBuilder deleteInputBldr = new TempServiceDeleteInputBuilder()
303 .setCommonId(commonId);
304 return deleteInputBldr.build();
307 public static ServiceRerouteInput buildServiceRerouteInput() {
308 ServiceRerouteInputBuilder builder = new ServiceRerouteInputBuilder()
309 .setServiceName("service 1");
310 return builder.build();
313 public static ServiceRestorationInput buildServiceRestorationInput() {
314 ServiceRestorationInputBuilder builder = new ServiceRestorationInputBuilder()
315 .setServiceName("service 1")
316 .setOption(Option.Permanent);
317 return builder.build();
320 public static ServiceReconfigureInput buildServiceReconfigureInput() {
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())
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())
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();
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();
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));
369 return builder.build();
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();
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();
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();
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();
413 public static ServiceRpcResultSh buildServiceRpcResultSh(
414 ServiceNotificationTypes serviceNotificationTypes,
416 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx
419 ServiceRpcResultShBuilder builder = new ServiceRpcResultShBuilder();
420 builder.setNotificationType(serviceNotificationTypes).setServiceName(serviceName)
421 .setStatus(rpcStatusEx).setStatusMessage(message);
422 return builder.build();
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();
435 public static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
437 AToZDirection atozDirection = new AToZDirectionBuilder()
438 .setRate(Uint32.valueOf(azRate))
439 .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
441 ZToADirection ztoaDirection = new ZToADirectionBuilder()
442 .setRate(Uint32.valueOf(zaRate))
443 .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
445 PathDescription pathDescription = new PathDescriptionBuilder()
446 .setAToZDirection(atozDirection)
447 .setZToADirection(ztoaDirection)
449 return pathDescription;
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());
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());
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>() {
477 public T call() throws Exception {
483 private ServiceDataUtils() {