X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=servicehandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fservicehandler%2Fimpl%2FServicehandlerImpl.java;h=4852cc6bea44d528bfa3047acd070696dd4b3755;hb=cb8ebd04e8e896faf9f2157ca182939191dd7ea2;hp=9d4482b5b4365eb81e296ba9c3ef3c7bc3dfc210;hpb=af8abb98d3ad0da091ff30bc7abafbe6af7ae57e;p=transportpce.git diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java index 9d4482b5b..4852cc6be 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/impl/ServicehandlerImpl.java @@ -17,11 +17,11 @@ import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.transportpce.common.OperationResult; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.pce.service.PathComputationService; -import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService; import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations; import org.opendaylight.transportpce.servicehandler.DowngradeConstraints; import org.opendaylight.transportpce.servicehandler.ModelMappingUtils; import org.opendaylight.transportpce.servicehandler.ServiceInput; +import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelListenerImpl; import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl; import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl; import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper; @@ -91,8 +91,14 @@ import org.slf4j.LoggerFactory; * Top level service interface providing main OpenROADM controller services. */ public class ServicehandlerImpl implements OrgOpenroadmServiceService { - private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerImpl.class); + private static final String TEMP_SERVICE_CREATE_MSG = "tempServiceCreate: {}"; + private static final String TEMP_SERVICE_DELETE_MSG = "tempServiceDelete: {}"; + private static final String SERVICE_RESTORATION_MSG = "serviceRestoration: {}"; + private static final String SERVICE_RECONFIGURE_MSG = "serviceReconfigure: {}"; + private static final String SERVICE_FEASABILITY_CHECK_MSG = "serviceFeasabilityCheck: {}"; + private static final String SERVICE_DELETE_MSG = "serviceDelete: {}"; + private static final String SERVICE_CREATE_MSG = "serviceCreate: {}"; private DataBroker db; private ServiceDataStoreOperations serviceDataStoreOperations; @@ -100,13 +106,14 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { private RendererServiceWrapper rendererServiceWrapper; private PceListenerImpl pceListenerImpl; private RendererListenerImpl rendererListenerImpl; + private NetworkModelListenerImpl networkModelListenerImpl; //TODO: remove private request fields as they are in global scope public ServicehandlerImpl(DataBroker databroker, PathComputationService pathComputationService, RendererServiceOperations rendererServiceOperations, NotificationPublishService notificationPublishService, PceListenerImpl pceListenerImpl, RendererListenerImpl rendererListenerImpl, - NetworkModelWavelengthService networkModelWavelengthService) { + NetworkModelListenerImpl networkModelListenerImpl) { this.db = databroker; this.serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(this.db); this.serviceDataStoreOperations.initialize(); @@ -114,6 +121,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.rendererServiceWrapper = new RendererServiceWrapper(rendererServiceOperations, notificationPublishService); this.pceListenerImpl = pceListenerImpl; this.rendererListenerImpl = rendererListenerImpl; + this.networkModelListenerImpl = networkModelListenerImpl; } @@ -158,7 +166,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest( new ServiceInput(input), RpcActions.ServiceCreate); if (! validationResult.isSuccess()) { - LOG.warn("serviceCreate: {}", LogMessages.ABORT_VALID_FAILED); + LOG.warn(SERVICE_CREATE_MSG, LogMessages.ABORT_VALID_FAILED); return ModelMappingUtils.createCreateServiceReply( input, ResponseCodes.FINAL_ACK_YES, validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED); @@ -168,10 +176,11 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(new ServiceInput(input)); - LOG.debug("serviceCreate: {}", LogMessages.PCE_CALLING); + this.networkModelListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations); + LOG.debug(SERVICE_CREATE_MSG, LogMessages.PCE_CALLING); PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true); if (output == null) { - LOG.warn("serviceCreate: {}", LogMessages.ABORT_PCE_FAILED); + LOG.warn(SERVICE_CREATE_MSG, LogMessages.ABORT_PCE_FAILED); return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES, LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED); } @@ -196,43 +205,37 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { input.getServiceDeleteReqInfo().getServiceName(), input.getSdncRequestHeader(), null, RpcActions.ServiceDelete, false, true); if (!serviceHandlerCheckResult.hasPassed()) { - LOG.warn("serviceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT); + LOG.warn(SERVICE_DELETE_MSG, LogMessages.ABORT_SERVICE_NON_COMPLIANT); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED); } //Check presence of service to be deleted -//TODO check if an expected bug was justifying this NPE handling -// try { - Optional service = this.serviceDataStoreOperations.getService(serviceName); -// } catch (NullPointerException e) { -// LOG.error("Something wrong when retrieving service '{}' from datastore : ", serviceName, e); -// return ModelMappingUtils.createDeleteServiceReply( -// input, ResponseCodes.FINAL_ACK_YES, -// LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED); -// } - if (!service.isPresent()) { - LOG.warn("serviceDelete: {}", LogMessages.serviceNotInDS(serviceName)); + Optional serviceOpt = this.serviceDataStoreOperations.getService(serviceName); + Services service; + if (!serviceOpt.isPresent()) { + LOG.warn(SERVICE_DELETE_MSG, LogMessages.serviceNotInDS(serviceName)); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED); } + service = serviceOpt.get(); LOG.debug("serviceDelete: Service '{}' found in datastore", serviceName); this.pceListenerImpl.setInput(new ServiceInput(input)); this.pceListenerImpl.setServiceReconfigure(false); this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(new ServiceInput(input)); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input)); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output = + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer( - serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult); + serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult, service); if (output == null) { - LOG.error("serviceDelete: {}", LogMessages.RENDERER_DELETE_FAILED); + LOG.error(SERVICE_DELETE_MSG, LogMessages.RENDERER_DELETE_FAILED); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED); @@ -254,7 +257,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(serviceInput, RpcActions.ServiceFeasibilityCheck); if (! validationResult.isSuccess()) { - LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_VALID_FAILED); + LOG.warn(SERVICE_FEASABILITY_CHECK_MSG, LogMessages.ABORT_VALID_FAILED); return ModelMappingUtils.createCreateServiceReply( input, ResponseCodes.FINAL_ACK_YES, validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED); @@ -265,10 +268,10 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(new ServiceInput(input)); - LOG.debug("serviceFeasabilityCheck: {}", LogMessages.PCE_CALLING); + LOG.debug(SERVICE_FEASABILITY_CHECK_MSG, LogMessages.PCE_CALLING); PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true); if (output == null) { - LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_PCE_FAILED); + LOG.warn(SERVICE_FEASABILITY_CHECK_MSG, LogMessages.ABORT_PCE_FAILED); return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES, LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED); } @@ -285,7 +288,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { LOG.info("RPC serviceReconfigure received for {}", serviceName); Optional servicesObject = this.serviceDataStoreOperations.getService(serviceName); if (!servicesObject.isPresent()) { - LOG.warn("serviceReconfigure: {}", LogMessages.serviceNotInDS(serviceName)); + LOG.warn(SERVICE_RECONFIGURE_MSG, LogMessages.serviceNotInDS(serviceName)); return ModelMappingUtils.createCreateServiceReply( input, LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed); @@ -294,7 +297,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { OperationResult validationResult = ServiceCreateValidation .validateServiceCreateRequest(new ServiceInput(input), RpcActions.ServiceReconfigure); if (!validationResult.isSuccess()) { - LOG.warn("serviceReconfigure: {}", LogMessages.ABORT_VALID_FAILED); + LOG.warn(SERVICE_RECONFIGURE_MSG, LogMessages.ABORT_VALID_FAILED); return ModelMappingUtils.createCreateServiceReply( input, validationResult.getResultMessage(), RpcStatus.Failed); @@ -304,14 +307,14 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(new ServiceInput(input)); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input)); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput, - ServiceNotificationTypes.ServiceDeleteResult); + ServiceNotificationTypes.ServiceDeleteResult, null); if (output == null) { - LOG.error("serviceReconfigure: {}", LogMessages.RENDERER_DELETE_FAILED); + LOG.error(SERVICE_RECONFIGURE_MSG, LogMessages.RENDERER_DELETE_FAILED); return ModelMappingUtils.createCreateServiceReply( input, LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Successful); @@ -331,7 +334,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { Optional servicesObject = this.serviceDataStoreOperations.getService(serviceName); if (!servicesObject.isPresent()) { - LOG.warn("serviceRestoration: {}", LogMessages.serviceNotInDS(serviceName)); + LOG.warn(SERVICE_RESTORATION_MSG, LogMessages.serviceNotInDS(serviceName)); return ModelMappingUtils.createRestoreServiceReply( LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed); } @@ -340,7 +343,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { State state = service.getOperationalState(); if (state == State.InService) { - LOG.error("serviceRestoration: {}", LogMessages.serviceInService(serviceName)); + LOG.error(SERVICE_RESTORATION_MSG, LogMessages.serviceInService(serviceName)); return ModelMappingUtils.createRestoreServiceReply( LogMessages.serviceInService(serviceName), RpcStatus.Failed); } @@ -384,14 +387,14 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(serviceInput); this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput( new ServiceInput(deleteInputBldr.build())); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput, - ServiceNotificationTypes.ServiceDeleteResult); + ServiceNotificationTypes.ServiceDeleteResult, null); if (output == null) { - LOG.error("serviceRestoration: {}", LogMessages.RENDERER_DELETE_FAILED); + LOG.error(SERVICE_RESTORATION_MSG, LogMessages.RENDERER_DELETE_FAILED); return ModelMappingUtils.createRestoreServiceReply( LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Failed); } @@ -450,12 +453,12 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); this.rendererListenerImpl.setServiceInput(serviceInput); this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput( new ServiceInput(deleteInputBldr.build())); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017 + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125 .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput, - ServiceNotificationTypes.ServiceDeleteResult); + ServiceNotificationTypes.ServiceDeleteResult, null); if (output == null) { LOG.error("serviceReroute: {}", LogMessages.RENDERER_DELETE_FAILED); return ModelMappingUtils.createRerouteServiceReply( @@ -502,7 +505,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { commonId, null, null, RpcActions.ServiceDelete, false, false ); if (!serviceHandlerCheckResult.hasPassed()) { - LOG.warn("tempServiceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT); + LOG.warn(TEMP_SERVICE_DELETE_MSG, LogMessages.ABORT_SERVICE_NON_COMPLIANT); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED); @@ -510,19 +513,11 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { //Check presence of service to be deleted LOG.debug("service common-id '{}' is compliant", commonId); -//TODO check if an expected bug was justifying this NPE handling -// try { Optional service = this.serviceDataStoreOperations.getTempService(commonId); -// } catch (NullPointerException e) { -// LOG.info("failed to get service '{}' from datastore : ", commonId, e); -// return ModelMappingUtils.createDeleteServiceReply( -// input, ResponseCodes.FINAL_ACK_YES, -// LogMessages.serviceNotInDS(CommonId), ResponseCodes.RESPONSE_FAILED); -// } if (!service.isPresent()) { - LOG.error("tempServiceDelete: {}", LogMessages.serviceNotInDS(commonId)); + LOG.error(TEMP_SERVICE_DELETE_MSG, LogMessages.serviceNotInDS(commonId)); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.serviceNotInDS(commonId), ResponseCodes.RESPONSE_FAILED); @@ -535,10 +530,10 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { 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 = + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev201125.ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult); if (output == null) { - LOG.error("tempServiceDelete: {}", LogMessages.RENDERER_DELETE_FAILED); + LOG.error(TEMP_SERVICE_DELETE_MSG, LogMessages.RENDERER_DELETE_FAILED); return ModelMappingUtils.createDeleteServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED); @@ -557,14 +552,14 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest( new ServiceInput(input), RpcActions.TempServiceCreate); if (! validationResult.isSuccess()) { - LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_VALID_FAILED); + LOG.warn(TEMP_SERVICE_CREATE_MSG, LogMessages.ABORT_VALID_FAILED); return ModelMappingUtils.createCreateServiceReply( input, ResponseCodes.FINAL_ACK_YES, validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED); } // Starting service create operation - LOG.debug("tempServiceCreate: {}", LogMessages.PCE_CALLING); + LOG.debug(TEMP_SERVICE_CREATE_MSG, LogMessages.PCE_CALLING); this.pceListenerImpl.setInput(new ServiceInput(input)); this.pceListenerImpl.setServiceReconfigure(false); this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations); @@ -574,7 +569,7 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { this.rendererListenerImpl.setTempService(true); PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true); if (output == null) { - LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_PCE_FAILED); + LOG.warn(TEMP_SERVICE_CREATE_MSG, LogMessages.ABORT_PCE_FAILED); return ModelMappingUtils.createCreateServiceReply( input, ResponseCodes.FINAL_ACK_YES, LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);