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.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;
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 .setPceRoutingMetric(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 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();
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();
414 public static ServiceRpcResultSh buildServiceRpcResultSh(
415 ServiceNotificationTypes serviceNotificationTypes,
417 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx
420 ServiceRpcResultShBuilder builder = new ServiceRpcResultShBuilder();
421 builder.setNotificationType(serviceNotificationTypes).setServiceName(serviceName)
422 .setStatus(rpcStatusEx).setStatusMessage(message);
423 return builder.build();
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();
436 public static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate,
438 AToZDirection atozDirection = new AToZDirectionBuilder()
439 .setRate(Uint32.valueOf(azRate))
440 .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength))
442 ZToADirection ztoaDirection = new ZToADirectionBuilder()
443 .setRate(Uint32.valueOf(zaRate))
444 .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength))
446 PathDescription pathDescription = new PathDescriptionBuilder()
447 .setAToZDirection(atozDirection)
448 .setZToADirection(ztoaDirection)
450 return pathDescription;
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());
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());
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>() {
478 public T call() throws Exception {
484 private ServiceDataUtils() {