-
- // Obtain path description
- Optional<PathDescription> pathDescriptionOpt = getPathDescriptionFromDatastore(serviceName);
- PathDescription pathDescription;
- if (pathDescriptionOpt.isPresent()) {
- pathDescription = pathDescriptionOpt.get();
- } else {
- LOG.error("Unable to get path description for service {}!", serviceName);
- return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED);
- }
-
- ServicePathInputData servicePathInputDataAtoZ
- = ModelMappingUtils.rendererCreateServiceInputAToZ(serviceName, pathDescription);
- ServicePathInputData servicePathInputDataZtoA
- = ModelMappingUtils.rendererCreateServiceInputZToA(serviceName, pathDescription);
-
- // OLM turn down power
- try {
- LOG.debug("Turning down power on A-to-Z path");
- ServicePowerTurndownOutput atozPowerTurndownOutput = olmPowerTurndown(servicePathInputDataAtoZ);
- // TODO add some flag rather than string
- if (FAILED.equals(atozPowerTurndownOutput.getResult())) {
- LOG.error("Service power turndown failed on A-to-Z path for service {}!", serviceName);
- return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED);
- }
-
- LOG.debug("Turning down power on Z-to-A path");
- ServicePowerTurndownOutput ztoaPowerTurndownOutput = olmPowerTurndown(servicePathInputDataZtoA);
- // TODO add some flag rather than string
- if (FAILED.equals(ztoaPowerTurndownOutput.getResult())) {
- LOG.error("Service power turndown failed on Z-to-A path for service {}!", serviceName);
- return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED);
+ LOG.info("Calling service delete request {} {}", input.getServiceName());
+ return executor.submit(new Callable<ServiceDeleteOutput>() {
+
+ @Override
+ public ServiceDeleteOutput call() throws Exception {
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete, input.getServiceName(),
+ RpcStatusEx.Pending, "Service compliant, submitting service delete Request ...");
+ // Obtain path description
+ Optional<PathDescription> pathDescriptionOpt = getPathDescriptionFromDatastore(serviceName);
+ PathDescription pathDescription;
+ if (pathDescriptionOpt.isPresent()) {
+ pathDescription = pathDescriptionOpt.get();
+ } else {
+ LOG.error("Unable to get path description for service {}!", serviceName);
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete, input.getServiceName(),
+ RpcStatusEx.Failed, "Unable to get path description for service");
+ return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED,
+ OPERATION_FAILED);
+ }
+ ServicePathInputData servicePathInputDataAtoZ =
+ ModelMappingUtils.rendererCreateServiceInputAToZ(serviceName, pathDescription);
+ ServicePathInputData servicePathInputDataZtoA =
+ ModelMappingUtils.rendererCreateServiceInputZToA(serviceName, pathDescription);
+ // OLM turn down power
+ try {
+ LOG.debug("Turning down power on A-to-Z path");
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete,
+ input.getServiceName(), RpcStatusEx.Pending, "Turning down power on A-to-Z path");
+ ServicePowerTurndownOutput atozPowerTurndownOutput = olmPowerTurndown(servicePathInputDataAtoZ);
+ // TODO add some flag rather than string
+ if (FAILED.equals(atozPowerTurndownOutput.getResult())) {
+ LOG.error("Service power turndown failed on A-to-Z path for service {}!", serviceName);
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete,
+ input.getServiceName(), RpcStatusEx.Failed,
+ "Service power turndown failed on A-to-Z path for service");
+ return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED,
+ OPERATION_FAILED);
+ }
+ LOG.debug("Turning down power on Z-to-A path");
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete, input.getServiceName(),
+ RpcStatusEx.Pending, "Turning down power on Z-to-A path");
+ ServicePowerTurndownOutput ztoaPowerTurndownOutput = olmPowerTurndown(servicePathInputDataZtoA);
+ // TODO add some flag rather than string
+ if (FAILED.equals(ztoaPowerTurndownOutput.getResult())) {
+ LOG.error("Service power turndown failed on Z-to-A path for service {}!", serviceName);
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete,
+ input.getServiceName(), RpcStatusEx.Failed,
+ "Service power turndown failed on Z-to-A path for service");
+ return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED,
+ OPERATION_FAILED);
+ }
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Error while turning down power!", e);
+ return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED,
+ OPERATION_FAILED);
+ }
+ // delete service path with renderer
+ LOG.debug("Deleting service path via renderer");
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete, input.getServiceName(),
+ RpcStatusEx.Pending, "Deleting service path via renderer");
+ deviceRenderer.deleteServicePath(servicePathInputDataAtoZ.getServicePathInput());
+ deviceRenderer.deleteServicePath(servicePathInputDataZtoA.getServicePathInput());
+ networkModelWavelengthService.freeWavelengths(pathDescription);
+ sendNotifications(ServicePathNotificationTypes.ServiceDelete, input.getServiceName(),
+ RpcStatusEx.Successful, OPERATION_SUCCESSFUL);
+ return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_OK, OPERATION_SUCCESSFUL);