+ LOG.info("RPC temp serviceDelete request received for {}", input.getCommonId());
+ String message = "";
+
+ /*
+ * Upon receipt of service-deleteService RPC, service header and sdnc-request
+ * header compliancy are verified.
+ */
+ LOG.info("checking Service Compliancy ...");
+ ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerCompliancyCheck.check(input.getCommonId(),
+ null, null, RpcActions.ServiceDelete, false, false);
+ if (serviceHandlerCheckResult.hasPassed()) {
+ LOG.info("Service compliant !");
+ } else {
+ LOG.info("Service is not compliant !");
+ return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ "Service not compliant !", ResponseCodes.RESPONSE_FAILED);
+ }
+
+ //Check presence of service to be deleted
+ String commonId = input.getCommonId();
+ LOG.info("service common-id : {}", commonId);
+ try {
+ Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+ .Services> service = this.serviceDataStoreOperations.getTempService(commonId);
+ if (!service.isPresent()) {
+ message = "Service '" + commonId + "' does not exist in datastore";
+ LOG.error(message);
+ return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ message, ResponseCodes.RESPONSE_FAILED);
+ }
+ } catch (NullPointerException e) {
+ LOG.info("failed to get service '{}' from datastore : ", commonId, e);
+ }
+
+ LOG.info("Service '{}' present in datastore !", commonId);
+ this.pceListenerImpl.setInput(new ServiceInput(input));
+ this.pceListenerImpl.setServiceReconfigure(false);
+ this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
+ this.rendererListenerImpl.setTempService(true);
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
+ this.rendererServiceWrapper.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult);
+ if (output != null) {
+ LOG.info("Temp Service present in datastore, service-delete in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createDeleteServiceReply(input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
+ } else {
+ return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ "Renderer service delete failed !", ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<TempServiceCreateOutput>> tempServiceCreate(TempServiceCreateInput input) {
+ LOG.info("RPC temp service creation received");
+ // Validation
+ OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
+ new ServiceInput(input), RpcActions.TempServiceCreate);
+ if (! validationResult.isSuccess()) {
+ LOG.warn("Aborting service create because validation of service create request failed: {}",
+ validationResult.getResultMessage());
+ return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
+ }
+
+ // Starting service create operation
+ LOG.info("Commencing PCE");
+ this.pceListenerImpl.setInput(new ServiceInput(input));
+ this.pceListenerImpl.setServiceReconfigure(false);
+ this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.pceListenerImpl.setTempService(true);
+ this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
+ this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
+ this.rendererListenerImpl.setTempService(true);
+ PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
+ if (output != null) {
+ LOG.info("Service compliant, temp serviceCreate in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
+ } else {
+ return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+ }
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<
+ ServiceDeleteComplexResultNotificationRequestOutput>> serviceDeleteComplexResultNotificationRequest(
+ ServiceDeleteComplexResultNotificationRequestInput input) {