From 1b8941461b6f81f6f7b018f6fc6907d1c7d1292d Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Mon, 21 Feb 2022 14:15:16 +0100 Subject: [PATCH] Refactor style b/c of service models 10.1 update Some pieces of the current code do not follow any coherent coding style pattern. Some others still use old Java coding style patterns, mainly old patterns used before builders and setters could be cascaded. A coherent and clean coding style matters because - it eases the code maintenance and evolution - it also helps detect errors or possible optimizations For this reason, coding style issues should preferably be adressed before any in-depth modifications such as API migrations. And if not possible, at least afterwards. This is particularly true with the YANG models API used here. They generate long namespaces and long builders/setters structures that can quickly burden the code and complicate its reading or analysis. As a consequence, the style of some pieces of code was reviewed here to - correct indentations - rework LF positions - fix split NS and revision dates - add ternary operator where it makes senses - rearrange and cascade builders and setters Once that done, some optimizations have been proposed on the fly to: - remove some intermediate variables that are not needed - remove related imports no more used - add imports to avoid to use long NS in code blocks - etc Finally add TODO comments on few places that might need to be reworked. https://en.wikipedia.org/wiki/Programming_style JIRA: TRNSPRTPCE-586 TRNSPRTPCE-205 Signed-off-by: guillaume.lambert Change-Id: I14f5f40dfdf97fa0f32139d384db878e2932fc04 --- .../service/PathComputationServiceImpl.java | 260 +++--- .../transportpce/pce/utils/PceTestData.java | 796 +++++++++--------- .../RendererServiceOperationsImpl.java | 648 ++++++++------ .../servicehandler/ModelMappingUtils.java | 617 ++++++++------ .../listeners/PceListenerImpl.java | 79 +- .../utils/ModelMappingUtils.java | 546 ++++++------ 6 files changed, 1633 insertions(+), 1313 deletions(-) diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImpl.java b/pce/src/main/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImpl.java index 34595a970..aa598c731 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImpl.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImpl.java @@ -35,12 +35,8 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.ServicePathRpcResultBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.GnpyResponse; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.GnpyResponseBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.gnpy.response.ResponseType; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.gnpy.response.response.type.NoPathCase; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.gnpy.response.response.type.NoPathCaseBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.gnpy.response.response.type.PathCase; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.gnpy.gnpy.response.response.type.PathCaseBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.performance.PathProperties; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.performance.PathPropertiesBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.performance.path.properties.PathMetric; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.performance.path.properties.PathMetricBuilder; @@ -86,11 +82,18 @@ public class PathComputationServiceImpl implements PathComputationService { @SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "false positive, this method is used by public method cancelResourceReserve") - private void sendNotifications(ServicePathNotificationTypes servicePathNotificationTypes, String serviceName, - RpcStatusEx rpcStatusEx, String message, PathDescription pathDescription) { + private void sendNotifications( + ServicePathNotificationTypes servicePathNotificationTypes, + String serviceName, + RpcStatusEx rpcStatusEx, + String message, + PathDescription pathDescription) { ServicePathRpcResultBuilder servicePathRpcResultBuilder = - new ServicePathRpcResultBuilder().setNotificationType(servicePathNotificationTypes) - .setServiceName(serviceName).setStatus(rpcStatusEx).setStatusMessage(message); + new ServicePathRpcResultBuilder() + .setNotificationType(servicePathNotificationTypes) + .setServiceName(serviceName) + .setStatus(rpcStatusEx) + .setStatusMessage(message); if (pathDescription != null) { servicePathRpcResultBuilder.setPathDescription(pathDescription); } @@ -109,27 +112,33 @@ public class PathComputationServiceImpl implements PathComputationService { @Override public CancelResourceReserveOutput call() throws Exception { - String message = ""; - sendNotifications(ServicePathNotificationTypes.CancelResourceReserve, input.getServiceName(), - RpcStatusEx.Pending, "Service compliant, submitting cancelResourceReserve Request ...", null); + sendNotifications( + ServicePathNotificationTypes.CancelResourceReserve, + input.getServiceName(), + RpcStatusEx.Pending, + "Service compliant, submitting cancelResourceReserve Request ...", + null); PceSendingPceRPCs sendingPCE = new PceSendingPceRPCs(gnpyConsumer); sendingPCE.cancelResourceReserve(); - if (Boolean.TRUE.equals(sendingPCE.getSuccess())) { - message = "ResourceReserve cancelled !"; - } else { - message = "Cancelling ResourceReserve failed !"; - } - LOG.info("in PathComputationServiceImpl : {}",message); - sendNotifications(ServicePathNotificationTypes.CancelResourceReserve, input.getServiceName(), - RpcStatusEx.Successful, "cancel Resource Reserve successful!", null); - ConfigurationResponseCommonBuilder configurationResponseCommon = - new ConfigurationResponseCommonBuilder(); - configurationResponseCommon.setAckFinalIndicator("Yes") - .setRequestId(input.getServiceHandlerHeader().getRequestId()).setResponseCode("200") - .setResponseMessage(""); - CancelResourceReserveOutputBuilder output = new CancelResourceReserveOutputBuilder(); - output.setConfigurationResponseCommon(configurationResponseCommon.build()); - return output.build(); + LOG.info("in PathComputationServiceImpl : {}", + Boolean.TRUE.equals(sendingPCE.getSuccess()) + ? "ResourceReserve cancelled !" + : "Cancelling ResourceReserve failed !"); + sendNotifications( + ServicePathNotificationTypes.CancelResourceReserve, + input.getServiceName(), + RpcStatusEx.Successful, + "cancel Resource Reserve successful!", + null); + return new CancelResourceReserveOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator("Yes") + .setRequestId(input.getServiceHandlerHeader().getRequestId()) + .setResponseCode("200") + .setResponseMessage("") + .build()) + .build(); } }); } @@ -147,26 +156,33 @@ public class PathComputationServiceImpl implements PathComputationService { PceComplianceCheckResult check = PceComplianceCheck.check(input); if (!check.hasPassed()) { LOG.error("Path not calculated, service not compliant : {}", check.getMessage()); - sendNotifications(ServicePathNotificationTypes.PathComputationRequest, input.getServiceName(), - RpcStatusEx.Failed, "Path not calculated, service not compliant", null); - configurationResponseCommon.setAckFinalIndicator("Yes") + sendNotifications( + ServicePathNotificationTypes.PathComputationRequest, + input.getServiceName(), + RpcStatusEx.Failed, + "Path not calculated, service not compliant", + null); + configurationResponseCommon + .setAckFinalIndicator("Yes") .setRequestId(input.getServiceHandlerHeader().getRequestId()) - .setResponseCode("Path not calculated").setResponseMessage(check.getMessage()); - output.setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(null); - return output.build(); + .setResponseCode("Path not calculated") + .setResponseMessage(check.getMessage()); + return output + .setConfigurationResponseCommon(configurationResponseCommon.build()) + .setResponseParameters(null) + .build(); } - sendNotifications(ServicePathNotificationTypes.PathComputationRequest, input.getServiceName(), - RpcStatusEx.Pending, "Service compliant, submitting pathComputation Request ...", null); - String message = ""; - String responseCode = ""; - PceSendingPceRPCs sendingPCE = new PceSendingPceRPCs(input, networkTransactionService, - gnpyConsumer, portMapping); + sendNotifications( + ServicePathNotificationTypes.PathComputationRequest, + input.getServiceName(), + RpcStatusEx.Pending, + "Service compliant, submitting pathComputation Request ...", + null); + PceSendingPceRPCs sendingPCE = + new PceSendingPceRPCs(input, networkTransactionService, gnpyConsumer, portMapping); sendingPCE.pathComputation(); - message = sendingPCE.getMessage(); - responseCode = sendingPCE.getResponseCode(); - PathDescriptionBuilder path = null; - path = sendingPCE.getPathDescription(); + String message = sendingPCE.getMessage(); + String responseCode = sendingPCE.getResponseCode(); LOG.info("PCE response: {} {}", message, responseCode); //add the GNPy result @@ -181,41 +197,59 @@ public class PathComputationServiceImpl implements PathComputationService { GnpyResponse respZtoA = generateGnpyResponse(gnpyZtoA.getResponse(),"Z-to-A"); listResponse.add(respZtoA); } - output.setGnpyResponse(listResponse.stream() - .collect(Collectors.toMap(GnpyResponse::key, gnpyResponse -> gnpyResponse))); + output + .setGnpyResponse( + listResponse.stream() + .collect(Collectors.toMap(GnpyResponse::key, gnpyResponse -> gnpyResponse))); + PathDescriptionBuilder path = sendingPCE.getPathDescription(); if (Boolean.FALSE.equals(sendingPCE.getSuccess()) || (path == null)) { - configurationResponseCommon.setAckFinalIndicator("Yes") - .setRequestId(input.getServiceHandlerHeader().getRequestId()).setResponseCode(responseCode) - .setResponseMessage(message); - output.setConfigurationResponseCommon(configurationResponseCommon.build()); - sendNotifications(ServicePathNotificationTypes.PathComputationRequest, input.getServiceName(), - RpcStatusEx.Failed, "Path not calculated", null); - return output.build(); + sendNotifications( + ServicePathNotificationTypes.PathComputationRequest, + input.getServiceName(), + RpcStatusEx.Failed, + "Path not calculated", + null); + return output + .setConfigurationResponseCommon( + configurationResponseCommon + .setAckFinalIndicator("Yes") + .setRequestId(input.getServiceHandlerHeader().getRequestId()) + .setResponseCode(responseCode) + .setResponseMessage(message) + .build()) + .build(); } // Path calculator returned Success - configurationResponseCommon.setAckFinalIndicator("Yes") - .setRequestId(input.getServiceHandlerHeader().getRequestId()).setResponseCode(responseCode) - .setResponseMessage(message); PathDescription pathDescription = - new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.service.path.rpc - .result.PathDescriptionBuilder() + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118 + .service.path.rpc.result.PathDescriptionBuilder() .setAToZDirection(path.getAToZDirection()) .setZToADirection(path.getZToADirection()) .build(); - sendNotifications(ServicePathNotificationTypes.PathComputationRequest, input.getServiceName(), - RpcStatusEx.Successful, message, pathDescription); - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response - .parameters.sp.response.parameters.PathDescription pathDescription1 = + sendNotifications( + ServicePathNotificationTypes.PathComputationRequest, + input.getServiceName(), + RpcStatusEx.Successful, + message, + pathDescription); + org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .response.parameters.sp.response.parameters.PathDescription pathDescription1 = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .response.parameters.sp.response.parameters.PathDescriptionBuilder() .setAToZDirection(path.getAToZDirection()) .setZToADirection(path.getZToADirection()) .build(); - ResponseParametersBuilder rpb = new ResponseParametersBuilder().setPathDescription(pathDescription1); - output.setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(rpb.build()); - + output + .setConfigurationResponseCommon( + configurationResponseCommon + .setAckFinalIndicator("Yes") + .setRequestId(input.getServiceHandlerHeader().getRequestId()) + .setResponseCode(responseCode) + .setResponseMessage(message) + .build()) + .setResponseParameters( + new ResponseParametersBuilder().setPathDescription(pathDescription1).build()); //debug prints AToZDirection atoz = pathDescription.getAToZDirection(); if ((atoz != null) && (atoz.getAToZ() != null)) { @@ -239,44 +273,66 @@ public class PathComputationServiceImpl implements PathComputationService { } public GnpyResponse generateGnpyResponse(Response responseGnpy, String pathDir) { - ResponseType respType = null; - boolean feasible = true; - if (responseGnpy != null) { - if (responseGnpy.getResponseType() instanceof org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result - .response.response.type.NoPathCase) { - LOG.info("GNPy : path is not feasible"); - org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.NoPathCase - noPathGnpy = (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type - .NoPathCase) responseGnpy.getResponseType(); - NoPathCase noPathCase = new NoPathCaseBuilder().setNoPath(noPathGnpy.getNoPath()).build(); - respType = noPathCase; - feasible = false; - } else if (responseGnpy.getResponseType() instanceof org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result - .response.response.type.PathCase) { - LOG.info("GNPy : path is feasible"); - org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.PathCase pathCase = - (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.PathCase) - responseGnpy.getResponseType(); - List pathMetricList = - new ArrayList<>(pathCase.getPathProperties().getPathMetric().values()); - List gnpyPathMetricList = new ArrayList<>(); - for (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.generic.path.properties.path.properties.PathMetric - pathMetricGnpy : pathMetricList) { - PathMetric pathMetric = new PathMetricBuilder().setMetricType(pathMetricGnpy.getMetricType()) - .setAccumulativeValue(pathMetricGnpy.getAccumulativeValue()).build(); - gnpyPathMetricList.add(pathMetric); - } - PathProperties pathProperties = new PathPropertiesBuilder() - .setPathMetric(gnpyPathMetricList.stream() - .collect(Collectors.toMap(PathMetric::key, pathMetric -> pathMetric))) - .build(); - PathCase gnpyPathCase = new PathCaseBuilder().setPathProperties(pathProperties).build(); - respType = gnpyPathCase; - feasible = true; + if (responseGnpy == null) { + return new GnpyResponseBuilder() + .setPathDir(pathDir) + .setResponseType(null) + .setFeasibility(true) + .build(); + } + if (responseGnpy.getResponseType() + instanceof org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.NoPathCase) { + LOG.info("GNPy : path is not feasible"); + org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.NoPathCase + noPathGnpy = + (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.NoPathCase) + responseGnpy.getResponseType(); + return new GnpyResponseBuilder() + .setPathDir(pathDir) + .setResponseType( + new NoPathCaseBuilder() + .setNoPath(noPathGnpy.getNoPath()) + .build()) + .setFeasibility(false) + .build(); + } + if (responseGnpy.getResponseType() + instanceof org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.PathCase) { + LOG.info("GNPy : path is feasible"); + org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.PathCase + pathCase = + (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.result.response.response.type.PathCase) + responseGnpy.getResponseType(); + List + pathMetricList = + new ArrayList<>(pathCase.getPathProperties().getPathMetric().values()); + List gnpyPathMetricList = new ArrayList<>(); + for (org.opendaylight.yang.gen.v1.gnpy.path.rev220221.generic.path.properties.path.properties.PathMetric + pathMetricGnpy : pathMetricList) { + gnpyPathMetricList.add( + new PathMetricBuilder() + .setMetricType(pathMetricGnpy.getMetricType()) + .setAccumulativeValue(pathMetricGnpy.getAccumulativeValue()) + .build()); } + return new GnpyResponseBuilder() + .setPathDir(pathDir) + .setResponseType( + new PathCaseBuilder() + .setPathProperties( + new PathPropertiesBuilder() + .setPathMetric(gnpyPathMetricList.stream() + .collect(Collectors.toMap(PathMetric::key, pathMetric -> pathMetric))) + .build()) + .build()) + .setFeasibility(true) + .build(); } - return new GnpyResponseBuilder().setPathDir(pathDir).setResponseType(respType).setFeasibility(feasible).build(); + return new GnpyResponseBuilder() + .setPathDir(pathDir) + .setResponseType(null) + .setFeasibility(true) + .build(); } } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java index 6ace2982a..5008ca2c4 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestData.java @@ -15,9 +15,7 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestInputBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.computation.request.input.ServiceAEnd; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.computation.request.input.ServiceAEndBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.computation.request.input.ServiceZEnd; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.path.computation.request.input.ServiceZEndBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev210528.NodeIdType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ConnectionType; @@ -43,124 +41,116 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.Service import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.PceMetric; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParameters; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParametersBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.response.parameters.PathDescription; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.response.parameters.PathDescriptionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeader; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint8; - public final class PceTestData { private PceTestData() { } public static PathComputationRequestInput getEmptyPCERequest() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() - .setRequestId("request1") - .build(); return new PathComputationRequestInputBuilder() - .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId("request1") + .build()) .build(); } public static PathComputationRequestInput getEmptyPCERequestServiceNameWithRequestId() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() - .setRequestId("request1") - .build(); return new PathComputationRequestInputBuilder() .setServiceName("serviceName") - .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId("request1") + .build()) .build(); } public static PathComputationRequestInput getEmptyPCERequestServiceNameWithOutRequestId() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() - .build(); return new PathComputationRequestInputBuilder() .setServiceName("serviceName") - .setServiceHandlerHeader(serviceHandlerHeader) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().build()) .build(); } public static PathComputationRequestInput getPathComputationRequestInputWithCoRoutingOrGeneral2() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceName("service1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceFormat(ServiceFormat.ODU) .setServiceRate(Uint32.valueOf(100)) .setClli("clli11") .setNodeId("XPONDER-2-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceFormat(ServiceFormat.ODU) .setServiceRate(Uint32.valueOf(0)) .setClli("Some clli11") .setNodeId("XPONDER-1-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - return new PathComputationRequestInputBuilder() - .setServiceName("service1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setCustomerCode(Arrays.asList("Some customer-code")) .setCoRouting(new CoRoutingBuilder() .setServiceIdentifierList(Map.of( - new org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.constraints - .co.routing.ServiceIdentifierListKey("Some existing-service"), + new org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.constraints.co + .routing.ServiceIdentifierListKey("Some existing-service"), new ServiceIdentifierListBuilder().setServiceIdentifier("Some existing-service").build())) .build()) .build()) @@ -168,8 +158,8 @@ public final class PceTestData { .setCustomerCode(Arrays.asList("Some customer-code")) .setCoRouting(new CoRoutingBuilder() .setServiceIdentifierList(Map.of( - new org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.constraints - .co.routing.ServiceIdentifierListKey("Some existing-service"), + new org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constraints.rev211210.constraints.co + .routing.ServiceIdentifierListKey("Some existing-service"), new ServiceIdentifierListBuilder().setServiceIdentifier("Some existing-service").build())) .build()) .build()) @@ -177,72 +167,69 @@ public final class PceTestData { } public static PathComputationRequestInput getPathComputationRequestInputWithCoRoutingOrGeneral() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceName("service1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(100)) .setClli("clli11") .setNodeId("XPONDER-2-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(0)) .setClli("Some clli11") .setNodeId("XPONDER-1-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - return new PathComputationRequestInputBuilder() - .setServiceName("service1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setCustomerCode(Arrays.asList("Some customer-code")) .setCoRouting(new CoRoutingBuilder() @@ -261,76 +248,73 @@ public final class PceTestData { new ServiceIdentifierListBuilder().setServiceIdentifier("Some existing-service").build())) .build()) .build()) - .build(); + .build(); } public static PathComputationRequestInput getPCERequest() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceName("service1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(100)) .setClli("clli11") .setNodeId("XPONDER-2-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(0)) .setClli("Some clli11") .setNodeId("XPONDER-1-2") - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - return new PathComputationRequestInputBuilder() - .setServiceName("service1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setCustomerCode(Arrays.asList("Some customer-code")) .setCoRouting(new CoRoutingBuilder() @@ -353,25 +337,26 @@ public final class PceTestData { } public static PathComputationRequestOutput getFailedPCEResultYes() { - PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator("Yes") - .setRequestId("request1") - .setResponseCode("Path not calculated") - .setResponseMessage("Service Name is not set"); - outputBuilder.setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(null); - return outputBuilder.build(); + return new PathComputationRequestOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator("Yes") + .setRequestId("request1") + .setResponseCode("Path not calculated") + .setResponseMessage("Service Name is not set") + .build()) + .setResponseParameters(null) + .build(); } public static PathComputationRequestOutput getPCEResultOk(Long wl) { - PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder(); - ResponseParameters responseParameters = new ResponseParametersBuilder() - .setPathDescription(createPathDescription(0L, wl, 0L, wl)) - .build(); - outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse()) - .setResponseParameters(responseParameters); - return outputBuilder.build(); + return new PathComputationRequestOutputBuilder() + .setConfigurationResponseCommon(createCommonSuccessResponse()) + .setResponseParameters( + new ResponseParametersBuilder() + .setPathDescription(createPathDescription(0L, wl, 0L, wl)) + .build()) + .build(); } /** @@ -394,45 +379,40 @@ public final class PceTestData { * "pce:pce-metric": "hop-count" * } * } - * * @return input PathComputationRequestInput data */ public static PathComputationRequestInput getPCE_test1_request_54() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request 1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceName("service 1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceRate(Uint32.valueOf(0)) .setNodeId("XPONDER-1-2") - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceRate(Uint32.valueOf(0)) .setNodeId("XPONDER-3-2") - .build(); - return new PathComputationRequestInputBuilder() - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceName("service 1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .build()) .build(); } /** * Generate Data for Test 1 result 5-4. - * - * @param wl WaveLength - * @return output PathComputationRequestOutput data + * @param wl WaveLength + * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test_result_54(Long wl) { - PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder(); - ResponseParameters responseParameters = new ResponseParametersBuilder() - .setPathDescription(createPathDescription(0L, wl, 0L, wl)) - .build(); - outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse()) - .setResponseParameters(responseParameters); - return outputBuilder.build(); + return new PathComputationRequestOutputBuilder() + .setConfigurationResponseCommon(createCommonSuccessResponse()) + .setResponseParameters( + new ResponseParametersBuilder() + .setPathDescription(createPathDescription(0L, wl, 0L, wl)) + .build()) + .build(); } /** @@ -460,28 +440,24 @@ public final class PceTestData { * "pce:pce-metric": "hop-count" * } * } - * * @return input PathComputationRequestInput data */ public static PathComputationRequestInput getPCE_test2_request_54() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request 1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceName("service 1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceRate(Uint32.valueOf(0)) .setNodeId("XPONDER-1-2") - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceRate(Uint32.valueOf(0)) .setNodeId("XPONDER-3-2") - .build(); - return new PathComputationRequestInputBuilder() - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceName("service 1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setExclude(new ExcludeBuilder() .setNodeId(Arrays.asList(new NodeIdType("OpenROADM-2-2"))) @@ -498,15 +474,15 @@ public final class PceTestData { /** * Generate Data for Test 2 result 5-4. - * * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test2_result_54() { return new PathComputationRequestOutputBuilder() .setConfigurationResponseCommon(createCommonSuccessResponse()) - .setResponseParameters(new ResponseParametersBuilder() - .setPathDescription(createPathDescription(0L, 9L, 0L, 9L)) - .build()) + .setResponseParameters( + new ResponseParametersBuilder() + .setPathDescription(createPathDescription(0L, 9L, 0L, 9L)) + .build()) .build(); } @@ -535,34 +511,31 @@ public final class PceTestData { * "pce:pce-metric": "hop-count" * } * } - * * @return input PathComputationRequestInput data */ public static PathComputationRequestInput getPCE_test3_request_54() { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() + return new PathComputationRequestInputBuilder() + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() .setRequestId("request 1") - .build(); - - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + .build()) + .setServiceName("service 1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceRate(Uint32.valueOf(100)) .setServiceFormat(ServiceFormat.Ethernet) .setNodeId("XPONDER-1-2") - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceRate(Uint32.valueOf(0)) .setServiceFormat(ServiceFormat.Ethernet) .setNodeId("XPONDER-3-2") - .build(); - return new PathComputationRequestInputBuilder() - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceName("service 1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setExclude(new ExcludeBuilder() - .setNodeId(Arrays.asList(new NodeIdType("OpenROADM-2-1"), new NodeIdType("OpenROADM-2-2"))) + .setNodeId(Arrays.asList( + new NodeIdType("OpenROADM-2-1"), + new NodeIdType("OpenROADM-2-2"))) .build()) .build()) .build(); @@ -570,38 +543,36 @@ public final class PceTestData { /** * Generate Data for Test 3 result 5-4. - * * @return output PathComputationRequestOutput data */ public static PathComputationRequestOutput getPCE_test3_result_54() { - PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder(); - ResponseParameters responseParameters = new ResponseParametersBuilder() + return new PathComputationRequestOutputBuilder() + .setConfigurationResponseCommon(createCommonSuccessResponse()) + .setResponseParameters(new ResponseParametersBuilder() .setPathDescription(createPathDescription(0L, 9L, 0L, 9L)) - .build(); - outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse()) - .setResponseParameters(responseParameters); - return outputBuilder.build(); + .build()) + .build(); } public static PathComputationRequestInput getPCE_simpletopology_test1_requestSetHardAndSoftConstrains() { return new PathComputationRequestInputBuilder() - .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() - .setRequestId("request 1") - .build()) - .setServiceName("service 1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceAEnd(new ServiceAEndBuilder() - .setServiceRate(Uint32.valueOf(0)) - .setNodeId("XPONDER-1-2") - .build()) - .setServiceZEnd(new ServiceZEndBuilder() - .setServiceRate(Uint32.valueOf(0)) - .setNodeId("XPONDER-3-2") - .build()) - .setHardConstraints(new HardConstraintsBuilder().build()) - .setSoftConstraints(new SoftConstraintsBuilder().build()) - .build(); + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() + .setRequestId("request 1") + .build()) + .setServiceName("service 1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceAEnd(new ServiceAEndBuilder() + .setServiceRate(Uint32.valueOf(0)) + .setNodeId("XPONDER-1-2") + .build()) + .setServiceZEnd(new ServiceZEndBuilder() + .setServiceRate(Uint32.valueOf(0)) + .setNodeId("XPONDER-3-2") + .build()) + .setHardConstraints(new HardConstraintsBuilder().build()) + .setSoftConstraints(new SoftConstraintsBuilder().build()) + .build(); } public static PathComputationRequestInput getPCE_simpletopology_test1_request() { @@ -624,36 +595,35 @@ public final class PceTestData { } public static PathComputationRequestOutput getPCE_simpletopology_test1_result(Long wl) { - PathComputationRequestOutputBuilder outputBuilder = new PathComputationRequestOutputBuilder(); - ResponseParameters responseParameters = new ResponseParametersBuilder() + return new PathComputationRequestOutputBuilder() + .setConfigurationResponseCommon(createCommonSuccessResponse()) + .setResponseParameters(new ResponseParametersBuilder() .setPathDescription(createPathDescription(0L, wl, 0L, wl)) - .build(); - outputBuilder.setConfigurationResponseCommon(createCommonSuccessResponse()) - .setResponseParameters(responseParameters); - return outputBuilder.build(); + .build()) + .build(); } private static ConfigurationResponseCommon createCommonSuccessResponse() { - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES) - .setRequestId("request 1") - .setResponseCode(ResponseCodes.RESPONSE_OK) - .setResponseMessage("Path is calculated"); - return configurationResponseCommon.build(); + return new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES) + .setRequestId("request 1") + .setResponseCode(ResponseCodes.RESPONSE_OK) + .setResponseMessage("Path is calculated") + .build(); } private static PathDescription createPathDescription(long azRate, long azWaveLength, long zaRate, long zaWaveLength) { return new PathDescriptionBuilder() - .setAToZDirection(new AToZDirectionBuilder() - .setRate(Uint32.valueOf(azRate)) - .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength)) - .build()) - .setZToADirection(new ZToADirectionBuilder() - .setRate(Uint32.valueOf(zaRate)) - .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength)) - .build()) - .build(); + .setAToZDirection(new AToZDirectionBuilder() + .setRate(Uint32.valueOf(azRate)) + .setAToZWavelengthNumber(Uint32.valueOf(azWaveLength)) + .build()) + .setZToADirection(new ZToADirectionBuilder() + .setRate(Uint32.valueOf(zaRate)) + .setZToAWavelengthNumber(Uint32.valueOf(zaWaveLength)) + .build()) + .build(); } /** @@ -684,9 +654,8 @@ public final class PceTestData { * "pce:pce-metric": "hop-count" * } * } - * - * @param base Path Computation Request Input base - * @return input PathComputationRequestInput data + * @param base Path Computation Request Input base + * @return input PathComputationRequestInput data */ public static PathComputationRequestInput build_diversity_from_request(PathComputationRequestInput base) { return new PathComputationRequestInputBuilder(base) @@ -719,127 +688,118 @@ public final class PceTestData { } public static ServiceCreateInput buildServiceCreateInput() { - - org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input.ServiceAEnd serviceAEnd = - new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input - .ServiceAEndBuilder() - .setClli("clli") - .setServiceRate(Uint32.valueOf(0)) - .setNodeId(new NodeIdType("XPONDER-1-2")) - .setTxDirection(Map.of( - new TxDirectionKey(Uint8.ZERO), - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint - .TxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build())) - .setRxDirection(Map.of( - new RxDirectionKey(Uint8.ZERO), - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint - .RxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build())) - .build(); - - org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input.ServiceZEnd serviceZEnd = - new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input - .ServiceZEndBuilder() - .setClli("clli") - .setServiceRate(Uint32.valueOf(0)) - .setNodeId(new NodeIdType("XPONDER-3-2")) - .setTxDirection(Map.of( - new TxDirectionKey(Uint8.ZERO), - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint - .TxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build())) - .setRxDirection(Map.of( - new RxDirectionKey(Uint8.ZERO), - new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.endpoint - .RxDirectionBuilder() - .setPort(new PortBuilder().build()) - .build())) - .build(); - return new ServiceCreateInputBuilder() .setCommonId("commonId") .setConnectionType(ConnectionType.Service) .setCustomer("Customer") .setServiceName("service 1") - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) - .setSdncRequestHeader(new SdncRequestHeaderBuilder() - .setRequestId("request 1") - .build()) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input + .ServiceAEndBuilder() + .setClli("clli") + .setServiceRate(Uint32.valueOf(0)) + .setNodeId(new NodeIdType("XPONDER-1-2")) + .setTxDirection(Map.of( + new TxDirectionKey(Uint8.ZERO), + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service + .endpoint.TxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build())) + .setRxDirection(Map.of( + new RxDirectionKey(Uint8.ZERO), + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service + .endpoint.RxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build())) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.create.input + .ServiceZEndBuilder() + .setClli("clli") + .setServiceRate(Uint32.valueOf(0)) + .setNodeId(new NodeIdType("XPONDER-3-2")) + .setTxDirection(Map.of( + new TxDirectionKey(Uint8.ZERO), + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service + .endpoint.TxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build())) + .setRxDirection(Map.of( + new RxDirectionKey(Uint8.ZERO), + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service + .endpoint.RxDirectionBuilder() + .setPort(new PortBuilder().build()) + .build())) + .build()) + .setSdncRequestHeader( + new SdncRequestHeaderBuilder() + .setRequestId("request 1") + .build()) .build(); } public static PathComputationRequestInput getGnpyPCERequest(String nodeA, String nodeZ) { - ServiceHandlerHeader serviceHandlerHeader = new ServiceHandlerHeaderBuilder() - .setRequestId("request1") - .build(); - ServiceAEnd serviceAEnd = new ServiceAEndBuilder() + return new PathComputationRequestInputBuilder() + .setServiceName("service1") + .setResourceReserve(true) + .setPceRoutingMetric(PceMetric.HopCount) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("request1").build()) + .setServiceAEnd(new ServiceAEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(100)) .setClli("clli11") .setNodeId(nodeA) - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - ServiceZEnd serviceZEnd = new ServiceZEndBuilder() + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) + .setServiceZEnd(new ServiceZEndBuilder() .setServiceFormat(ServiceFormat.Ethernet) .setServiceRate(Uint32.valueOf(0)) .setClli("Some clli11") .setNodeId(nodeZ) - .setTxDirection(new TxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .setRxDirection(new RxDirectionBuilder().setPort( - new PortBuilder() - .setPortDeviceName("Some port-device-name") - .setPortType("Some port-type") - .setPortName("Some port-name") - .setPortRack("Some port-rack") - .setPortShelf("Some port-shelf") - .setPortSlot("Some port-slot") - .setPortSubSlot("Some port-sub-slot") - .build() - ).build()) - .build(); - return new PathComputationRequestInputBuilder() - .setServiceName("service1") - .setResourceReserve(true) - .setPceRoutingMetric(PceMetric.HopCount) - .setServiceHandlerHeader(serviceHandlerHeader) - .setServiceAEnd(serviceAEnd) - .setServiceZEnd(serviceZEnd) + .setTxDirection(new TxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .setRxDirection(new RxDirectionBuilder() + .setPort(new PortBuilder() + .setPortDeviceName("Some port-device-name") + .setPortType("Some port-type") + .setPortName("Some port-name") + .setPortRack("Some port-rack") + .setPortShelf("Some port-shelf") + .setPortSlot("Some port-slot") + .setPortSubSlot("Some port-sub-slot") + .build()) + .build()) + .build()) .setHardConstraints(new HardConstraintsBuilder() .setCustomerCode(Arrays.asList("Some customer-code")) .setCoRouting(new CoRoutingBuilder() diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java index 54b45f2f9..de4bbd9ce 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/RendererServiceOperationsImpl.java @@ -18,13 +18,11 @@ import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; -import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.binding.api.NotificationPublishService; -import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.ResponseCodes; import org.opendaylight.transportpce.common.StringConstants; @@ -76,7 +74,6 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930 import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev220123.OtnLinkType; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Notification; -import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -84,6 +81,7 @@ import org.slf4j.LoggerFactory; public class RendererServiceOperationsImpl implements RendererServiceOperations { + private static final Logger LOG = LoggerFactory.getLogger(RendererServiceOperationsImpl.class); private static final String DEVICE_RENDERING_ROLL_BACK_MSG = "Device rendering was not successful! Rendering will be rolled back."; private static final String OLM_ROLL_BACK_MSG = @@ -91,7 +89,6 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations private static final String RENDERING_DEVICES_A_Z_MSG = "Rendering devices A-Z"; private static final String RENDERING_DEVICES_Z_A_MSG = "Rendering device Z-A"; private static final String TURNING_DOWN_POWER_ON_A_TO_Z_PATH_MSG = "Turning down power on A-to-Z path"; - private static final Logger LOG = LoggerFactory.getLogger(RendererServiceOperationsImpl.class); private static final String FAILED = "Failed"; private static final String OPERATION_FAILED = "Operation Failed"; private static final String OPERATION_SUCCESSFUL = "Operation Successful"; @@ -125,26 +122,30 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations @Override public ServiceImplementationRequestOutput call() throws Exception { - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, input.getServiceName(), - RpcStatusEx.Pending, "Service compliant, submitting service implementation Request ..."); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Pending, + "Service compliant, submitting service implementation Request ..."); Uint32 serviceRate = getServiceRate(input); LOG.info("Using {}G rate", serviceRate); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes - mappingNode = portMapping.isNodeExist(input.getServiceAEnd().getNodeId()) + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114 + .network.Nodes mappingNode = + portMapping.isNodeExist(input.getServiceAEnd().getNodeId()) ? portMapping.getNode(input.getServiceAEnd().getNodeId()) : null; String serviceType = ServiceTypes.getServiceType( input.getServiceAEnd().getServiceFormat().getName(), serviceRate, - (mappingNode != null + mappingNode != null && NodeTypes.Xpdr.equals(mappingNode.getNodeInfo().getNodeType()) && input.getServiceAEnd().getTxDirection() != null && input.getServiceAEnd().getTxDirection().getPort() != null - && input.getServiceAEnd().getTxDirection().getPort().getPortName() != null) + && input.getServiceAEnd().getTxDirection().getPort().getPortName() != null ? portMapping.getMapping(input.getServiceAEnd().getNodeId(), input.getServiceAEnd().getTxDirection().getPort().getPortName()) : null); - + //TODO a Map might be more indicated here switch (serviceType) { case StringConstants.SERVICE_TYPE_100GE_T: case StringConstants.SERVICE_TYPE_400GE: @@ -153,8 +154,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: if (!manageServicePathCreation(input, serviceType)) { - return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } break; case StringConstants.SERVICE_TYPE_1GE: @@ -166,17 +167,17 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (!manageOtnServicePathCreation(input, serviceType, serviceRate)) { - return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } break; default: LOG.error("unsupported service-type"); - return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceImplResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } - return ModelMappingUtils.createServiceImplResponse(ResponseCodes.RESPONSE_OK, - OPERATION_SUCCESSFUL); + return ModelMappingUtils + .createServiceImplResponse(ResponseCodes.RESPONSE_OK, OPERATION_SUCCESSFUL); } }); } @@ -189,18 +190,25 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations @Override public ServiceDeleteOutput call() throws Exception { - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, - RpcStatusEx.Pending, "Service compliant, submitting service delete Request ..."); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Pending, + "Service compliant, submitting service delete Request ..."); // Obtain path description Optional< - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service - .path.PathDescription> pathDescriptionOpt = getPathDescriptionFromDatastore(serviceName); + org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.path.PathDescription> pathDescriptionOpt = + getPathDescriptionFromDatastore(serviceName); if (pathDescriptionOpt.isEmpty()) { LOG.error("Unable to get path description for service {}!", serviceName); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, - RpcStatusEx.Failed, "Unable to get path description for service"); - return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Failed, + "Unable to get path description for service"); + return ModelMappingUtils + .createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } PathDescription pathDescription = pathDescriptionOpt.get(); String serviceType = @@ -225,8 +233,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_OTUC3: case StringConstants.SERVICE_TYPE_OTUC4: if (!manageServicePathDeletion(serviceName, pathDescription, serviceType)) { - return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } break; case StringConstants.SERVICE_TYPE_1GE: @@ -238,16 +246,17 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations case StringConstants.SERVICE_TYPE_ODUC3: case StringConstants.SERVICE_TYPE_ODUC4: if (!manageOtnServicePathDeletion(serviceName, pathDescription, service, serviceType)) { - return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } break; default: LOG.error("unsupported service-type"); - return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, - OPERATION_FAILED); + return ModelMappingUtils + .createServiceDeleteResponse(ResponseCodes.RESPONSE_FAILED, OPERATION_FAILED); } - return ModelMappingUtils.createServiceDeleteResponse(ResponseCodes.RESPONSE_OK, OPERATION_SUCCESSFUL); + return ModelMappingUtils + .createServiceDeleteResponse(ResponseCodes.RESPONSE_OK, OPERATION_SUCCESSFUL); } }); } @@ -291,7 +300,9 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations input.getServiceName(), serviceName); return Uint32.ZERO; } - return formatRateMap.get(input.getServiceAEnd().getServiceFormat()).get(serviceName); + return formatRateMap + .get(input.getServiceAEnd().getServiceFormat()) + .get(serviceName); } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( @@ -300,29 +311,32 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations private ServicePowerTurndownOutput olmPowerTurndown(ServicePathInputData servicePathInputData) throws InterruptedException, ExecutionException, TimeoutException { LOG.debug(TURNING_DOWN_POWER_ON_A_TO_Z_PATH_MSG); - Future> powerTurndownFuture = this.olmService.servicePowerTurndown( - new ServicePowerTurndownInputBuilder(servicePathInputData.getServicePathInput()).build()); - return powerTurndownFuture.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS).getResult(); + return this.olmService + .servicePowerTurndown( + new ServicePowerTurndownInputBuilder(servicePathInputData.getServicePathInput()).build()) + .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS) + .getResult(); } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") private Optional getPathDescriptionFromDatastore(String serviceName) { + .service.path.PathDescription> getPathDescriptionFromDatastore(String serviceName) { InstanceIdentifier pathDescriptionIID = InstanceIdentifier.create(ServicePathList.class) + .service.path.PathDescription> pathDescriptionIID = + InstanceIdentifier.create(ServicePathList.class) .child(ServicePaths.class, new ServicePathsKey(serviceName)) .child(org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 .service.path.PathDescription.class); - ReadTransaction pathDescReadTx = this.dataBroker.newReadOnlyTransaction(); try { LOG.debug("Getting path description for service {}", serviceName); - return pathDescReadTx.read(LogicalDatastoreType.OPERATIONAL, pathDescriptionIID) + return this.dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.OPERATIONAL, pathDescriptionIID) .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { - LOG.warn("Exception while getting path description from datastore {} for service {}!", pathDescriptionIID, - serviceName, e); + LOG.warn("Exception while getting path description from datastore {} for service {}!", + pathDescriptionIID, serviceName, e); return Optional.empty(); } } @@ -330,25 +344,35 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") - private List deviceRendering(RollbackProcessor rollbackProcessor, - ServicePathInputData servicePathDataAtoZ, ServicePathInputData servicePathDataZtoA) { + private List deviceRendering( + RollbackProcessor rollbackProcessor, + ServicePathInputData servicePathDataAtoZ, + ServicePathInputData servicePathDataZtoA) { + + //TODO atozrenderingFuture & ztoarenderingFuture & renderingCombinedFuture used only once + // Do notifications & LOG.info deserve this ? LOG.info(RENDERING_DEVICES_A_Z_MSG); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - servicePathDataAtoZ.getServicePathInput().getServiceName(), RpcStatusEx.Pending, - RENDERING_DEVICES_A_Z_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + servicePathDataAtoZ.getServicePathInput().getServiceName(), + RpcStatusEx.Pending, + RENDERING_DEVICES_A_Z_MSG); ListenableFuture atozrenderingFuture = - this.executor.submit(new DeviceRenderingTask(this.deviceRenderer, servicePathDataAtoZ, - ServicePathDirection.A_TO_Z)); + this.executor.submit( + new DeviceRenderingTask(this.deviceRenderer, servicePathDataAtoZ, ServicePathDirection.A_TO_Z)); - LOG.info("Rendering devices Z-A"); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - servicePathDataZtoA.getServicePathInput().getServiceName(), RpcStatusEx.Pending, - RENDERING_DEVICES_Z_A_MSG); + LOG.info(RENDERING_DEVICES_Z_A_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + servicePathDataZtoA.getServicePathInput().getServiceName(), + RpcStatusEx.Pending, + RENDERING_DEVICES_Z_A_MSG); ListenableFuture ztoarenderingFuture = - this.executor.submit(new DeviceRenderingTask(this.deviceRenderer, servicePathDataZtoA, - ServicePathDirection.Z_TO_A)); + this.executor.submit( + new DeviceRenderingTask(this.deviceRenderer, servicePathDataZtoA, ServicePathDirection.Z_TO_A)); + ListenableFuture> renderingCombinedFuture = - Futures.allAsList(atozrenderingFuture, ztoarenderingFuture); + Futures.allAsList(atozrenderingFuture, ztoarenderingFuture); List renderingResults = new ArrayList<>(2); try { @@ -356,18 +380,25 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations renderingResults = renderingCombinedFuture.get(Timeouts.RENDERING_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn(DEVICE_RENDERING_ROLL_BACK_MSG, e); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - servicePathDataAtoZ.getServicePathInput().getServiceName(), RpcStatusEx.Pending, - DEVICE_RENDERING_ROLL_BACK_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + servicePathDataAtoZ.getServicePathInput().getServiceName(), + RpcStatusEx.Pending, + DEVICE_RENDERING_ROLL_BACK_MSG); //FIXME we can't do rollback here, because we don't have rendering results. return renderingResults; } - rollbackProcessor.addTask(new DeviceRenderingRollbackTask("AtoZDeviceTask", - ! renderingResults.get(0).isSuccess(), renderingResults.get(0).getRenderedNodeInterfaces(), + rollbackProcessor.addTask( + new DeviceRenderingRollbackTask( + "AtoZDeviceTask", + ! renderingResults.get(0).isSuccess(), + renderingResults.get(0).getRenderedNodeInterfaces(), this.deviceRenderer)); - rollbackProcessor.addTask(new DeviceRenderingRollbackTask("ZtoADeviceTask", - ! renderingResults.get(1).isSuccess(), renderingResults.get(1).getRenderedNodeInterfaces(), + rollbackProcessor.addTask( + new DeviceRenderingRollbackTask("ZtoADeviceTask", + ! renderingResults.get(1).isSuccess(), + renderingResults.get(1).getRenderedNodeInterfaces(), this.deviceRenderer)); return renderingResults; } @@ -375,20 +406,34 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") - private List otnDeviceRendering(RollbackProcessor rollbackProcessor, - OtnServicePathInput otnServicePathAtoZ, OtnServicePathInput otnServicePathZtoA, String serviceType) { + private List otnDeviceRendering( + RollbackProcessor rollbackProcessor, + OtnServicePathInput otnServicePathAtoZ, + OtnServicePathInput otnServicePathZtoA, + String serviceType) { + + //TODO atozrenderingFuture & ztoarenderingFuture & renderingCombinedFuture used only once + // Do notifications & LOG.info deserve this ? LOG.info(RENDERING_DEVICES_A_Z_MSG); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - otnServicePathAtoZ.getServiceName(), RpcStatusEx.Pending, + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + otnServicePathAtoZ.getServiceName(), + RpcStatusEx.Pending, RENDERING_DEVICES_A_Z_MSG); ListenableFuture atozrenderingFuture = - this.executor.submit(new OtnDeviceRenderingTask(this.otnDeviceRenderer, otnServicePathAtoZ, serviceType)); + this.executor.submit( + new OtnDeviceRenderingTask(this.otnDeviceRenderer, otnServicePathAtoZ, serviceType)); + LOG.info(RENDERING_DEVICES_Z_A_MSG); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - otnServicePathZtoA.getServiceName(), RpcStatusEx.Pending, + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + otnServicePathZtoA.getServiceName(), + RpcStatusEx.Pending, RENDERING_DEVICES_Z_A_MSG); ListenableFuture ztoarenderingFuture = - this.executor.submit(new OtnDeviceRenderingTask(this.otnDeviceRenderer, otnServicePathZtoA, serviceType)); + this.executor.submit( + new OtnDeviceRenderingTask(this.otnDeviceRenderer, otnServicePathZtoA, serviceType)); + ListenableFuture> renderingCombinedFuture = Futures.allAsList(atozrenderingFuture, ztoarenderingFuture); List otnRenderingResults = new ArrayList<>(2); @@ -397,16 +442,21 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations otnRenderingResults = renderingCombinedFuture.get(Timeouts.RENDERING_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn(DEVICE_RENDERING_ROLL_BACK_MSG, e); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - otnServicePathAtoZ.getServiceName(), RpcStatusEx.Pending, + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + otnServicePathAtoZ.getServiceName(), + RpcStatusEx.Pending, DEVICE_RENDERING_ROLL_BACK_MSG); //FIXME we can't do rollback here, because we don't have rendering results. return otnRenderingResults; } for (int i = 0; i < otnRenderingResults.size(); i++) { - rollbackProcessor.addTask(new DeviceRenderingRollbackTask("DeviceTask n° " + i + 1, - ! otnRenderingResults.get(i).isSuccess(), otnRenderingResults.get(i).getRenderedNodeInterfaces(), - this.deviceRenderer)); + rollbackProcessor.addTask( + new DeviceRenderingRollbackTask( + "DeviceTask n° " + i + 1, + ! otnRenderingResults.get(i).isSuccess(), + otnRenderingResults.get(i).getRenderedNodeInterfaces(), + this.deviceRenderer)); } return otnRenderingResults; } @@ -414,21 +464,34 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") - private void olmPowerSetup(RollbackProcessor rollbackProcessor, ServicePowerSetupInput powerSetupInputAtoZ, + private void olmPowerSetup( + RollbackProcessor rollbackProcessor, + ServicePowerSetupInput powerSetupInputAtoZ, ServicePowerSetupInput powerSetupInputZtoA) { + + //TODO olmPowerSetupFutureAtoZ & olmPowerSetupFutureZtoA & olmFutures used only once + // Do notifications & LOG.info deserve this ? + //TODO use constants for LOG.info & notifications common messages LOG.info("Olm power setup A-Z"); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - powerSetupInputAtoZ.getServiceName(), RpcStatusEx.Pending, "Olm power setup A-Z"); - ListenableFuture olmPowerSetupFutureAtoZ - = this.executor.submit(new OlmPowerSetupTask(this.olmService, powerSetupInputAtoZ)); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + powerSetupInputAtoZ.getServiceName(), + RpcStatusEx.Pending, + "Olm power setup A-Z"); + ListenableFuture olmPowerSetupFutureAtoZ = + this.executor.submit(new OlmPowerSetupTask(this.olmService, powerSetupInputAtoZ)); LOG.info("OLM power setup Z-A"); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - powerSetupInputAtoZ.getServiceName(), RpcStatusEx.Pending, "Olm power setup Z-A"); - ListenableFuture olmPowerSetupFutureZtoA - = this.executor.submit(new OlmPowerSetupTask(this.olmService, powerSetupInputZtoA)); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + powerSetupInputAtoZ.getServiceName(), + RpcStatusEx.Pending, + "Olm power setup Z-A"); + ListenableFuture olmPowerSetupFutureZtoA = + this.executor.submit(new OlmPowerSetupTask(this.olmService, powerSetupInputZtoA)); + ListenableFuture> olmFutures = - Futures.allAsList(olmPowerSetupFutureAtoZ, olmPowerSetupFutureZtoA); + Futures.allAsList(olmPowerSetupFutureAtoZ, olmPowerSetupFutureZtoA); List olmResults; try { @@ -436,20 +499,30 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations olmResults = olmFutures.get(Timeouts.OLM_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { LOG.warn(OLM_ROLL_BACK_MSG, e); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - powerSetupInputAtoZ.getServiceName(), RpcStatusEx.Pending, - OLM_ROLL_BACK_MSG); - rollbackProcessor.addTask(new OlmPowerSetupRollbackTask("AtoZOLMTask", true, - this.olmService, powerSetupInputAtoZ)); - rollbackProcessor.addTask(new OlmPowerSetupRollbackTask("ZtoAOLMTask", true, - this.olmService, powerSetupInputZtoA)); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + powerSetupInputAtoZ.getServiceName(), + RpcStatusEx.Pending, + OLM_ROLL_BACK_MSG); + rollbackProcessor.addTask( + new OlmPowerSetupRollbackTask("AtoZOLMTask", true, this.olmService, powerSetupInputAtoZ)); + rollbackProcessor.addTask( + new OlmPowerSetupRollbackTask("ZtoAOLMTask", true, this.olmService, powerSetupInputZtoA)); return; } - rollbackProcessor.addTask(new OlmPowerSetupRollbackTask("AtoZOLMTask", ! olmResults.get(0).isSuccess(), - this.olmService, powerSetupInputAtoZ)); - rollbackProcessor.addTask(new OlmPowerSetupRollbackTask("ZtoAOLMTask", ! olmResults.get(1).isSuccess(), - this.olmService, powerSetupInputZtoA)); + rollbackProcessor.addTask( + new OlmPowerSetupRollbackTask( + "AtoZOLMTask", + ! olmResults.get(0).isSuccess(), + this.olmService, + powerSetupInputAtoZ)); + rollbackProcessor.addTask( + new OlmPowerSetupRollbackTask( + "ZtoAOLMTask", + ! olmResults.get(1).isSuccess(), + this.olmService, + powerSetupInputZtoA)); } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( @@ -477,22 +550,24 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations } private List getMeasurements(String nodeId, String tp) { - GetPmInputBuilder getPmIpBldr = new GetPmInputBuilder() - .setNodeId(nodeId) - .setGranularity(PmGranularity._15min) - .setResourceIdentifier(new ResourceIdentifierBuilder().setResourceName(tp + "-OTU").build()) - .setResourceType(ResourceTypeEnum.Interface); - try { - Future> getPmFuture = this.olmService.getPm(getPmIpBldr.build()); - RpcResult getPmRpcResult = getPmFuture.get(); - GetPmOutput getPmOutput = getPmRpcResult.getResult(); - if ((getPmOutput != null) && (getPmOutput.getNodeId() != null)) { + GetPmOutput getPmOutput = + this.olmService + .getPm( + new GetPmInputBuilder() + .setNodeId(nodeId) + .setGranularity(PmGranularity._15min) + .setResourceIdentifier(new ResourceIdentifierBuilder().setResourceName(tp + "-OTU").build()) + .setResourceType(ResourceTypeEnum.Interface) + .build()) + .get() + .getResult(); + if ((getPmOutput == null) || (getPmOutput.getNodeId() == null)) { + LOG.warn("OLM's get PM failed for node {} and tp {}", nodeId, tp); + } else { LOG.info("successfully finished calling OLM's get PM"); return getPmOutput.getMeasurements(); // may return null - } else { - LOG.warn("OLM's get PM failed for node {} and tp {}", nodeId, tp); } } catch (ExecutionException | InterruptedException e) { @@ -518,8 +593,8 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations } } - LOG.info("Measurements: preFECCorrectedErrors = {}; FECUncorrectableBlocks = {}", preFecCorrectedErrors, - fecUncorrectableBlocks); + LOG.info("Measurements: preFECCorrectedErrors = {}; FECUncorrectableBlocks = {}", + preFecCorrectedErrors, fecUncorrectableBlocks); if (fecUncorrectableBlocks > Double.MIN_VALUE) { LOG.error("Data has uncorrectable errors, BER test failed"); @@ -537,27 +612,36 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") private boolean manageServicePathCreation(ServiceImplementationRequestInput input, String serviceType) { - ServicePathInputData servicePathInputDataAtoZ = ModelMappingUtils - .rendererCreateServiceInputAToZ(input.getServiceName(), input.getPathDescription(), Action.Create); - ServicePathInputData servicePathInputDataZtoA = ModelMappingUtils - .rendererCreateServiceInputZToA(input.getServiceName(), input.getPathDescription(), Action.Create); + ServicePathInputData servicePathInputDataAtoZ = + ModelMappingUtils + .rendererCreateServiceInputAToZ(input.getServiceName(), input.getPathDescription(), Action.Create); + ServicePathInputData servicePathInputDataZtoA = + ModelMappingUtils + .rendererCreateServiceInputZToA(input.getServiceName(), input.getPathDescription(), Action.Create); // Rollback should be same for all conditions, so creating a new one RollbackProcessor rollbackProcessor = new RollbackProcessor(); List renderingResults = deviceRendering(rollbackProcessor, servicePathInputDataAtoZ, servicePathInputDataZtoA); if (rollbackProcessor.rollbackAllIfNecessary() > 0 || renderingResults.isEmpty()) { - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Failed, DEVICE_RENDERING_ROLL_BACK_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Failed, + DEVICE_RENDERING_ROLL_BACK_MSG); return false; } - ServicePowerSetupInput olmPowerSetupInputAtoZ = - ModelMappingUtils.createServicePowerSetupInput(renderingResults.get(0).getOlmList(), input); - ServicePowerSetupInput olmPowerSetupInputZtoA = - ModelMappingUtils.createServicePowerSetupInput(renderingResults.get(1).getOlmList(), input); - olmPowerSetup(rollbackProcessor, olmPowerSetupInputAtoZ, olmPowerSetupInputZtoA); + olmPowerSetup( + rollbackProcessor, + //olmPowerSetupInputAtoZ, + ModelMappingUtils.createServicePowerSetupInput(renderingResults.get(0).getOlmList(), input), + //olmPowerSetupInputZtoA + ModelMappingUtils.createServicePowerSetupInput(renderingResults.get(1).getOlmList(), input)); if (rollbackProcessor.rollbackAllIfNecessary() > 0) { - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Failed, OLM_ROLL_BACK_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Failed, + OLM_ROLL_BACK_MSG); return false; } // run service activation test twice - once on source node and once on @@ -579,20 +663,27 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations : destNode.getSrcTp(); if (!isServiceActivated(sourceNode.getNodeId(), srcNetworkTp) - || !isServiceActivated(destNode.getNodeId(), dstNetowrkTp)) { + || !isServiceActivated(destNode.getNodeId(), dstNetowrkTp)) { rollbackProcessor.rollbackAll(); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Failed, + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Failed, "Service activation test failed."); return false; } - List otnLinkTerminationPoints = new ArrayList<>(); - renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps())); - Link notifLink = createLinkForNotif(otnLinkTerminationPoints); - - sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL, input.getPathDescription(), - notifLink, null, serviceType); + sendNotificationsWithPathDescription( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Successful, + OPERATION_SUCCESSFUL, + input.getPathDescription(), + createLinkForNotif( + renderingResults.stream() + .flatMap(rr -> rr.getOtnLinkTps().stream()) + .collect(Collectors.toList())), + null, + serviceType); return true; } @@ -608,25 +699,39 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations // OLM turn down power try { LOG.debug(TURNING_DOWN_POWER_ON_A_TO_Z_PATH_MSG); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, - RpcStatusEx.Pending, TURNING_DOWN_POWER_ON_A_TO_Z_PATH_MSG); - ServicePowerTurndownOutput atozPowerTurndownOutput = olmPowerTurndown(servicePathInputDataAtoZ); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Pending, + TURNING_DOWN_POWER_ON_A_TO_Z_PATH_MSG); // TODO add some flag rather than string - if (FAILED.equals(atozPowerTurndownOutput.getResult())) { + if (FAILED.equals( + olmPowerTurndown(servicePathInputDataAtoZ) + .getResult())) { LOG.error("Service power turndown failed on A-to-Z path for service {}!", serviceName); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Failed, - "Service power turndown failed on A-to-Z path for service"); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Failed, + "Service power turndown failed on A-to-Z path for service"); return false; } LOG.debug("Turning down power on Z-to-A path"); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Pending, - "Turning down power on Z-to-A path"); - ServicePowerTurndownOutput ztoaPowerTurndownOutput = olmPowerTurndown(servicePathInputDataZtoA); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Pending, + "Turning down power on Z-to-A path"); // TODO add some flag rather than string - if (FAILED.equals(ztoaPowerTurndownOutput.getResult())) { + if (FAILED.equals( + olmPowerTurndown(servicePathInputDataZtoA) + .getResult())) { LOG.error("Service power turndown failed on Z-to-A path for service {}!", serviceName); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Failed, - "Service power turndown failed on Z-to-A path for service"); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Failed, + "Service power turndown failed on Z-to-A path for service"); return false; } } catch (InterruptedException | ExecutionException | TimeoutException e) { @@ -635,93 +740,136 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations } // delete service path with renderer LOG.info("Deleting service path via renderer"); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Pending, - "Deleting service path via renderer"); - RollbackProcessor rollbackProcessor = new RollbackProcessor(); - List renderingResults = - deviceRendering(rollbackProcessor, servicePathInputDataAtoZ, servicePathInputDataZtoA); - List otnLinkTerminationPoints = new ArrayList<>(); - renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps())); - Link notifLink = createLinkForNotif(otnLinkTerminationPoints); - - sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete, - serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL, pathDescription, notifLink, null, serviceType); + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Pending, + "Deleting service path via renderer"); + sendNotificationsWithPathDescription( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Successful, + OPERATION_SUCCESSFUL, + pathDescription, + createLinkForNotif( + deviceRendering( + new RollbackProcessor(), + servicePathInputDataAtoZ, + servicePathInputDataZtoA) + .stream() + .flatMap(rr -> rr.getOtnLinkTps().stream()) + .collect(Collectors.toList())), + null, + serviceType); return true; } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") - private boolean manageOtnServicePathCreation(ServiceImplementationRequestInput input, String serviceType, + private boolean manageOtnServicePathCreation( + ServiceImplementationRequestInput input, + String serviceType, Uint32 serviceRate) { - // This is A-Z side - OtnServicePathInput otnServicePathInputAtoZ = ModelMappingUtils - .rendererCreateOtnServiceInput(input.getServiceName(), Action.Create, - input.getServiceAEnd().getServiceFormat().getName(), - serviceRate, - input.getPathDescription(), true); - // This is Z-A side - OtnServicePathInput otnServicePathInputZtoA = ModelMappingUtils - .rendererCreateOtnServiceInput(input.getServiceName(), Action.Create, - input.getServiceZEnd().getServiceFormat().getName(), - serviceRate, - input.getPathDescription(), false); // Rollback should be same for all conditions, so creating a new one RollbackProcessor rollbackProcessor = new RollbackProcessor(); List renderingResults = - otnDeviceRendering(rollbackProcessor, otnServicePathInputAtoZ, otnServicePathInputZtoA, serviceType); + otnDeviceRendering( + rollbackProcessor, + // This is A-Z side + ModelMappingUtils + .rendererCreateOtnServiceInput( + input.getServiceName(), + Action.Create, + input.getServiceAEnd().getServiceFormat().getName(), + serviceRate, + input.getPathDescription(), + true), + // This is Z-A side + ModelMappingUtils + .rendererCreateOtnServiceInput( + input.getServiceName(), + Action.Create, + input.getServiceZEnd().getServiceFormat().getName(), + serviceRate, + input.getPathDescription(), + false), + serviceType); if (rollbackProcessor.rollbackAllIfNecessary() > 0) { rollbackProcessor.rollbackAll(); - sendNotifications(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Failed, DEVICE_RENDERING_ROLL_BACK_MSG); + sendNotifications( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Failed, + DEVICE_RENDERING_ROLL_BACK_MSG); return false; } - List otnLinkTerminationPoints = new ArrayList<>(); - renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps())); - Link notifLink = createLinkForNotif(otnLinkTerminationPoints); - List allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(input.getPathDescription()); - List supportedLinks = getSupportedLinks(allSupportLinks, serviceType); - - sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceImplementationRequest, - input.getServiceName(), RpcStatusEx.Successful, OPERATION_SUCCESSFUL, input.getPathDescription(), - notifLink, supportedLinks, serviceType); + sendNotificationsWithPathDescription( + ServicePathNotificationTypes.ServiceImplementationRequest, + input.getServiceName(), + RpcStatusEx.Successful, OPERATION_SUCCESSFUL, + input.getPathDescription(), + createLinkForNotif( + renderingResults.stream() + .flatMap(rr -> rr.getOtnLinkTps().stream()) + .collect(Collectors.toList())), + getSupportedLinks( + ModelMappingUtils.getLinksFromServicePathDescription(input.getPathDescription()), + serviceType), + serviceType); return true; } @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value = "UPM_UNCALLED_PRIVATE_METHOD", justification = "call in call() method") - private boolean manageOtnServicePathDeletion(String serviceName, PathDescription pathDescription, - Services service, String serviceType) { - // This is A-Z side - OtnServicePathInput otnServicePathInputAtoZ = ModelMappingUtils - .rendererCreateOtnServiceInput(serviceName, Action.Delete, - service.getServiceAEnd().getServiceFormat().getName(), - service.getServiceAEnd().getServiceRate(), - pathDescription, true); - // This is Z-A side - OtnServicePathInput otnServicePathInputZtoA = ModelMappingUtils - .rendererCreateOtnServiceInput(serviceName, Action.Delete, - service.getServiceZEnd().getServiceFormat().getName(), - service.getServiceAEnd().getServiceRate(), - pathDescription, false); + private boolean manageOtnServicePathDeletion( + String serviceName, + PathDescription pathDescription, + Services service, + String serviceType) { LOG.info("Deleting otn-service path {} via renderer", serviceName); - sendNotifications(ServicePathNotificationTypes.ServiceDelete, serviceName, RpcStatusEx.Pending, + sendNotifications( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Pending, "Deleting otn-service path via renderer"); - - RollbackProcessor rollbackProcessor = new RollbackProcessor(); List renderingResults = - otnDeviceRendering(rollbackProcessor, otnServicePathInputAtoZ, otnServicePathInputZtoA, serviceType); - - List otnLinkTerminationPoints = new ArrayList<>(); - renderingResults.forEach(rr -> otnLinkTerminationPoints.addAll(rr.getOtnLinkTps())); - Link notifLink = createLinkForNotif(otnLinkTerminationPoints); - List allSupportLinks = ModelMappingUtils.getLinksFromServicePathDescription(pathDescription); - List supportedLinks = getSupportedLinks(allSupportLinks, serviceType); - - sendNotificationsWithPathDescription(ServicePathNotificationTypes.ServiceDelete, - serviceName, RpcStatusEx.Successful, OPERATION_SUCCESSFUL, pathDescription, notifLink, supportedLinks, + otnDeviceRendering( + new RollbackProcessor(), + // This is A-Z side + ModelMappingUtils + .rendererCreateOtnServiceInput( + serviceName, + Action.Delete, + service.getServiceAEnd().getServiceFormat().getName(), + service.getServiceAEnd().getServiceRate(), + pathDescription, + true), + // This is Z-A side + ModelMappingUtils + .rendererCreateOtnServiceInput( + serviceName, + Action.Delete, + service.getServiceZEnd().getServiceFormat().getName(), + service.getServiceAEnd().getServiceRate(), + pathDescription, + false), serviceType); + sendNotificationsWithPathDescription( + ServicePathNotificationTypes.ServiceDelete, + serviceName, + RpcStatusEx.Successful, + OPERATION_SUCCESSFUL, + pathDescription, + createLinkForNotif( + renderingResults.stream() + .flatMap(rr -> rr.getOtnLinkTps().stream()) + .collect(Collectors.toList())), + getSupportedLinks( + ModelMappingUtils.getLinksFromServicePathDescription(pathDescription), + serviceType), + serviceType); return true; } @@ -732,11 +880,14 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations * @param rpcStatusEx RpcStatusEx * @param message String */ - private void sendNotifications(ServicePathNotificationTypes servicePathNotificationTypes, String serviceName, - RpcStatusEx rpcStatusEx, String message) { - Notification notification = buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message, - null, null, null, null); - send(notification); + private void sendNotifications( + ServicePathNotificationTypes servicePathNotificationTypes, + String serviceName, + RpcStatusEx rpcStatusEx, + String message) { + send( + buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message, + null, null, null, null)); } /** @@ -747,12 +898,18 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations * @param message String * @param pathDescription PathDescription */ - private void sendNotificationsWithPathDescription(ServicePathNotificationTypes servicePathNotificationTypes, - String serviceName, RpcStatusEx rpcStatusEx, String message, PathDescription pathDescription, - Link notifLink, List supportedLinks, String serviceType) { - Notification notification = buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message, - pathDescription, notifLink, supportedLinks, serviceType); - send(notification); + private void sendNotificationsWithPathDescription( + ServicePathNotificationTypes servicePathNotificationTypes, + String serviceName, + RpcStatusEx rpcStatusEx, + String message, + PathDescription pathDescription, + Link notifLink, + List supportedLinks, + String serviceType) { + send( + buildNotification(servicePathNotificationTypes, serviceName, rpcStatusEx, message, + pathDescription, notifLink, supportedLinks, serviceType)); } /** @@ -764,15 +921,23 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations * @param pathDescription PathDescription * @return notification with RendererRpcResultSp type. */ - private RendererRpcResultSp buildNotification(ServicePathNotificationTypes servicePathNotificationTypes, - String serviceName, RpcStatusEx rpcStatusEx, String message, PathDescription pathDescription, - Link notifLink, List supportedLinks, String serviceType) { - RendererRpcResultSpBuilder builder = new RendererRpcResultSpBuilder() + private RendererRpcResultSp buildNotification( + ServicePathNotificationTypes servicePathNotificationTypes, + String serviceName, + RpcStatusEx rpcStatusEx, + String message, + PathDescription pathDescription, + Link notifLink, + List supportedLinks, + String serviceType) { + RendererRpcResultSpBuilder builder = + new RendererRpcResultSpBuilder() .setNotificationType(servicePathNotificationTypes).setServiceName(serviceName).setStatus(rpcStatusEx) .setStatusMessage(message) .setServiceType(serviceType); if (pathDescription != null) { - builder.setAToZDirection(pathDescription.getAToZDirection()) + builder + .setAToZDirection(pathDescription.getAToZDirection()) .setZToADirection(pathDescription.getZToADirection()); } if (notifLink != null) { @@ -799,22 +964,25 @@ public class RendererServiceOperationsImpl implements RendererServiceOperations } private Link createLinkForNotif(List otnLinkTerminationPoints) { - if (otnLinkTerminationPoints == null || otnLinkTerminationPoints.size() != 2) { - return null; - } - return new LinkBuilder() - .setATermination(new ATerminationBuilder() - .setNodeId(otnLinkTerminationPoints.get(0).getNodeId()) - .setTpId(otnLinkTerminationPoints.get(0).getTpId()) - .build()) - .setZTermination(new ZTerminationBuilder() - .setNodeId(otnLinkTerminationPoints.get(1).getNodeId()) - .setTpId(otnLinkTerminationPoints.get(1).getTpId()) - .build()) - .build(); + return + otnLinkTerminationPoints == null || otnLinkTerminationPoints.size() != 2 + ? null + : new LinkBuilder() + .setATermination( + new ATerminationBuilder() + .setNodeId(otnLinkTerminationPoints.get(0).getNodeId()) + .setTpId(otnLinkTerminationPoints.get(0).getTpId()) + .build()) + .setZTermination( + new ZTerminationBuilder() + .setNodeId(otnLinkTerminationPoints.get(1).getNodeId()) + .setTpId(otnLinkTerminationPoints.get(1).getTpId()) + .build()) + .build(); } private List getSupportedLinks(List allSupportLinks, String serviceType) { + //TODO a Map might be more indicated here switch (serviceType) { case StringConstants.SERVICE_TYPE_10GE: case StringConstants.SERVICE_TYPE_1GE: diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java index faf6d8ec6..11be1f1b5 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/ModelMappingUtils.java @@ -18,7 +18,7 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer. import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType; -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.ServiceEndpoint; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.configuration.response.common.ConfigurationResponseCommonBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.response.parameters.ResponseParametersBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState; @@ -92,66 +92,69 @@ public final class ModelMappingUtils { private ModelMappingUtils() { } - public static ServiceImplementationRequestInput createServiceImplementationRequest(ServiceInput input, + public static ServiceImplementationRequestInput createServiceImplementationRequest( + ServiceInput input, PathDescription pathDescription) { - ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder = - new ServiceImplementationRequestInputBuilder().setConnectionType(input.getConnectionType()); - if (input.isServiceReconfigure()) { - serviceImplementationRequestInputBuilder.setServiceName(input.getNewServiceName()); - } else { - serviceImplementationRequestInputBuilder.setServiceName(input.getServiceName()); - } - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation - .request.input.ServiceAEndBuilder serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight - .transportpce.renderer.rev210915.service.implementation.request.input.ServiceAEndBuilder(); - - serviceAEnd.setServiceFormat(input.getServiceAEnd().getServiceFormat()) - .setServiceRate(input.getServiceAEnd().getServiceRate()) - .setOtuServiceRate(getOtuServiceRate(input.getServiceAEnd().getOtuServiceRate())) - .setOduServiceRate(getOduServiceRate(input.getServiceAEnd().getOduServiceRate())) - .setClli(input.getServiceAEnd().getClli()) - .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(input.getServiceAEnd().getTxDirection().values().stream().findFirst().get().getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort()) - .build()); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation - .request.input.ServiceZEndBuilder serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight - .transportpce.renderer.rev210915.service.implementation.request.input.ServiceZEndBuilder(); - serviceZEnd.setServiceFormat(input.getServiceZEnd().getServiceFormat()) - .setServiceRate(input.getServiceZEnd().getServiceRate()) - .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate())) - .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate())) - .setClli(input.getServiceZEnd().getClli()) - .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort()) - .build()); - - serviceImplementationRequestInputBuilder - .setServiceAEnd(serviceAEnd.build()) - .setServiceZEnd(serviceZEnd.build()) + return new ServiceImplementationRequestInputBuilder() + .setConnectionType(input.getConnectionType()) + .setServiceName( + input.isServiceReconfigure() + ? input.getNewServiceName() + : input.getServiceName()) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceAEndBuilder() + .setServiceFormat(input.getServiceAEnd().getServiceFormat()) + .setServiceRate(input.getServiceAEnd().getServiceRate()) + .setOtuServiceRate(getOtuServiceRate(input.getServiceAEnd().getOtuServiceRate())) + .setOduServiceRate(getOduServiceRate(input.getServiceAEnd().getOduServiceRate())) + .setClli(input.getServiceAEnd().getClli()) + .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + input.getServiceAEnd().getTxDirection().values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort()) + .build()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceZEndBuilder() + .setServiceFormat(input.getServiceZEnd().getServiceFormat()) + .setServiceRate(input.getServiceZEnd().getServiceRate()) + .setOtuServiceRate(getOtuServiceRate(input.getServiceZEnd().getOtuServiceRate())) + .setOduServiceRate(getOduServiceRate(input.getServiceZEnd().getOduServiceRate())) + .setClli(input.getServiceZEnd().getClli()) + .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort()) + .build()) + .build()) .setConnectionType(input.getConnectionType()) .setServiceHandlerHeader( - new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build()); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation - .request.input.PathDescriptionBuilder pathDescBuilder = new org.opendaylight.yang.gen.v1.http.org - .opendaylight.transportpce.renderer.rev210915.service.implementation.request.input - .PathDescriptionBuilder(); - pathDescBuilder - .setAToZDirection(pathDescription.getAToZDirection()) - .setZToADirection(pathDescription.getZToADirection()); - serviceImplementationRequestInputBuilder.setPathDescription(pathDescBuilder.build()); - return serviceImplementationRequestInputBuilder.build(); + new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build()) + .setPathDescription( + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.PathDescriptionBuilder() + .setAToZDirection(pathDescription.getAToZDirection()) + .setZToADirection(pathDescription.getZToADirection()) + .build()) + .build(); } private static Class getOduServiceRate( @@ -162,6 +165,7 @@ public final class ModelMappingUtils { } String oduRate = oduServiceRate.getSimpleName(); LOG.info("ODU rate = {}", oduRate); + //TODO a Map would probably be more indicated here switch (oduRate) { case "ODU0": return ODU0.class; @@ -199,6 +203,7 @@ public final class ModelMappingUtils { } String otuRate = otuServiceRate.getSimpleName(); LOG.info("OTU rate = {}", otuRate); + //TODO a Map would probably be more indicated here switch (otuRate) { case "OTU0": return OTU0.class; @@ -224,313 +229,377 @@ public final class ModelMappingUtils { public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) { - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder() + return new ServiceDeleteInputBuilder() .setServiceName(serviceInput.getServiceName()) - .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() - .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build()); - return builder.build(); + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()) + .build()) + .build(); } public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) { - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder() + .ServiceDeleteInput createServiceDeleteInput( + ServiceRerouteInput serviceRerouteinput, + Services services) { + return new ServiceDeleteInputBuilder() .setServiceName(serviceRerouteinput.getServiceName()) - .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId( - services.getSdncRequestHeader().getRequestId()).build()); - return builder.build(); + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId(services.getSdncRequestHeader().getRequestId()) + .build()) + .build(); } public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .ServiceDeleteInput createServiceDeleteInput(ServiceRestorationInput serviceRestorationInput, - Services services) { - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder() + .ServiceDeleteInput createServiceDeleteInput( + ServiceRestorationInput serviceRestorationInput, + Services services) { + return new ServiceDeleteInputBuilder() .setServiceName(serviceRestorationInput.getServiceName()) - .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId( - services.getSdncRequestHeader().getRequestId()).build()); - return builder.build(); + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId(services.getSdncRequestHeader().getRequestId()) + .build()) + .build(); } - public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceDeleteInput - createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) { + public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .ServiceDeleteInput createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) { String serviceName = serviceReconfigureInput.getServiceName(); - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder() - .setServiceName(serviceReconfigureInput.getServiceName()) + return new ServiceDeleteInputBuilder() + .setServiceName(serviceName) .setServiceHandlerHeader( - new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build()); - return builder.build(); + new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build()) + .build(); } - public static ServiceAEnd createServiceAEnd(org.opendaylight.yang.gen.v1 - .http.org.openroadm.common.service.types.rev211210.ServiceEndpoint serviceAEnd) { - ServiceAEndBuilder serviceAEndBuilder = new ServiceAEndBuilder() + public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) { + return new ServiceAEndBuilder() .setClli(serviceAEnd.getClli()) .setNodeId(serviceAEnd.getNodeId().getValue()) .setRxDirection(createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get())) .setServiceFormat(serviceAEnd.getServiceFormat()) .setServiceRate(serviceAEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())); - return serviceAEndBuilder.build(); + .setTxDirection(createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())) + .build(); } - public static ServiceZEnd createServiceZEnd(org.opendaylight.yang.gen.v1 - .http.org.openroadm.common.service.types.rev211210.ServiceEndpoint serviceZEnd) { - ServiceZEndBuilder serviceZEndBuilder = new ServiceZEndBuilder() + public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) { + return new ServiceZEndBuilder() .setClli(serviceZEnd.getClli()) .setNodeId(serviceZEnd.getNodeId().getValue()) .setRxDirection(createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get())) .setServiceFormat(serviceZEnd.getServiceFormat()) .setServiceRate(serviceZEnd.getServiceRate()) - .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())); - return serviceZEndBuilder.build(); + .setTxDirection(createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())) + .build(); } - public static RxDirection createRxDirection(org.opendaylight.yang.gen.v1 - .http.org.openroadm.common.service.types.rev211210.service.endpoint.RxDirection rxDirection) { - RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder().setPort(rxDirection.getPort()); - return rxDirectionBuilder.build(); + public static RxDirection createRxDirection( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.endpoint.RxDirection rxDirection) { + return new RxDirectionBuilder().setPort(rxDirection.getPort()).build(); } - public static TxDirection createTxDirection(org.opendaylight.yang.gen.v1 - .http.org.openroadm.common.service.types.rev211210.service.endpoint.TxDirection txDirection) { - TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder().setPort(txDirection.getPort()); - return txDirectionBuilder.build(); + public static TxDirection createTxDirection( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.endpoint.TxDirection txDirection) { + return new TxDirectionBuilder().setPort(txDirection.getPort()).build(); } - public static ListenableFuture> createDeleteServiceReply(ServiceDeleteInput input, - String finalAck, String message, String responseCode) { - ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - builder.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - builder.setRequestId(null); - } - ConfigurationResponseCommon configurationResponseCommon = builder.build(); - ServiceDeleteOutput output = - new ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build(); - return RpcResultBuilder.success(output).buildFuture(); + public static ListenableFuture> createDeleteServiceReply( + ServiceDeleteInput input, String finalAck, String message, String responseCode) { + return RpcResultBuilder + .success( + new ServiceDeleteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .build()) + .buildFuture(); } public static ListenableFuture> createDeleteServiceReply( TempServiceDeleteInput input, String finalAck, String message, String responseCode) { - ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck) - .setResponseMessage(message) - .setResponseCode(responseCode) - .setRequestId(null); - ConfigurationResponseCommon configurationResponseCommon = builder.build(); - TempServiceDeleteOutput output = new TempServiceDeleteOutputBuilder() - .setConfigurationResponseCommon(configurationResponseCommon).build(); - return RpcResultBuilder.success(output).buildFuture(); + return RpcResultBuilder + .success( + new TempServiceDeleteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId(null) + .build()) + .build()) + .buildFuture(); } - public static ListenableFuture> createCreateServiceReply(ServiceCreateInput input, - String finalAck, String message, String responseCode) { - ResponseParametersBuilder responseParameters = new ResponseParametersBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - configurationResponseCommon.setRequestId(null); - } - ServiceCreateOutputBuilder output = - new ServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(responseParameters.build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + public static ListenableFuture> createCreateServiceReply( + ServiceCreateInput input, String finalAck, String message, String responseCode) { + return RpcResultBuilder + .success( + new ServiceCreateOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .setResponseParameters(new ResponseParametersBuilder().build()) + .build()) + .buildFuture(); } public static ListenableFuture> createCreateServiceReply( TempServiceCreateInput input, String finalAck, String message, String responseCode) { - ResponseParametersBuilder responseParameters = new ResponseParametersBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - configurationResponseCommon.setRequestId(null); - } - TempServiceCreateOutputBuilder output = - new TempServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(responseParameters.build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + return RpcResultBuilder + .success( + new TempServiceCreateOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .setResponseParameters(new ResponseParametersBuilder().build()) + .build()) + .buildFuture(); } public static ListenableFuture> createCreateServiceReply( ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) { - ResponseParametersBuilder responseParameters = new ResponseParametersBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - configurationResponseCommon.setRequestId(null); - } - ServiceFeasibilityCheckOutputBuilder output = new ServiceFeasibilityCheckOutputBuilder() - .setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(responseParameters.build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + return RpcResultBuilder + .success( + new ServiceFeasibilityCheckOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .setResponseParameters(new ResponseParametersBuilder().build()) + .build()) + .buildFuture(); } public static ListenableFuture> createCreateServiceReply( ServiceReconfigureInput input, String message) { - ServiceReconfigureOutputBuilder output = new ServiceReconfigureOutputBuilder() - .setConfigurationResponseCommon(new ConfigurationResponseCommonBuilder() - .setResponseMessage(message) - .build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + return RpcResultBuilder + .success( + new ServiceReconfigureOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setResponseMessage(message) + .build()) + .build()) + .buildFuture(); } - public static ListenableFuture> createRerouteServiceReply(ServiceRerouteInput input, - String finalAckYes, String message) { - ServiceRerouteOutputBuilder output = new ServiceRerouteOutputBuilder() - .setConfigurationResponseCommon(new ConfigurationResponseCommonBuilder() - .setResponseMessage(message) - .build()) - .setHardConstraints(null) - .setSoftConstraints(null); - return RpcResultBuilder.success(output.build()).buildFuture(); + public static ListenableFuture> createRerouteServiceReply( + ServiceRerouteInput input, String finalAckYes, String message) { + return RpcResultBuilder + .success( + new ServiceRerouteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setResponseMessage(message) + .build()) + .setHardConstraints(null) + .setSoftConstraints(null) + .build()) + .buildFuture(); } public static ListenableFuture> createRestoreServiceReply(String message) { - ServiceRestorationOutputBuilder output = new ServiceRestorationOutputBuilder() - .setConfigurationResponseCommon(new ConfigurationResponseCommonBuilder() - .setResponseMessage(message) - .build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + return RpcResultBuilder + .success( + new ServiceRestorationOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setResponseMessage(message) + .build()) + .build()) + .buildFuture(); } - public static Services mappingServices(ServiceCreateInput serviceCreateInput, + public static Services mappingServices( + ServiceCreateInput serviceCreateInput, ServiceReconfigureInput serviceReconfigureInput) { - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEnd aend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceZEnd zend = null; - ServicesBuilder service = new ServicesBuilder(); if (serviceCreateInput != null) { - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(serviceCreateInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(serviceCreateInput.getServiceZEnd()).build(); - service.setServiceName(serviceCreateInput.getServiceName()).setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(serviceCreateInput.getCommonId()) + return new ServicesBuilder() + .setServiceName(serviceCreateInput.getServiceName()) + .setAdministrativeState(AdminStates.OutOfService) + .setOperationalState(State.OutOfService) + .setCommonId(serviceCreateInput.getCommonId()) .setConnectionType(serviceCreateInput.getConnectionType()) .setCustomer(serviceCreateInput.getCustomer()) .setCustomerContact(serviceCreateInput.getCustomerContact()) .setHardConstraints(serviceCreateInput.getHardConstraints()) .setSoftConstraints(serviceCreateInput.getSoftConstraints()) .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); - } else if (serviceReconfigureInput != null) { - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd()).build(); - service.setServiceName(serviceReconfigureInput.getServiceName()) + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd()) + .build()) + .build(); + } + if (serviceReconfigureInput != null) { + return new ServicesBuilder() + .setServiceName(serviceReconfigureInput.getServiceName()) .setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(serviceReconfigureInput.getCommonId()) + .setOperationalState(State.OutOfService) + .setCommonId(serviceReconfigureInput.getCommonId()) .setConnectionType(serviceReconfigureInput.getConnectionType()) .setCustomer(serviceReconfigureInput.getCustomer()) .setCustomerContact(serviceReconfigureInput.getCustomerContact()) .setHardConstraints(serviceReconfigureInput.getHardConstraints()) .setSoftConstraints(serviceReconfigureInput.getSoftConstraints()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); - } else { - //FIXME: Because of Silicon, we cannot have empty key. - //it's this case possible ? There is a Junit test covering null - //temporary workaround as now there is a null key check done by yangtools. - //Functional review is needed - LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null"); - service.withKey(new ServicesKey("unknown")); + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd()) + .build()) + .build(); } - return service.build(); + //FIXME: Because of Silicon, we cannot have empty key. + //it's this case possible ? There is a Junit test covering null + //temporary workaround as now there is a null key check done by yangtools. + //Functional review is needed + LOG.warn("ServiceCreateInput and ServiceReconfigureInput are null"); + return new ServicesBuilder().withKey(new ServicesKey("unknown")).build(); } - public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list.Services - mappingServices(TempServiceCreateInput tempServiceCreateInput) { - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEnd aend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceZEnd zend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list - .ServicesBuilder service = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp - .service.list.ServicesBuilder(); - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build(); - service.setServiceName(tempServiceCreateInput.getCommonId()).setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(tempServiceCreateInput.getCommonId()) + public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 + .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) { + return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 + .temp.service.list.ServicesBuilder() + .setServiceName(tempServiceCreateInput.getCommonId()) + .setAdministrativeState(AdminStates.OutOfService) + .setOperationalState(State.OutOfService) + .setCommonId(tempServiceCreateInput.getCommonId()) .setConnectionType(tempServiceCreateInput.getConnectionType()) .setCustomer(tempServiceCreateInput.getCustomer()) .setCustomerContact(tempServiceCreateInput.getCustomerContact()) .setHardConstraints(tempServiceCreateInput.getHardConstraints()) .setSoftConstraints(tempServiceCreateInput.getSoftConstraints()) .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); - return service.build(); + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build()) + .build(); } public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) { - ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder(); - if (serviceInput != null) { - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceAEndBuilder serviceAEnd = - new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceAEndBuilder(); - serviceAEnd.setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat()) - .setServiceRate(serviceInput.getServiceAEnd().getServiceRate()) - .setClli(serviceInput.getServiceAEnd().getClli()) - .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(serviceInput.getServiceAEnd().getTxDirection().values().stream().findFirst().get() - .getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(serviceInput.getServiceAEnd().getRxDirection().values().stream().findFirst().get() - .getPort()) - .build()); - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceZEndBuilder serviceZEnd = - new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceZEndBuilder(); - serviceZEnd.setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat()) - .setServiceRate(serviceInput.getServiceZEnd().getServiceRate()) - .setClli(serviceInput.getServiceZEnd().getClli()) - .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(serviceInput.getServiceZEnd().getTxDirection().values().stream().findFirst().get() - .getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(serviceInput.getServiceZEnd().getRxDirection().values().stream().findFirst().get() - .getPort()) - .build()); - servicePathBuilder.setServiceAEnd(serviceAEnd.build()); - servicePathBuilder.setServiceZEnd(serviceZEnd.build()); - if (serviceInput.getHardConstraints() != null) { - servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints()); - } - if (serviceInput.getSoftConstraints() != null) { - servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints()); - } - servicePathBuilder.setServicePathName(serviceInput.getServiceName()); - servicePathBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() - .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build()); - if (output.getResponseParameters().getPathDescription() != null) { - PathDescriptionBuilder pathDescBuilder = - new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()); - servicePathBuilder.setPathDescription(pathDescBuilder.build()); - } - } else { + if (serviceInput == null) { //FIXME: Because of Silicon, we cannot have empty key. //it's this case possible ? There is a Junit test covering null //temporary workaround as now there is a null key check done by yangtools. //Functional review is needed LOG.warn("ServiceInput is null"); - servicePathBuilder.withKey(new ServicePathsKey("unknown")); + return new ServicePathsBuilder().withKey(new ServicePathsKey("unknown")).build(); } + ServicePathsBuilder servicePathBuilder = + new ServicePathsBuilder() + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.path.ServiceAEndBuilder() + .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat()) + .setServiceRate(serviceInput.getServiceAEnd().getServiceRate()) + .setClli(serviceInput.getServiceAEnd().getClli()) + .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + serviceInput.getServiceAEnd().getTxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + serviceInput.getServiceAEnd().getRxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.path.ServiceZEndBuilder() + .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat()) + .setServiceRate(serviceInput.getServiceZEnd().getServiceRate()) + .setClli(serviceInput.getServiceZEnd().getClli()) + .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + serviceInput.getServiceZEnd().getTxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + serviceInput.getServiceZEnd().getRxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .build()) + .setServicePathName(serviceInput.getServiceName()) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId(serviceInput.getSdncRequestHeader() + .getRequestId()) + .build()); + if (serviceInput.getHardConstraints() != null) { + servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints()); + } + if (serviceInput.getSoftConstraints() != null) { + servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints()); + } + + if (output.getResponseParameters().getPathDescription() != null) { + servicePathBuilder.setPathDescription( + new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build()); + } return servicePathBuilder.build(); } diff --git a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java index b94dd49e9..e936ea3ea 100644 --- a/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java +++ b/servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/listeners/PceListenerImpl.java @@ -16,7 +16,6 @@ import org.opendaylight.transportpce.servicehandler.ModelMappingUtils; import org.opendaylight.transportpce.servicehandler.ServiceInput; import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestOutput; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.PathComputationRequestOutputBuilder; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.ServicePathRpcResult; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.TransportpcePceListener; @@ -26,7 +25,6 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer. import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.list.Services; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.RpcStatusEx; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParameters; import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.response.parameters.sp.ResponseParametersBuilder; import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessService; import org.opendaylight.yang.gen.v1.nbi.notifications.rev210813.PublishNotificationProcessServiceBuilder; @@ -50,8 +48,10 @@ public class PceListenerImpl implements TransportpcePceListener { private Boolean serviceFeasiblity; private NotificationPublishService notificationPublishService; - public PceListenerImpl(RendererServiceOperations rendererServiceOperations, - PathComputationService pathComputationService, NotificationPublishService notificationPublishService, + public PceListenerImpl( + RendererServiceOperations rendererServiceOperations, + PathComputationService pathComputationService, + NotificationPublishService notificationPublishService, ServiceDataStoreOperations serviceDataStoreOperations) { this.rendererServiceOperations = rendererServiceOperations; this.pceServiceWrapper = new PCEServiceWrapper(pathComputationService, notificationPublishService); @@ -98,7 +98,8 @@ public class PceListenerImpl implements TransportpcePceListener { LOG.error("'PathDescription' parameter is null "); return; } - PathDescription pathDescription = new PathDescriptionBuilder() + PathDescription pathDescription = + new PathDescriptionBuilder() .setAToZDirection(servicePathRpcResult.getPathDescription().getAToZDirection()) .setZToADirection(servicePathRpcResult.getPathDescription().getZToADirection()) .build(); @@ -123,20 +124,26 @@ public class PceListenerImpl implements TransportpcePceListener { LOG.error("Service not created in datastore !"); } } - ResponseParameters responseParameters = new ResponseParametersBuilder() - .setPathDescription(new org.opendaylight.yang.gen.v1.http - .org.transportpce.b.c._interface.service.types.rev220118 - .response.parameters.sp.response.parameters.PathDescriptionBuilder(pathDescription).build()) - .build(); - PathComputationRequestOutput pceResponse = new PathComputationRequestOutputBuilder() - .setResponseParameters(responseParameters).build(); - OperationResult operationServicePathSaveResult = this.serviceDataStoreOperations - .createServicePath(input, pceResponse); - if (!operationServicePathSaveResult.isSuccess()) { + if (!this.serviceDataStoreOperations + .createServicePath( + input, + //pceResponse + new PathComputationRequestOutputBuilder() + .setResponseParameters( + new ResponseParametersBuilder() + .setPathDescription( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .response.parameters.sp.response.parameters + .PathDescriptionBuilder(pathDescription) + .build()) + .build()) + .build()) + .isSuccess()) { LOG.error("Service Path not created in datastore !"); } - ServiceImplementationRequestInput serviceImplementationRequest = ModelMappingUtils - .createServiceImplementationRequest(input, pathDescription); + ServiceImplementationRequestInput serviceImplementationRequest = + ModelMappingUtils.createServiceImplementationRequest(input, pathDescription); LOG.info("Sending serviceImplementation request : {}", serviceImplementationRequest); this.rendererServiceOperations.serviceImplementation(serviceImplementationRequest); } @@ -150,6 +157,7 @@ public class PceListenerImpl implements TransportpcePceListener { PublishNotificationProcessService nbiNotification = getPublishNotificationProcessService(notification); PublishNotificationProcessServiceBuilder publishNotificationProcessServiceBuilder = new PublishNotificationProcessServiceBuilder(nbiNotification); + //TODO is it worth to instantiate the 2 variables above if status is 'Pending' or 'Successful' ? switch (servicePathRpcResult.getStatus()) { case Failed: LOG.error("PCE path computation failed !"); @@ -178,19 +186,20 @@ public class PceListenerImpl implements TransportpcePceListener { } private PublishNotificationProcessService getPublishNotificationProcessService(ServicePathRpcResult notification) { - PublishNotificationProcessServiceBuilder nbiNotificationBuilder = - new PublishNotificationProcessServiceBuilder(); - if (input != null) { - nbiNotificationBuilder.setServiceName(input.getServiceName()) - .setServiceAEnd(new ServiceAEndBuilder(input.getServiceAEnd()).build()) - .setServiceZEnd(new ServiceZEndBuilder(input.getServiceZEnd()).build()) - .setCommonId(input.getCommonId()) - .setConnectionType(input.getConnectionType()); - } else { - nbiNotificationBuilder.setServiceName(notification.getServiceName()); + if (input == null) { + return new PublishNotificationProcessServiceBuilder() + .setServiceName(notification.getServiceName()) + .setPublisherName(PUBLISHER) + .build(); } - nbiNotificationBuilder.setPublisherName(PUBLISHER); - return nbiNotificationBuilder.build(); + return new PublishNotificationProcessServiceBuilder() + .setServiceName(input.getServiceName()) + .setServiceAEnd(new ServiceAEndBuilder(input.getServiceAEnd()).build()) + .setServiceZEnd(new ServiceZEndBuilder(input.getServiceZEnd()).build()) + .setCommonId(input.getCommonId()) + .setConnectionType(input.getConnectionType()) + .setPublisherName(PUBLISHER) + .build(); } /** @@ -206,7 +215,8 @@ public class PceListenerImpl implements TransportpcePceListener { return; } Services service = serviceDataStoreOperations.getService(input.getServiceName()).get(); - PublishNotificationProcessServiceBuilder nbiNotificationBuilder = new PublishNotificationProcessServiceBuilder() + PublishNotificationProcessServiceBuilder nbiNotificationBuilder = + new PublishNotificationProcessServiceBuilder() .setServiceName(service.getServiceName()) .setServiceAEnd(new ServiceAEndBuilder(service.getServiceAEnd()).build()) .setServiceZEnd(new ServiceZEndBuilder(service.getServiceZEnd()).build()) @@ -215,7 +225,8 @@ public class PceListenerImpl implements TransportpcePceListener { .setPublisherName(PUBLISHER); if (servicePathRpcResult.getStatus() == RpcStatusEx.Failed) { LOG.info("PCE cancel resource failed !"); - sendNbiNotification(nbiNotificationBuilder + sendNbiNotification( + nbiNotificationBuilder .setResponseFailed("PCE cancel resource failed !") .setMessage("ServiceDelete request failed ...") .setOperationalState(service.getOperationalState()) @@ -237,14 +248,16 @@ public class PceListenerImpl implements TransportpcePceListener { deleteServiceOperationResult = this.serviceDataStoreOperations.deleteService(input.getServiceName()); } if (deleteServiceOperationResult.isSuccess()) { - sendNbiNotification(nbiNotificationBuilder + sendNbiNotification( + nbiNotificationBuilder .setResponseFailed("") .setMessage("Service deleted !") .setOperationalState(State.Degraded) .build()); } else { LOG.warn("{}Service was not removed from datastore !", serviceType); - sendNbiNotification(nbiNotificationBuilder + sendNbiNotification( + nbiNotificationBuilder .setResponseFailed(serviceType + "Service was not removed from datastore !") .setMessage("ServiceDelete request failed ...") .setOperationalState(service.getOperationalState()) diff --git a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/utils/ModelMappingUtils.java b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/utils/ModelMappingUtils.java index fc33b6d7b..0604a6c95 100644 --- a/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/utils/ModelMappingUtils.java +++ b/servicehandler/src/test/java/org/opendaylight/transportpce/servicehandler/utils/ModelMappingUtils.java @@ -20,7 +20,6 @@ import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer. import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.node.types.rev181130.NodeIdType; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.ServiceEndpoint; -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.configuration.response.common.ConfigurationResponseCommonBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.response.parameters.ResponseParametersBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.LifecycleState; @@ -60,294 +59,349 @@ public final class ModelMappingUtils { private ModelMappingUtils() { } - public static ServiceImplementationRequestInput createServiceImplementationRequest(ServiceInput input, + public static ServiceImplementationRequestInput createServiceImplementationRequest( + ServiceInput input, PathDescription pathDescription) { ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder = - new ServiceImplementationRequestInputBuilder(); - serviceImplementationRequestInputBuilder.setServiceName(input.getServiceName()); - org.opendaylight.yang.gen.v1.http - .org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceAEndBuilder - serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .service.implementation.request.input.ServiceAEndBuilder(); - serviceAEnd.setServiceFormat(input.getServiceAEnd().getServiceFormat()) - .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli()) - .setNodeId(input.getServiceAEnd().getNodeId().getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http - .org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(input.getServiceAEnd().getTxDirection().values().stream().findFirst().get().getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http - .org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort()) - .build()); - org.opendaylight.yang.gen.v1.http - .org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceZEndBuilder - serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .service.implementation.request.input.ServiceZEndBuilder(); - serviceZEnd.setServiceFormat(input.getServiceZEnd().getServiceFormat()) - .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli()) - .setNodeId(input.getServiceZEnd().getNodeId().getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http - .org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http - .org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort()) - .build()); - serviceImplementationRequestInputBuilder.setServiceAEnd(serviceAEnd.build()); - serviceImplementationRequestInputBuilder.setServiceZEnd(serviceZEnd.build()); - serviceImplementationRequestInputBuilder.setServiceHandlerHeader( - new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build()); - org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation - .request.input.PathDescriptionBuilder pathDescBuilder = new org.opendaylight.yang.gen.v1.http - .org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input - .PathDescriptionBuilder(); - pathDescBuilder.setAToZDirection(pathDescription.getAToZDirection()); - pathDescBuilder.setZToADirection(pathDescription.getZToADirection()); - serviceImplementationRequestInputBuilder.setPathDescription(pathDescBuilder.build()); - return serviceImplementationRequestInputBuilder.build(); + new ServiceImplementationRequestInputBuilder().setServiceName(input.getServiceName()); + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceAEndBuilder serviceAEnd = + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceAEndBuilder() + .setServiceFormat(input.getServiceAEnd().getServiceFormat()) + .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli()) + .setNodeId(input.getServiceAEnd().getNodeId().getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort(input.getServiceAEnd().getTxDirection().values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort(input.getServiceAEnd().getRxDirection().values().stream().findFirst().get().getPort()) + .build()); + org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceZEndBuilder serviceZEnd = + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.ServiceZEndBuilder() + .setServiceFormat(input.getServiceZEnd().getServiceFormat()) + .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli()) + .setNodeId(input.getServiceZEnd().getNodeId().getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort(input.getServiceZEnd().getTxDirection().values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort(input.getServiceZEnd().getRxDirection().values().stream().findFirst().get().getPort()) + .build()); + return serviceImplementationRequestInputBuilder + .setServiceAEnd(serviceAEnd.build()) + .setServiceZEnd(serviceZEnd.build()) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build()) + .setPathDescription( + new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 + .service.implementation.request.input.PathDescriptionBuilder() + .setAToZDirection(pathDescription.getAToZDirection()) + .setZToADirection(pathDescription.getZToADirection()) + .build()) + .build(); } public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) { - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(); - builder.setServiceName(serviceInput.getServiceName()); - builder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() - .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build()); - return builder.build(); + .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) { + return new ServiceDeleteInputBuilder() + .setServiceName(serviceInput.getServiceName()) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder() + .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()) + .build()) + .build(); } public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915 - .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) { - ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(); - builder.setServiceName(serviceRerouteinput.getServiceName()); - builder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId( - services.getSdncRequestHeader().getRequestId()).build()); - return builder.build(); + .ServiceDeleteInput createServiceDeleteInput( + ServiceRerouteInput serviceRerouteinput, + Services services) { + return new ServiceDeleteInputBuilder() + .setServiceName(serviceRerouteinput.getServiceName()) + .setServiceHandlerHeader( + new ServiceHandlerHeaderBuilder().setRequestId(services.getSdncRequestHeader().getRequestId()).build()) + .build(); } public static ServiceAEnd createServiceAEnd(ServiceEndpoint serviceAEnd) { - ServiceAEndBuilder serviceAEndBuilder = new ServiceAEndBuilder(); - serviceAEndBuilder.setClli(serviceAEnd.getClli()); - serviceAEndBuilder.setNodeId(new NodeIdType(serviceAEnd.getNodeId().getValue()).getValue()); - serviceAEndBuilder.setRxDirection( - createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get())); - serviceAEndBuilder.setServiceFormat(serviceAEnd.getServiceFormat()); - serviceAEndBuilder.setServiceRate(serviceAEnd.getServiceRate()); - serviceAEndBuilder.setTxDirection( - createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())); - return serviceAEndBuilder.build(); + return new ServiceAEndBuilder() + .setClli(serviceAEnd.getClli()) + .setNodeId(new NodeIdType(serviceAEnd.getNodeId().getValue()).getValue()) + .setRxDirection( + createRxDirection(serviceAEnd.getRxDirection().values().stream().findFirst().get())) + .setServiceFormat(serviceAEnd.getServiceFormat()) + .setServiceRate(serviceAEnd.getServiceRate()) + .setTxDirection( + createTxDirection(serviceAEnd.getTxDirection().values().stream().findFirst().get())) + .build(); } public static ServiceZEnd createServiceZEnd(ServiceEndpoint serviceZEnd) { - ServiceZEndBuilder serviceZEndBuilder = new ServiceZEndBuilder(); - serviceZEndBuilder.setClli(serviceZEnd.getClli()); - serviceZEndBuilder.setNodeId(new NodeIdType(serviceZEnd.getNodeId().getValue()).getValue()); - serviceZEndBuilder.setRxDirection( - createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get())); - serviceZEndBuilder.setServiceFormat(serviceZEnd.getServiceFormat()); - serviceZEndBuilder.setServiceRate(serviceZEnd.getServiceRate()); - serviceZEndBuilder.setTxDirection( - createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())); - return serviceZEndBuilder.build(); + return new ServiceZEndBuilder() + .setClli(serviceZEnd.getClli()) + .setNodeId(new NodeIdType(serviceZEnd.getNodeId().getValue()).getValue()) + .setRxDirection( + createRxDirection(serviceZEnd.getRxDirection().values().stream().findFirst().get())) + .setServiceFormat(serviceZEnd.getServiceFormat()) + .setServiceRate(serviceZEnd.getServiceRate()) + .setTxDirection( + createTxDirection(serviceZEnd.getTxDirection().values().stream().findFirst().get())) + .build(); } - public static RxDirection createRxDirection(org.opendaylight.yang.gen.v1.http - .org.openroadm.common.service.types.rev211210.service.endpoint.RxDirection rxDirection) { - RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder(); - rxDirectionBuilder.setPort(rxDirection.getPort()); - return rxDirectionBuilder.build(); + public static RxDirection createRxDirection( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.endpoint.RxDirection rxDirection) { + return new RxDirectionBuilder() + .setPort(rxDirection.getPort()) + .build(); } - public static TxDirection createTxDirection(org.opendaylight.yang.gen.v1.http - .org.openroadm.common.service.types.rev211210.service.endpoint.TxDirection txDirection) { - TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder(); - txDirectionBuilder.setPort(txDirection.getPort()); - return txDirectionBuilder.build(); + public static TxDirection createTxDirection( + org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.endpoint.TxDirection txDirection) { + return new TxDirectionBuilder() + .setPort(txDirection.getPort()) + .build(); } - public static ListenableFuture> createDeleteServiceReply(ServiceDeleteInput input, - String finalAck, String message, String responseCode) { - ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - builder.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - builder.setRequestId(null); - } - ConfigurationResponseCommon configurationResponseCommon = builder.build(); - ServiceDeleteOutput output = - new ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build(); - return RpcResultBuilder.success(output).buildFuture(); + public static ListenableFuture> createDeleteServiceReply( + ServiceDeleteInput input, String finalAck, String message, String responseCode) { + return RpcResultBuilder + .success( + new ServiceDeleteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .build()) + .buildFuture(); } public static ListenableFuture> createDeleteServiceReply( TempServiceDeleteInput input, String finalAck, String message, String responseCode) { - ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - builder.setRequestId(null); - ConfigurationResponseCommon configurationResponseCommon = builder.build(); - TempServiceDeleteOutput output = new TempServiceDeleteOutputBuilder() - .setConfigurationResponseCommon(configurationResponseCommon).build(); - return RpcResultBuilder.success(output).buildFuture(); + return RpcResultBuilder + .success( + new TempServiceDeleteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId(null) + .build()) + .build()) + .buildFuture(); } - public static ListenableFuture> createCreateServiceReply(ServiceCreateInput input, - String finalAck, String message, String responseCode) { - ResponseParametersBuilder responseParameters = new ResponseParametersBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - configurationResponseCommon.setRequestId(null); - } - ServiceCreateOutputBuilder output = - new ServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(responseParameters.build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + public static ListenableFuture> createCreateServiceReply( + ServiceCreateInput input, String finalAck, String message, String responseCode) { + return RpcResultBuilder + .success( + new ServiceCreateOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .setResponseParameters(new ResponseParametersBuilder().build()) + .build()) + .buildFuture(); } public static ListenableFuture> createCreateServiceReply( TempServiceCreateInput input, String finalAck, String message, String responseCode) { - ResponseParametersBuilder responseParameters = new ResponseParametersBuilder(); - ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder() - .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode); - if (input.getSdncRequestHeader() != null) { - configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId()); - } else { - configurationResponseCommon.setRequestId(null); - } - TempServiceCreateOutputBuilder output = - new TempServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build()) - .setResponseParameters(responseParameters.build()); - return RpcResultBuilder.success(output.build()).buildFuture(); + return RpcResultBuilder + .success( + new TempServiceCreateOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder() + .setAckFinalIndicator(finalAck) + .setResponseMessage(message) + .setResponseCode(responseCode) + .setRequestId( + input.getSdncRequestHeader() == null + ? null + : input.getSdncRequestHeader().getRequestId()) + .build()) + .setResponseParameters(new ResponseParametersBuilder().build()) + .build()) + .buildFuture(); } - public static ListenableFuture> createRerouteServiceReply(ServiceRerouteInput input, - String finalAckYes, String message) { - ServiceRerouteOutputBuilder output = new ServiceRerouteOutputBuilder() - .setConfigurationResponseCommon( - new ConfigurationResponseCommonBuilder().setResponseMessage(message).build()) - .setHardConstraints(null) - .setSoftConstraints(null); - return RpcResultBuilder.success(output.build()).buildFuture(); + public static ListenableFuture> createRerouteServiceReply( + ServiceRerouteInput input, String finalAckYes, String message) { + return RpcResultBuilder + .success( + new ServiceRerouteOutputBuilder() + .setConfigurationResponseCommon( + new ConfigurationResponseCommonBuilder().setResponseMessage(message).build()) + .setHardConstraints(null) + .setSoftConstraints(null) + .build()) + .buildFuture(); } - public static Services mappingServices(ServiceCreateInput serviceCreateInput, - ServiceReconfigureInput serviceReconfigureInput) { - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEnd aend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceZEnd zend = null; - ServicesBuilder service = new ServicesBuilder(); + public static Services mappingServices( + ServiceCreateInput serviceCreateInput, ServiceReconfigureInput serviceReconfigureInput) { if (serviceCreateInput != null) { - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(serviceCreateInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(serviceCreateInput.getServiceZEnd()).build(); - service.setServiceName(serviceCreateInput.getServiceName()).setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(serviceCreateInput.getCommonId()) - .setConnectionType(serviceCreateInput.getConnectionType()) - .setCustomer(serviceCreateInput.getCustomer()) - .setCustomerContact(serviceCreateInput.getCustomerContact()) - .setHardConstraints(serviceCreateInput.getHardConstraints()) - .setSoftConstraints(serviceCreateInput.getSoftConstraints()) - .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); - } else if (serviceReconfigureInput != null) { - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd()).build(); - service.setServiceName(serviceReconfigureInput.getServiceName()) - .setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(serviceReconfigureInput.getCommonId()) - .setConnectionType(serviceReconfigureInput.getConnectionType()) - .setCustomer(serviceReconfigureInput.getCustomer()) - .setCustomerContact(serviceReconfigureInput.getCustomerContact()) - .setHardConstraints(serviceReconfigureInput.getHardConstraints()) - .setSoftConstraints(serviceReconfigureInput.getSoftConstraints()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); + return new ServicesBuilder() + .setServiceName(serviceCreateInput.getServiceName()) + .setAdministrativeState(AdminStates.OutOfService) + .setOperationalState(State.OutOfService) + .setCommonId(serviceCreateInput.getCommonId()) + .setConnectionType(serviceCreateInput.getConnectionType()) + .setCustomer(serviceCreateInput.getCustomer()) + .setCustomerContact(serviceCreateInput.getCustomerContact()) + .setHardConstraints(serviceCreateInput.getHardConstraints()) + .setSoftConstraints(serviceCreateInput.getSoftConstraints()) + .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader()) + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(serviceCreateInput.getServiceAEnd()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(serviceCreateInput.getServiceZEnd()) + .build()) + .build(); + } + if (serviceReconfigureInput != null) { + return new ServicesBuilder() + .setServiceName(serviceReconfigureInput.getServiceName()) + .setAdministrativeState(AdminStates.OutOfService) + .setOperationalState(State.OutOfService) + .setCommonId(serviceReconfigureInput.getCommonId()) + .setConnectionType(serviceReconfigureInput.getConnectionType()) + .setCustomer(serviceReconfigureInput.getCustomer()) + .setCustomerContact(serviceReconfigureInput.getCustomerContact()) + .setHardConstraints(serviceReconfigureInput.getHardConstraints()) + .setSoftConstraints(serviceReconfigureInput.getSoftConstraints()) + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd()) + .build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd()) + .build()) + .build(); } - return service.build(); + return new ServicesBuilder().build(); } - public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list - .Services mappingServices(TempServiceCreateInput tempServiceCreateInput) { - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceAEnd aend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service.ServiceZEnd zend = null; - org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp.service.list - .ServicesBuilder service = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.temp - .service.list.ServicesBuilder(); - aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build(); - zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.service - .ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build(); - service.setServiceName(tempServiceCreateInput.getCommonId()).setAdministrativeState(AdminStates.OutOfService) - .setOperationalState(State.OutOfService).setCommonId(tempServiceCreateInput.getCommonId()) - .setConnectionType(tempServiceCreateInput.getConnectionType()) - .setCustomer(tempServiceCreateInput.getCustomer()) - .setCustomerContact(tempServiceCreateInput.getCustomerContact()) - .setHardConstraints(tempServiceCreateInput.getHardConstraints()) - .setSoftConstraints(tempServiceCreateInput.getSoftConstraints()) - .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader()) - .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend); - return service.build(); + public static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 + .temp.service.list.Services mappingServices(TempServiceCreateInput tempServiceCreateInput) { + return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210 + .temp.service.list.ServicesBuilder() + .setServiceName(tempServiceCreateInput.getCommonId()) + .setAdministrativeState(AdminStates.OutOfService) + .setOperationalState(State.OutOfService) + .setCommonId(tempServiceCreateInput.getCommonId()) + .setConnectionType(tempServiceCreateInput.getConnectionType()) + .setCustomer(tempServiceCreateInput.getCustomer()) + .setCustomerContact(tempServiceCreateInput.getCustomerContact()) + .setHardConstraints(tempServiceCreateInput.getHardConstraints()) + .setSoftConstraints(tempServiceCreateInput.getSoftConstraints()) + .setSdncRequestHeader(tempServiceCreateInput.getSdncRequestHeader()) + .setLifecycleState(LifecycleState.Planned) + .setServiceAEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceAEndBuilder(tempServiceCreateInput.getServiceAEnd()).build()) + .setServiceZEnd( + new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210 + .service.ServiceZEndBuilder(tempServiceCreateInput.getServiceZEnd()).build()) + .build(); } public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) { - ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder(); - if (serviceInput != null) { - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceAEndBuilder serviceAEnd = + if (serviceInput == null) { + return new ServicePathsBuilder().build(); + } + ServicePathsBuilder servicePathBuilder = + new ServicePathsBuilder() + .setServiceAEnd( new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceAEndBuilder(); - serviceAEnd.setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat()) - .setServiceRate(serviceInput.getServiceAEnd().getServiceRate()) - .setClli(serviceInput.getServiceAEnd().getClli()) - .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(serviceInput.getServiceAEnd().getTxDirection().values().stream().findFirst().get() - .getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(serviceInput.getServiceAEnd().getRxDirection().values().stream().findFirst().get() - .getPort()) - .build()); - org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceZEndBuilder serviceZEnd = + .service.path.ServiceAEndBuilder() + .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat()) + .setServiceRate(serviceInput.getServiceAEnd().getServiceRate()) + .setClli(serviceInput.getServiceAEnd().getClli()) + .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + serviceInput.getServiceAEnd().getTxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + serviceInput.getServiceAEnd().getRxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .build()) + .setServiceZEnd( new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118 - .service.path.ServiceZEndBuilder(); - serviceZEnd.setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat()) - .setServiceRate(serviceInput.getServiceZEnd().getServiceRate()) - .setClli(serviceInput.getServiceZEnd().getClli()) - .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue()) - .setTxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder() - .setPort(serviceInput.getServiceZEnd().getTxDirection().values().stream().findFirst().get() - .getPort()) - .build()) - .setRxDirection(new org.opendaylight.yang.gen.v1.http.org - .transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder() - .setPort(serviceInput.getServiceZEnd().getRxDirection().values().stream().findFirst().get() - .getPort()) - .build()); - servicePathBuilder.setServiceAEnd(serviceAEnd.build()); - servicePathBuilder.setServiceZEnd(serviceZEnd.build()); - if (serviceInput.getHardConstraints() != null) { - servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints()); - } - if (serviceInput.getSoftConstraints() != null) { - servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints()); - } - servicePathBuilder.setServicePathName(serviceInput.getServiceName()); - servicePathBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() - .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build()); - PathDescriptionBuilder pathDescBuilder = - new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()); - servicePathBuilder.setPathDescription(pathDescBuilder.build()); + .service.path.ServiceZEndBuilder() + .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat()) + .setServiceRate(serviceInput.getServiceZEnd().getServiceRate()) + .setClli(serviceInput.getServiceZEnd().getClli()) + .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId().getValue()).getValue()) + .setTxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.TxDirectionBuilder() + .setPort( + serviceInput.getServiceZEnd().getTxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .setRxDirection( + new org.opendaylight.yang.gen.v1 + .http.org.transportpce.b.c._interface.service.types.rev220118 + .service.endpoint.sp.RxDirectionBuilder() + .setPort( + serviceInput.getServiceZEnd().getRxDirection() + .values().stream().findFirst().get().getPort()) + .build()) + .build()) + .setServicePathName(serviceInput.getServiceName()) + .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder() + .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build()) + .setPathDescription( + new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build()); + if (serviceInput.getHardConstraints() != null) { + servicePathBuilder.setHardConstraints(serviceInput.getHardConstraints()); + } + if (serviceInput.getSoftConstraints() != null) { + servicePathBuilder.setSoftConstraints(serviceInput.getSoftConstraints()); } return servicePathBuilder.build(); } -- 2.36.6