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=e6793094dfc6ac2512c7da5dc3d48ded898ccece;hb=30a7633eb11290b9fc0da5116fb9f6bec50710cc;hp=7d3d4f9edb7bcfde39b2cdc32d83bfd4100a121a;hpb=924a03f6d2ca5875c2726f3976bd0cff440daea3;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 7d3d4f9ed..e6793094d 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 @@ -19,15 +19,19 @@ import org.opendaylight.transportpce.common.OperationResult; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.pce.service.PathComputationService; import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations; +import org.opendaylight.transportpce.servicehandler.CatalogInput; import org.opendaylight.transportpce.servicehandler.DowngradeConstraints; import org.opendaylight.transportpce.servicehandler.ModelMappingUtils; import org.opendaylight.transportpce.servicehandler.ServiceInput; +import org.opendaylight.transportpce.servicehandler.catalog.CatalogDataStoreOperations; +import org.opendaylight.transportpce.servicehandler.catalog.CatalogMapper; 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; import org.opendaylight.transportpce.servicehandler.service.RendererServiceWrapper; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations; +import org.opendaylight.transportpce.servicehandler.validation.CatalogValidation; import org.opendaylight.transportpce.servicehandler.validation.ServiceCreateValidation; import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult; import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck; @@ -39,6 +43,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev2 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommon; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.sdnc.request.header.SdncRequestHeaderBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; +import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.OpenroadmOperationalModes; +import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.SpecificOperationalModes; import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.routing.constraints.HardConstraints; import org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.routing.constraints.SoftConstraints; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput; @@ -135,6 +141,8 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { private static final String SERVICE_FEASIBILITY_CHECK_MSG = "serviceFeasibilityCheck: {}"; private static final String SERVICE_DELETE_MSG = "serviceDelete: {}"; private static final String SERVICE_CREATE_MSG = "serviceCreate: {}"; + private static final String ADD_OR_TO_CATALOG_MSG = "addORToCatalog: {}"; + private static final String ADD_SPECIFIC_TO_CATALOG_MSG = "addSpecificToCatalog: {}"; private DataBroker db; private ServiceDataStoreOperations serviceDataStoreOperations; @@ -144,14 +152,17 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { private RendererListenerImpl rendererListenerImpl; private NetworkModelListenerImpl networkModelListenerImpl; private NotificationPublishService notificationPublishService; + private CatalogDataStoreOperations catalogDataStoreOperations; //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, - NetworkModelListenerImpl networkModelListenerImpl, ServiceDataStoreOperations serviceDataStoreOperations) { + NetworkModelListenerImpl networkModelListenerImpl, ServiceDataStoreOperations serviceDataStoreOperations, + CatalogDataStoreOperations catalogDataStoreOperations) { this.db = databroker; + this.catalogDataStoreOperations = catalogDataStoreOperations; this.serviceDataStoreOperations = serviceDataStoreOperations; this.pceServiceWrapper = new PCEServiceWrapper(pathComputationService, notificationPublishService); this.rendererServiceWrapper = new RendererServiceWrapper(rendererServiceOperations, notificationPublishService); @@ -172,6 +183,8 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { public static final String SERVICE_NON_COMPLIANT; public static final String RENDERER_DELETE_FAILED; public static final String ABORT_VALID_FAILED; + public static final String ABORT_OR_TO_CATALOG_FAILED; + public static final String ABORT_SPECIFIC_TO_CATALOG_FAILED; // Static blocks are generated once and spare memory. static { @@ -182,6 +195,8 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { SERVICE_NON_COMPLIANT = "non-compliant service"; RENDERER_DELETE_FAILED = "Renderer service delete failed"; ABORT_VALID_FAILED = "Aborting: validation of service create request failed"; + ABORT_OR_TO_CATALOG_FAILED = "Aborting: validation of add OR to catalog request failed"; + ABORT_SPECIFIC_TO_CATALOG_FAILED = "Aborting: validation of add Specific to catalog request failed"; } public static String serviceInDS(String serviceName) { @@ -787,17 +802,71 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { } @Override + /** + * Implementation of the RPC to set OR operational modes in the catalog of the controller. + * Semantics of the RPC is such that the information in the input replaces the full content + * of the OR operational modes catalog in the config data store. Incremental changes to the + * catalog, if required, must be done via individual PUT/POST/DELETE RESTconf APIs. + * + * @param input AddOpenroadmOperationalModesToCatalogInput to be added to Catalog + * @return Result of the request + */ public ListenableFuture> - addOpenroadmOperationalModesToCatalog(AddOpenroadmOperationalModesToCatalogInput input) { - // TODO Auto-generated method stub - return null; + addOpenroadmOperationalModesToCatalog(AddOpenroadmOperationalModesToCatalogInput input) { + + LOG.info("RPC addOpenroadmOperationalModesToCatalog in progress"); + LOG.debug(" Input openRoadm {}", input); + // Validation + OperationResult validationResult = CatalogValidation.validateORCatalogRequest( + new CatalogInput(input), RpcActions.FillCatalogWithOrOperationalModes); + if (! validationResult.isSuccess()) { + LOG.warn(ADD_OR_TO_CATALOG_MSG, LogMessages.ABORT_OR_TO_CATALOG_FAILED); + return ModelMappingUtils.addOpenroadmServiceReply( + input, ResponseCodes.FINAL_ACK_YES, + validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED); + } + LOG.info(" Request System Id {} " ,input.getSdncRequestHeader().getRequestSystemId()); + LOG.info(" Rpc Action {} " ,input.getSdncRequestHeader().getRpcAction()); + + OpenroadmOperationalModes objToSave = CatalogMapper.createORModesToSave(input); + catalogDataStoreOperations.addOpenroadmOperationalModesToCatalog(objToSave); + LOG.info("RPC addOpenroadmOperationalModesToCatalog Completed"); + return ModelMappingUtils.addOpenroadmServiceReply(input, ResponseCodes.FINAL_ACK_YES, + validationResult.getResultMessage(), ResponseCodes.RESPONSE_OK); } @Override + /** + * Implementation of the RPC to set specific operational modes in the catalog of the controller. + * Semantics of the RPC is such that the information in the input replaces the full content + * of the specific operational modes catalog in the config data store. Incremental changes to the + * catalog, if required, must be done via individual PUT/POST/DELETE RESTconf APIs. + * + * @param input AddSpecificOperationalModesToCatalogInput to be added to Catalog + * @return Result of the request + */ public ListenableFuture> addSpecificOperationalModesToCatalog( AddSpecificOperationalModesToCatalogInput input) { - // TODO Auto-generated method stub - return null; + + LOG.info("RPC addSpecificOperationalModesToCatalog in progress"); + LOG.debug(" Input openSpecificRoadm {}", input); + // Validation + OperationResult validationResult = CatalogValidation.validateSpecificCatalogRequest( + new CatalogInput(input), RpcActions.FillCatalogWithSpecificOperationalModes); + if (! validationResult.isSuccess()) { + LOG.warn(ADD_SPECIFIC_TO_CATALOG_MSG, LogMessages.ABORT_SPECIFIC_TO_CATALOG_FAILED); + return ModelMappingUtils.addSpecificOpenroadmServiceReply( + input, ResponseCodes.FINAL_ACK_YES, + validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED); + } + LOG.info(" Request System Id {} " ,input.getSdncRequestHeader().getRequestSystemId()); + LOG.info(" Rpc Action {} " ,input.getSdncRequestHeader().getRpcAction()); + + SpecificOperationalModes objToSave = CatalogMapper.createSpecificModesToSave(input); + catalogDataStoreOperations.addSpecificOperationalModesToCatalog(objToSave); + LOG.info("RPC addSpecificOperationalModesToCatalog Completed"); + return ModelMappingUtils.addSpecificOpenroadmServiceReply(input, ResponseCodes.FINAL_ACK_YES, + validationResult.getResultMessage(), ResponseCodes.RESPONSE_OK); } @Override @@ -806,3 +875,4 @@ public class ServicehandlerImpl implements OrgOpenroadmServiceService { return null; } } +