2 * Copyright © 2017 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
9 package org.opendaylight.transportpce.servicehandler;
11 import com.google.common.util.concurrent.ListenableFuture;
12 import com.google.common.util.concurrent.ListeningExecutorService;
13 import com.google.common.util.concurrent.MoreExecutors;
14 import java.util.concurrent.Callable;
15 import java.util.concurrent.CancellationException;
16 import java.util.concurrent.ExecutionException;
17 import java.util.concurrent.Executors;
18 import java.util.concurrent.Future;
20 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubpce.rev170426.PathComputationRequestOutput;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceDeleteInput;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceDeleteInputBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceDeleteOutput;
25 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceImplementationRequestInput;
26 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceImplementationRequestInputBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.ServiceImplementationRequestOutput;
28 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.StubrendererService;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.service.implementation.request.input.PathDescriptionBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.service.implementation.request.input.ServiceAEnd;
31 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.service.implementation.request.input.ServiceAEndBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.service.implementation.request.input.ServiceZEnd;
33 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.stubrenderer.rev170426.service.implementation.request.input.ServiceZEndBuilder;
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.sdnc.request.header.SdncRequestHeader;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceReconfigureInput;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
39 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirection;
40 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirection;
42 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
44 import org.opendaylight.yangtools.yang.common.RpcResult;
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
51 * Class for Mapping and Sending
52 * Service Implemention requests :
53 * - service implementation
55 * @author Martial Coulibaly ( martial.coulibaly@gfi.com ) on behalf of Orange
58 public class MappingAndSendingSIRequest {
60 private static final Logger LOG = LoggerFactory.getLogger(MappingAndSendingSIRequest.class);
61 /** Permit to call Renderer RPCs. */
62 private StubrendererService service;
63 /** define procedure success (or not ). */
64 private Boolean success = false;
65 /** permit to call bundle service (PCE, Renderer, Servicehandler. */
66 private RpcProviderRegistry rpcRegistry;
67 /** store all error messages. */
69 ServiceImplementationRequestInput serviceImplementationRequestInput = null;
70 ServiceDeleteInput serviceDeleteInput = null;
72 private final ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(5));
76 * MappingAndSendingSIRequest class constructor
77 * for RPC serviceCreate.
79 * @param rpcRegistry rpcRegistry
80 * @param serviceCreateInput serviceCreateInput
81 * @param pathComputationOutput pathComputationOutput
83 public MappingAndSendingSIRequest(RpcProviderRegistry rpcRegistry,
84 ServiceCreateInput serviceCreateInput,PathComputationRequestOutput pathComputationOutput) {
85 this.setRpcRegistry(rpcRegistry);
86 if (rpcRegistry != null) {
87 service = rpcRegistry.getRpcService(StubrendererService.class);
92 /** Building ServiceImplementationRequestInput / ServiceDeleteInput serviceDeleteInput. */
93 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
94 if (serviceCreateInput.getSdncRequestHeader() != null) {
95 serviceHandlerHeader.setRequestId(serviceCreateInput.getSdncRequestHeader().getRequestId());
97 mappingSIRequest(pathComputationOutput, serviceHandlerHeader, serviceCreateInput.getServiceAEnd(),
98 serviceCreateInput.getServiceZEnd(), serviceCreateInput.getServiceName());
101 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev161014
102 .service.create.input.ServiceAEnd tempA = serviceCreateInput.getServiceAEnd();
104 org.opendaylight.yang.gen.v1.http.org.openroadm.common
105 .service.types.rev161014.service.port.Port tempAPortRx =
106 serviceCreateInput.getServiceAEnd().getRxDirection().getPort();
108 org.opendaylight.yang.gen.v1.http.org.openroadm.common
109 .service.types.rev161014.service.port.Port tempAPortTx =
110 serviceCreateInput.getServiceAEnd().getTxDirection().getPort();
112 RxDirection rxDirectionAEnd = getRxDirection(tempAPortRx);
114 TxDirection txDirectionAEnd = getTxDirection(tempAPortTx);
116 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
117 .setClli(tempA.getClli())
118 .setNodeId(tempA.getNodeId())
119 .setServiceFormat(ServiceFormat.valueOf(tempA.getServiceFormat().getName()))
120 .setServiceRate(tempA.getServiceRate())
121 .setRxDirection(rxDirectionAEnd)
122 .setTxDirection(txDirectionAEnd)
125 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev161014
126 .service.create.input.ServiceZEnd tempZ = serviceCreateInput.getServiceZEnd();
128 org.opendaylight.yang.gen.v1.http.org.openroadm.common
129 .service.types.rev161014.service.port.Port tempZPortRx =
130 serviceCreateInput.getServiceZEnd().getRxDirection().getPort();
132 org.opendaylight.yang.gen.v1.http.org.openroadm.common
133 .service.types.rev161014.service.port.Port tempZPortTx =
134 serviceCreateInput.getServiceZEnd().getTxDirection().getPort();
136 RxDirection rxDirectionZEnd = getRxDirection(tempZPortRx);
138 TxDirection txDirectionZEnd = getTxDirection(tempZPortTx);
140 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
141 .setClli(tempZ.getClli())
142 .setNodeId(tempZ.getNodeId())
143 .setServiceFormat(ServiceFormat.valueOf(tempZ.getServiceFormat().getName()))
144 .setServiceRate(tempZ.getServiceRate())
145 .setRxDirection(rxDirectionZEnd)
146 .setTxDirection(txDirectionZEnd)
149 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
150 .rev170426.response.parameters.sp.response.parameters.PathDescription tmp = null;
152 tmp = pathComputationOutput.getResponseParameters().getPathDescription();
153 } catch (NullPointerException e) {
154 LOG.error("PathDescription is null : {}", e.toString());
156 PathDescriptionBuilder pathDescription = new PathDescriptionBuilder();
158 pathDescription = new PathDescriptionBuilder(tmp);
160 serviceImplementationRequestInput = new ServiceImplementationRequestInputBuilder()
161 .setPathDescription(pathDescription.build())
162 .setServiceHandlerHeader(serviceHandlerHeader.build())
163 .setServiceName(serviceCreateInput.getServiceName())
164 .setServiceAEnd(serviceAEnd)
165 .setServiceZEnd(serviceZEnd)
168 mappingSIRequest(pathComputationOutput, serviceHandlerHeader, serviceCreateInput.getServiceAEnd(),
169 serviceCreateInput.getServiceZEnd(), serviceCreateInput.getServiceName());
173 * MappingAndSendingSIRequest class constructor
174 * for RPC serviceReconfigure.
176 * @param rpcRegistry rpcRegistry
177 * @param serviceReconfigureInput serviceReconfigureInput
178 * @param pathComputationOutput pathComputationOutput
181 public MappingAndSendingSIRequest(RpcProviderRegistry rpcRegistry,
182 ServiceReconfigureInput serviceReconfigureInput,PathComputationRequestOutput pathComputationOutput) {
183 this.setRpcRegistry(rpcRegistry);
184 if (rpcRegistry != null) {
185 service = rpcRegistry.getRpcService(StubrendererService.class);
190 /** Building ServiceImplementationRequestInput / ServiceDeleteInput serviceDeleteInput .*/
191 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder()
192 .setRequestId("reconfigure_" + serviceReconfigureInput.getNewServiceName());
193 mappingSIRequest(pathComputationOutput, serviceHandlerHeader, serviceReconfigureInput.getServiceAEnd(),
194 serviceReconfigureInput.getServiceZEnd(), serviceReconfigureInput.getNewServiceName());
197 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev161014
198 .service.reconfigure.input.ServiceAEnd tempA = serviceReconfigureInput.getServiceAEnd();
200 org.opendaylight.yang.gen.v1.http.org.openroadm.common
201 .service.types.rev161014.service.port.Port tempAPortRx =
202 serviceReconfigureInput.getServiceAEnd().getRxDirection().getPort();
204 org.opendaylight.yang.gen.v1.http.org.openroadm.common
205 .service.types.rev161014.service.port.Port tempAPortTx =
206 serviceReconfigureInput.getServiceAEnd().getTxDirection().getPort();
208 RxDirection rxDirectionAEnd = getRxDirection(tempAPortRx);
210 TxDirection txDirectionAEnd = getTxDirection(tempAPortTx);
212 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
213 .setClli(tempA.getClli())
214 .setNodeId(tempA.getNodeId())
215 .setServiceFormat(ServiceFormat.valueOf(tempA.getServiceFormat().getName()))
216 .setServiceRate(tempA.getServiceRate())
217 .setRxDirection(rxDirectionAEnd)
218 .setTxDirection(txDirectionAEnd)
221 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev161014
222 .service.reconfigure.input.ServiceZEnd tempZ = serviceReconfigureInput.getServiceZEnd();
224 org.opendaylight.yang.gen.v1.http.org.openroadm.common
225 .service.types.rev161014.service.port.Port tempZPortRx =
226 serviceReconfigureInput.getServiceZEnd().getRxDirection().getPort();
228 org.opendaylight.yang.gen.v1.http.org.openroadm.common
229 .service.types.rev161014.service.port.Port tempZPortTx =
230 serviceReconfigureInput.getServiceZEnd().getTxDirection().getPort();
233 RxDirection rxDirectionZEnd = getRxDirection(tempZPortRx);
234 TxDirection txDirectionZEnd = getTxDirection(tempZPortTx);
236 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
237 .setClli(tempZ.getClli())
238 .setNodeId(tempZ.getNodeId())
239 .setServiceFormat(ServiceFormat.valueOf(tempZ.getServiceFormat().getName()))
240 .setServiceRate(tempZ.getServiceRate())
241 .setRxDirection(rxDirectionZEnd)
242 .setTxDirection(txDirectionZEnd)
245 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
246 .rev170426.response.parameters.sp.response.parameters.PathDescription tmp = null;
248 tmp = pathComputationOutput.getResponseParameters().getPathDescription();
249 } catch (NullPointerException e) {
250 LOG.error("PathDescription is null : {}", e.toString());
252 PathDescriptionBuilder pathDescription = new PathDescriptionBuilder();
254 pathDescription = new PathDescriptionBuilder(tmp);
256 serviceImplementationRequestInput = new ServiceImplementationRequestInputBuilder()
257 .setPathDescription(pathDescription.build())
258 .setServiceHandlerHeader(serviceHandlerHeader.build())
259 .setServiceName(serviceReconfigureInput.getNewServiceName())
260 .setServiceAEnd(serviceAEnd)
261 .setServiceZEnd(serviceZEnd)
263 LOG.info("ServiceImplementationRequestInput : {}", serviceImplementationRequestInput.toString());*/
268 * MappingAndSendingSIRequest class constructor
269 * for RPC serviceDelete.
271 * @param rpcRegistry RpcProviderRegistry
272 * @param requestId Request ID
273 * @param serviceName Service name
275 public MappingAndSendingSIRequest(RpcProviderRegistry rpcRegistry,String requestId, String serviceName) {
276 this.setRpcRegistry(rpcRegistry);
277 if (rpcRegistry != null) {
278 service = rpcRegistry.getRpcService(StubrendererService.class);
283 /** ServiceDeleteInput Build .*/
284 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
285 if (requestId != null) {
286 serviceHandlerHeader.setRequestId(requestId);
289 serviceDeleteInput = new ServiceDeleteInputBuilder()
290 .setServiceHandlerHeader(serviceHandlerHeader.build())
291 .setServiceName(serviceName)
296 * MappingAndSendingSIRequest Class constructor
297 * for modify Service in ODL Datastore.
299 * @param rpcRegistry RpcProviderRegistry
300 * @param services Services
301 * @param pathComputationOutput PathComputationRequestOutput
303 public MappingAndSendingSIRequest(RpcProviderRegistry rpcRegistry,Services services,
304 PathComputationRequestOutput pathComputationOutput) {
305 this.setRpcRegistry(rpcRegistry);
306 if (rpcRegistry != null) {
307 service = rpcRegistry.getRpcService(StubrendererService.class);
312 /** Building ServiceImplementationRequestInput / ServiceDeleteInput serviceDeleteInput .*/
313 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
314 SdncRequestHeader sdnc = services.getSdncRequestHeader();
316 String requestId = services.getSdncRequestHeader().getRequestId();
317 if (requestId != null) {
318 serviceHandlerHeader.setRequestId(requestId);
321 mappingSIRequest(pathComputationOutput, serviceHandlerHeader, services.getServiceAEnd(),
322 services.getServiceZEnd(), services.getServiceName());
323 /*org.opendaylight.yang.gen.v1.http.org.openroadm.common.service
324 .types.rev161014.service.ServiceAEnd tempA = services.getServiceAEnd();
326 org.opendaylight.yang.gen.v1.http.org.openroadm.common
327 .service.types.rev161014.service.port.Port tempAPortRx = tempA.getRxDirection().getPort();
329 org.opendaylight.yang.gen.v1.http.org.openroadm.common
330 .service.types.rev161014.service.port.Port tempAPortTx = tempA.getTxDirection().getPort();
333 RxDirection rxDirectionAEnd = getRxDirection(tempAPortRx);
335 TxDirection txDirectionAEnd = getTxDirection(tempAPortTx);
337 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
338 .setClli(tempA.getClli())
339 .setNodeId(tempA.getNodeId())
340 .setServiceFormat(ServiceFormat.valueOf(tempA.getServiceFormat().getName()))
341 .setServiceRate(tempA.getServiceRate())
342 .setRxDirection(rxDirectionAEnd)
343 .setTxDirection(txDirectionAEnd)
345 org.opendaylight.yang.gen.v1.http.org.openroadm.common.service
346 .types.rev161014.service.ServiceZEnd tempZ = services.getServiceZEnd();
348 org.opendaylight.yang.gen.v1.http.org.openroadm.common
349 .service.types.rev161014.service.port.Port tempZPortRx = tempZ.getRxDirection().getPort();
351 org.opendaylight.yang.gen.v1.http.org.openroadm.common
352 .service.types.rev161014.service.port.Port tempZPortTx = tempZ.getTxDirection().getPort();
354 RxDirection rxDirectionZEnd = getRxDirection(tempZPortRx);
355 TxDirection txDirectionZEnd = getTxDirection(tempZPortTx);
357 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
358 .setClli(tempZ.getClli())
359 .setNodeId(tempZ.getNodeId())
360 .setServiceFormat(ServiceFormat.valueOf(tempZ.getServiceFormat().getName()))
361 .setServiceRate(tempZ.getServiceRate())
362 .setRxDirection(rxDirectionZEnd)
363 .setTxDirection(txDirectionZEnd)
365 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
366 .rev170426.response.parameters.sp.response.parameters.PathDescription tmp = null;
368 tmp = pathComputationOutput.getResponseParameters().getPathDescription();
369 } catch (NullPointerException e) {
370 LOG.error("PathDescription is null : {}", e);
372 PathDescriptionBuilder pathDescription = new PathDescriptionBuilder();
374 pathDescription = new PathDescriptionBuilder(tmp);
377 serviceImplementationRequestInput = new ServiceImplementationRequestInputBuilder()
378 .setPathDescription(pathDescription.build())
379 .setServiceHandlerHeader(serviceHandlerHeader.build())
380 .setServiceName(services.getServiceName())
381 .setServiceAEnd(serviceAEnd)
382 .setServiceZEnd(serviceZEnd)
384 LOG.info("ServiceImplementationRequestInput : {}", serviceImplementationRequestInput.toString());*/
388 *Build serviceImplementationRequestInput with
389 *input parameters from ServiceCreateInput or
390 *Services or serviceReconfigureInput.
392 * @param pathComputationOutput PathComputationRequestOutput
393 * @param serviceHandlerHeader ServiceHandlerHeaderBuilder
394 * @param aend Beginning ServiceEndpoint
395 * @param zend Ending ServiceEndpoint
396 * @param serviceName Service Name
398 private void mappingSIRequest(PathComputationRequestOutput pathComputationOutput,
399 ServiceHandlerHeaderBuilder serviceHandlerHeader, org.opendaylight.yang.gen .v1.http.org.openroadm.common
400 .service.types.rev161014.ServiceEndpoint aend , org.opendaylight.yang.gen.v1.http.org.openroadm.common
401 .service.types.rev161014.ServiceEndpoint zend, String serviceName) {
402 LOG.info("Mapping ServiceCreateInput or Services or serviceReconfigureInput to SIR requests");
403 /** ServiceAEnd Build. */
404 RxDirection rxDirectionAEnd = new RxDirectionBuilder()
405 .setPort(aend.getRxDirection().getPort())
407 TxDirection txDirectionAEnd = new TxDirectionBuilder()
408 .setPort(aend.getTxDirection().getPort())
411 ServiceAEnd serviceAEnd = new ServiceAEndBuilder()
412 .setClli(aend.getClli())
413 .setNodeId(aend.getNodeId())
414 .setServiceFormat(ServiceFormat.valueOf(aend.getServiceFormat().getName()))
415 .setServiceRate(aend.getServiceRate())
416 .setRxDirection(rxDirectionAEnd)
417 .setTxDirection(txDirectionAEnd)
420 /** ServiceZEnd Build. */
421 RxDirection rxDirectionZEnd = new RxDirectionBuilder()
422 .setPort(zend.getRxDirection().getPort())
425 TxDirection txDirectionZEnd = new TxDirectionBuilder()
426 .setPort(zend.getTxDirection().getPort())
429 ServiceZEnd serviceZEnd = new ServiceZEndBuilder()
430 .setClli(zend.getClli())
431 .setNodeId(zend.getNodeId())
432 .setServiceFormat(ServiceFormat.valueOf(zend.getServiceFormat().getName()))
433 .setServiceRate(zend.getServiceRate())
434 .setRxDirection(rxDirectionZEnd)
435 .setTxDirection(txDirectionZEnd)
439 /** ServiceImplementationRequestInput Build. */
440 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
441 .rev170426.response.parameters.sp.response.parameters.PathDescription tmp = null;
443 tmp = pathComputationOutput.getResponseParameters().getPathDescription();
444 } catch (NullPointerException e) {
445 LOG.error("PathDescription is null : {}", e.toString());
447 PathDescriptionBuilder pathDescription = new PathDescriptionBuilder();
449 pathDescription = new PathDescriptionBuilder(tmp);
451 serviceImplementationRequestInput = new ServiceImplementationRequestInputBuilder()
452 .setPathDescription(pathDescription.build())
453 .setServiceHandlerHeader(serviceHandlerHeader.build())
454 .setServiceName(serviceName)
455 .setServiceAEnd(serviceAEnd)
456 .setServiceZEnd(serviceZEnd)
462 * Send serviceImplementation request to Render.
464 * @return ServiceImplementationRequestOutput data response from Renderer
466 public ListenableFuture<Boolean> serviceImplementation() {
468 return executor.submit(new Callable<Boolean>() {
470 public Boolean call() throws Exception {
471 Boolean output = null;
472 if (serviceImplementationRequestInput != null) {
473 RpcResult<ServiceImplementationRequestOutput> rendererOutputResult = null;
474 Future<RpcResult<ServiceImplementationRequestOutput>> rendererOutputFuture =
475 service.serviceImplementationRequest(serviceImplementationRequestInput);
477 rendererOutputResult = rendererOutputFuture.get();//wait to get the result
478 } catch (InterruptedException | CancellationException | ExecutionException e) {
479 setError("Did not receive the expected response from renderer to pathComputationRequest RPC "
482 rendererOutputFuture.cancel(true);
485 if (rendererOutputResult != null && rendererOutputResult.isSuccessful()) {
486 LOG.info("Renderer replied to serviceImplementation Request !");
492 LOG.info("serviceImplementationRequestInput is not valid");
502 * Send serviceDelete request to Render.
504 * @return ServiceDeleteOutput data response from Renderer
506 public ListenableFuture<Boolean> serviceDelete() {
508 return executor.submit(new Callable<Boolean>() {
510 public Boolean call() throws Exception {
511 Boolean output = null;
512 if (serviceDeleteInput != null) {
513 RpcResult<ServiceDeleteOutput> rendererOutputResult = null;
514 Future<RpcResult<ServiceDeleteOutput>> rendererOutputFuture =
515 service.serviceDelete(serviceDeleteInput);
517 rendererOutputResult = rendererOutputFuture.get();//wait to get the result
518 } catch (InterruptedException | CancellationException | ExecutionException e) {
519 setError("Did not receive the expected response from renderer to pathComputationRequest RPC "
522 rendererOutputFuture.cancel(true);
525 if (rendererOutputResult != null && rendererOutputResult.isSuccessful()) {
526 LOG.info("Renderer replied to serviceDelete Request!");
538 public Boolean getSuccess() {
542 public void setSuccess(Boolean success) {
543 this.success = success;
546 public String getError() {
550 public void setError(String error) {
554 public RpcProviderRegistry getRpcRegistry() {
558 public void setRpcRegistry(RpcProviderRegistry rpcRegistry) {
559 this.rpcRegistry = rpcRegistry;