X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=servicehandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fservicehandler%2Fservice%2FPCEServiceWrapper.java;h=98cccf641acbf176f14d6da0268e2ed9db71d441;hb=a07392226a2e30930323959a5f6925812f5192ae;hp=9903ad6005c6f1d21136880ac5f012a86f39a886;hpb=9e6df3806dd3baf949ee9cedf5a714895266e6ea;p=transportpce.git diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/PCEServiceWrapper.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/PCEServiceWrapper.java index 9903ad600..98cccf641 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/PCEServiceWrapper.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/PCEServiceWrapper.java @@ -12,22 +12,20 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; - import java.util.concurrent.Executors; - import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.pce.service.PathComputationService; import org.opendaylight.transportpce.servicehandler.MappingConstraints; import org.opendaylight.transportpce.servicehandler.ModelMappingUtils; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.CancelResourceReserveInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.CancelResourceReserveInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.CancelResourceReserveOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.CancelResourceReserveOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.CancelResourceReserveOutputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutputBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev171017.ServiceRpcResultSh; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.servicehandler.rev171017.ServiceRpcResultShBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceEndpoint; @@ -41,15 +39,19 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempSer import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraints; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.RpcStatusEx; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.response.parameters.sp.ResponseParameters; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.response.parameters.sp.ResponseParametersBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev191009.service.handler.header.ServiceHandlerHeaderBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.RpcStatusEx; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.handler.header.ServiceHandlerHeaderBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PCEServiceWrapper { + private static final String NOTIFICATION_OFFER_REJECTED_MSG = "notification offer rejected : "; + + private static final String PERFORMING_PCE_MSG = "performing PCE ..."; + private static final Logger LOG = LoggerFactory.getLogger(PCEServiceWrapper.class); private final PathComputationService pathComputationService; @@ -65,7 +67,7 @@ public class PCEServiceWrapper { } public PathComputationRequestOutput performPCE(ServiceCreateInput serviceCreateInput, boolean reserveResource) { - LOG.info("performing PCE ..."); + LOG.info(PERFORMING_PCE_MSG); if (validateParams(serviceCreateInput.getServiceName(), serviceCreateInput.getSdncRequestHeader())) { return performPCE(serviceCreateInput.getHardConstraints(), serviceCreateInput.getSoftConstraints(), serviceCreateInput.getServiceName(), serviceCreateInput.getSdncRequestHeader(), @@ -78,7 +80,7 @@ public class PCEServiceWrapper { public PathComputationRequestOutput performPCE(TempServiceCreateInput tempServiceCreateInput, boolean reserveResource) { - LOG.info("performing PCE ..."); + LOG.info(PERFORMING_PCE_MSG); if (validateParams(tempServiceCreateInput.getCommonId(), tempServiceCreateInput.getSdncRequestHeader())) { return performPCE(tempServiceCreateInput.getHardConstraints(), tempServiceCreateInput.getSoftConstraints(), tempServiceCreateInput.getCommonId(), tempServiceCreateInput.getSdncRequestHeader(), @@ -91,7 +93,7 @@ public class PCEServiceWrapper { public PathComputationRequestOutput performPCE(ServiceFeasibilityCheckInput serviceFeasibilityCheckInput, boolean reserveResource) { - LOG.info("performing PCE ..."); + LOG.info(PERFORMING_PCE_MSG); if (validateParams(serviceFeasibilityCheckInput.getCommonId(), serviceFeasibilityCheckInput.getSdncRequestHeader())) { return performPCE(serviceFeasibilityCheckInput.getHardConstraints(), @@ -118,55 +120,10 @@ public class PCEServiceWrapper { try { notificationPublishService.putNotification(notification); } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); } - FutureCallback pceCallback = new FutureCallback() { - String message = ""; - ServiceRpcResultSh notification = null; - - @Override - public void onSuccess(PathComputationRequestOutput response) { - if (response != null) { - /** - * If PCE reply is received before timer expiration with a positive result, a - * service is created with admin and operational status 'down'. - */ - message = "PCE replied to PCR Request !"; - LOG.info("PCE replied to PCR Request : {}", response); - notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) - .setServiceName(serviceName) - .setStatus(RpcStatusEx.Successful).setStatusMessage(message).build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } else { - message = "PCE failed "; - notification = new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName("") - .setStatus(RpcStatusEx.Failed).setStatusMessage(message).build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } - } - - @Override - public void onFailure(Throwable arg0) { - LOG.error("Path not calculated.."); - notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) - .setServiceName(serviceName) - .setStatus(RpcStatusEx.Failed).setStatusMessage("PCR Request failed : " + arg0.getMessage()) - .build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } - }; + FutureCallback pceCallback = + new PathComputationRequestOutputCallback(notifType, serviceName); PathComputationRequestInput pathComputationRequestInput = createPceRequestInput(serviceName, sdncRequestHeader, mappingConstraints.getServicePathHardConstraints(), mappingConstraints.getServicePathSoftConstraints(), reserveResource, serviceAEnd, serviceZEnd); @@ -235,55 +192,10 @@ public class PCEServiceWrapper { try { notificationPublishService.putNotification(notification); } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); } - FutureCallback pceCallback = new FutureCallback() { - - String message = ""; - ServiceRpcResultSh notification = null; - - @Override - public void onSuccess(CancelResourceReserveOutput response) { - if (response != null) { - /** - * If PCE reply is received before timer expiration with a positive result, a - * service is created with admin and operational status 'down'. - */ - message = "PCE replied to CRR Request !"; - LOG.info("PCE replied to CRR Request : {}", response); - notification = - new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName(serviceName) - .setStatus(RpcStatusEx.Successful).setStatusMessage(message).build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } else { - message = "PCE failed "; - notification = new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName("") - .setStatus(RpcStatusEx.Failed).setStatusMessage(message).build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } - } - - @Override - public void onFailure(Throwable arg0) { - LOG.error("Cancel resource failed !"); - notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) - .setServiceName(serviceName).setStatus(RpcStatusEx.Failed) - .setStatusMessage("CRR Request failed : " + arg0.getMessage()).build(); - try { - notificationPublishService.putNotification(notification); - } catch (InterruptedException e) { - LOG.info("notification offer rejected : ", e); - } - } - }; + FutureCallback pceCallback = + new CancelResourceReserveOutputFutureCallback(notifType, serviceName); CancelResourceReserveInput cancelResourceReserveInput = mappingCancelResourceReserve(serviceName, null); ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder(); if (cancelResourceReserveInput != null) { @@ -330,4 +242,114 @@ public class PCEServiceWrapper { private static boolean checkString(String value) { return ((value != null) && (value.compareTo("") != 0)); } + + private final class CancelResourceReserveOutputFutureCallback + implements FutureCallback { + private final ServiceNotificationTypes notifType; + private final String serviceName; + String message = ""; + ServiceRpcResultSh notification = null; + + private CancelResourceReserveOutputFutureCallback(ServiceNotificationTypes notifType, String serviceName) { + this.notifType = notifType; + this.serviceName = serviceName; + } + + @Override + public void onSuccess(CancelResourceReserveOutput response) { + if (response != null) { + /** + * If PCE reply is received before timer expiration with a positive result, a + * service is created with admin and operational status 'down'. + */ + message = "PCE replied to CRR Request !"; + LOG.info("PCE replied to CRR Request : {}", response); + notification = + new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName(serviceName) + .setStatus(RpcStatusEx.Successful).setStatusMessage(message).build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } else { + message = "PCE failed "; + notification = new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName("") + .setStatus(RpcStatusEx.Failed).setStatusMessage(message).build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } + } + + @Override + public void onFailure(Throwable arg0) { + LOG.error("Cancel resource failed !"); + notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) + .setServiceName(serviceName).setStatus(RpcStatusEx.Failed) + .setStatusMessage("CRR Request failed : " + arg0.getMessage()).build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } + } + + private final class PathComputationRequestOutputCallback implements FutureCallback { + private final ServiceNotificationTypes notifType; + private final String serviceName; + String message = ""; + ServiceRpcResultSh notification = null; + + private PathComputationRequestOutputCallback(ServiceNotificationTypes notifType, String serviceName) { + this.notifType = notifType; + this.serviceName = serviceName; + } + + @Override + public void onSuccess(PathComputationRequestOutput response) { + if (response != null) { + /** + * If PCE reply is received before timer expiration with a positive result, a + * service is created with admin and operational status 'down'. + */ + message = "PCE replied to PCR Request !"; + LOG.info("PCE replied to PCR Request : {}", response); + notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) + .setServiceName(serviceName) + .setStatus(RpcStatusEx.Successful).setStatusMessage(message).build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } else { + message = "PCE failed "; + notification = new ServiceRpcResultShBuilder().setNotificationType(notifType).setServiceName("") + .setStatus(RpcStatusEx.Failed).setStatusMessage(message).build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } + } + + @Override + public void onFailure(Throwable arg0) { + LOG.error("Path not calculated.."); + notification = new ServiceRpcResultShBuilder().setNotificationType(notifType) + .setServiceName(serviceName) + .setStatus(RpcStatusEx.Failed).setStatusMessage("PCR Request failed : " + arg0.getMessage()) + .build(); + try { + notificationPublishService.putNotification(notification); + } catch (InterruptedException e) { + LOG.info(NOTIFICATION_OFFER_REJECTED_MSG, e); + } + } + } }