+ ResponseParameters responseParameters = new ResponseParametersBuilder()
+ .setPathDescription(new org.opendaylight.yang.gen.v1.http
+ .org.transportpce.b.c._interface.service.types.rev200128
+ .response.parameters.sp.response.parameters.PathDescriptionBuilder(pathDescription).build())
+ .build();
+ PathComputationRequestOutput pceResponse = new PathComputationRequestOutputBuilder()
+ .setResponseParameters(responseParameters).build();
+ OperationResult operationServicePathSaveResult = this.serviceDataStoreOperations
+ .createServicePath(input, pceResponse);
+ if (!operationServicePathSaveResult.isSuccess()) {
+ LOG.error("Service Path not created in datastore !");
+ }
+ ServiceImplementationRequestInput serviceImplementationRequest = ModelMappingUtils
+ .createServiceImplementationRequest(input, pathDescription);
+ LOG.info("Sending serviceImplementation request : {}", serviceImplementationRequest);
+ this.rendererServiceOperations.serviceImplementation(serviceImplementationRequest);
+ }
+
+ /**
+ * Check status of notification and send nbi notification.
+ * @param notification ServicePathRpcResult the notification to check.
+ * @return true is status is Successful, false otherwise.
+ */
+ private boolean checkStatus(ServicePathRpcResult notification) {
+ PublishNotificationProcessService nbiNotification = getPublishNotificationProcessService(notification);
+ PublishNotificationProcessServiceBuilder publishNotificationProcessServiceBuilder =
+ new PublishNotificationProcessServiceBuilder(nbiNotification);
+ switch (servicePathRpcResult.getStatus()) {
+ case Failed:
+ LOG.error("PCE path computation failed !");
+ nbiNotification = publishNotificationProcessServiceBuilder
+ .setMessage("ServiceCreate request failed ...")
+ .setResponseFailed("PCE path computation failed !")
+ .setOperationalState(State.Degraded).build();
+ sendNbiNotification(nbiNotification);
+ return false;
+ case Pending:
+ LOG.warn("PCE path computation returned a Pending RpcStatusEx code!");
+ return false;
+ case Successful:
+ LOG.info("PCE calculation done OK !");
+ return true;
+ default:
+ LOG.error("PCE path computation returned an unknown RpcStatusEx code {}",
+ servicePathRpcResult.getStatus());
+ nbiNotification = publishNotificationProcessServiceBuilder
+ .setMessage("ServiceCreate request failed ...")
+ .setResponseFailed("PCE path computation returned an unknown RpcStatusEx code!")
+ .setOperationalState(State.Degraded).build();
+ sendNbiNotification(nbiNotification);
+ return false;
+ }
+ }
+
+ private PublishNotificationProcessService getPublishNotificationProcessService(ServicePathRpcResult notification) {
+ PublishNotificationProcessServiceBuilder nbiNotificationBuilder =
+ new PublishNotificationProcessServiceBuilder();
+ if (input != null) {
+ nbiNotificationBuilder.setServiceName(input.getServiceName())
+ .setServiceAEnd(new ServiceAEndBuilder(input.getServiceAEnd()).build())
+ .setServiceZEnd(new ServiceZEndBuilder(input.getServiceZEnd()).build())
+ .setCommonId(input.getCommonId())
+ .setConnectionType(input.getConnectionType());
+ } else {
+ nbiNotificationBuilder.setServiceName(notification.getServiceName());
+ }
+ nbiNotificationBuilder.setPublisherName(PUBLISHER);
+ return nbiNotificationBuilder.build();