From 348f38b00c43bef86fda82a3b297810213db5707 Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Tue, 19 Mar 2024 08:11:25 +0100 Subject: [PATCH] Refactor TAPI rpc CreateConnectivityServiceImpl Signed-off-by: guillaume.lambert Change-Id: I85b7c6dc7e74c957f78123b5b8fb5dcf577fcb57 --- .../rpc/CreateConnectivityServiceImpl.java | 128 +++++++++--------- 1 file changed, 62 insertions(+), 66 deletions(-) diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/rpc/CreateConnectivityServiceImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/rpc/CreateConnectivityServiceImpl.java index 6c7eb2bef..317a07967 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/rpc/CreateConnectivityServiceImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/rpc/CreateConnectivityServiceImpl.java @@ -40,7 +40,6 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev22112 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.ServiceType; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.context.ConnectivityServiceBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraint; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.ConnectivityConstraintBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPoint; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.connectivity.service.EndPointBuilder; @@ -82,52 +81,48 @@ public class CreateConnectivityServiceImpl implements CreateConnectivityService this.pceListenerImpl.setInput(input); this.pceListenerImpl.setServiceUuid(serviceUuid); this.rendererListenerImpl.setServiceUuid(serviceUuid); - ListenableFuture> output = null; - OperationResult validationResult = CreateConnectivityServiceValidation.validateCreateConnectivityServiceRequest( - input); - if (validationResult.isSuccess()) { - LOG.info("input parameter of RPC create-connectivity are being handled"); - // check uuid of SIP in tapi context - Map sipMap = this.tapiContext.getTapiContext() - .getServiceInterfacePoint(); - if (sipMap == null) { - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "SIP list is empty") - .buildFuture(); - } - if (sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().findFirst() - .orElseThrow().getServiceInterfacePoint().getServiceInterfacePointUuid())) - && sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().skip(1) - .findFirst().orElseThrow().getServiceInterfacePoint().getServiceInterfacePointUuid()))) { - LOG.info("SIPs found in sipMap"); - // TODO: differentiate between OTN service and GbE service in TAPI - ServiceCreateInput sci = this.connectivityUtils.createORServiceInput(input, serviceUuid); - if (sci == null) { - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Couldnt map Service create input") - .buildFuture(); - } - LOG.info("Service Create input = {}", sci); - output = rpcService.getRpc(ServiceCreate.class).invoke(sci); - if (!output.isDone()) { - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Service create RPC failed") - .buildFuture(); - } - } else { - LOG.error("Unknown UUID"); - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "SIPs do not exist in tapi context") - .buildFuture(); - } + OperationResult validationResult = + CreateConnectivityServiceValidation.validateCreateConnectivityServiceRequest(input); + if (!validationResult.isSuccess()) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Failed to create service") + .buildFuture(); + } + LOG.info("input parameter of RPC create-connectivity are being handled"); + // check uuid of SIP in tapi context + Map sipMap = + this.tapiContext.getTapiContext().getServiceInterfacePoint(); + if (sipMap == null) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "SIP list is empty") + .buildFuture(); + } + if (!sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().findFirst() + .orElseThrow().getServiceInterfacePoint().getServiceInterfacePointUuid())) + || !sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().skip(1) + .findFirst().orElseThrow().getServiceInterfacePoint().getServiceInterfacePointUuid()))) { + LOG.error("Unknown UUID"); + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "SIPs do not exist in tapi context") + .buildFuture(); + } + LOG.info("SIPs found in sipMap"); + // TODO: differentiate between OTN service and GbE service in TAPI + ServiceCreateInput sci = this.connectivityUtils.createORServiceInput(input, serviceUuid); + if (sci == null) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Couldnt map Service create input") + .buildFuture(); } + LOG.info("Service Create input = {}", sci); + ListenableFuture> output = rpcService.getRpc(ServiceCreate.class).invoke(sci); + if (!output.isDone()) { + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, "Service create RPC failed") + .buildFuture(); + } + LOG.info("Service create request was successful"); try { - if (output == null) { - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Failed to create service") - .buildFuture(); - } - LOG.info("Service create request was successful"); if (output.get().getResult().getConfigurationResponseCommon().getResponseCode() .equals(ResponseCodes.RESPONSE_FAILED)) { return RpcResultBuilder.failed() @@ -139,58 +134,59 @@ public class CreateConnectivityServiceImpl implements CreateConnectivityService LOG.error("Error checking response code of service create", e); } // Connections and states should be created/updated when the pce and renderer are done :) - Map endPointList = createEndPoints(input.getEndPoint()); Name name = new NameBuilder() .setValueName("Connectivity Service Name") .setValue(serviceUuid.getValue()) .build(); - ConnectivityConstraint conConstr = new ConnectivityConstraintBuilder() - .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) - .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()).build(); - ConnectivityService service = new ConnectivityServiceBuilder() .setUuid(serviceUuid) .setAdministrativeState(AdministrativeState.LOCKED) .setOperationalState(OperationalState.DISABLED) .setLifecycleState(LifecycleState.PLANNED) .setLayerProtocolName(input.getLayerProtocolName()) - .setConnectivityConstraint(conConstr) + .setConnectivityConstraint( + new ConnectivityConstraintBuilder() + .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) + .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()) + .build()) .setDirection(ForwardingDirection.BIDIRECTIONAL) .setName(Map.of(name.key(), name)) .setConnection(new HashMap<>()) - .setEndPoint(endPointList) + .setEndPoint(createEndPoints(input.getEndPoint())) .build(); // add to tapi context this.tapiContext.updateConnectivityContext(Map.of(service.key(), service), new HashMap<>()); LOG.info("Created locked service in Datastore. Waiting for PCE and Renderer to complete tasks..."); // return ConnectivityServiceCreateOutput - return RpcResultBuilder.success(new CreateConnectivityServiceOutputBuilder() - .setService(new ServiceBuilder(service).build()).build()).buildFuture(); + return RpcResultBuilder.success( + new CreateConnectivityServiceOutputBuilder() + .setService(new ServiceBuilder(service).build()) + .build()) + .buildFuture(); } private Map createEndPoints( - Map endPoints) { + Map endPoints) { Map endPointMap = new HashMap<>(); - for (org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev221121.create.connectivity.service.input.EndPoint ep: - endPoints.values()) { + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 + .create.connectivity.service.input.EndPoint ep: endPoints.values()) { EndPoint endpoint = new EndPointBuilder() - .setServiceInterfacePoint(new ServiceInterfacePointBuilder() - .setServiceInterfacePointUuid(ep.getServiceInterfacePoint().getServiceInterfacePointUuid()) - .build()) + .setServiceInterfacePoint( + new ServiceInterfacePointBuilder() + .setServiceInterfacePointUuid(ep.getServiceInterfacePoint().getServiceInterfacePointUuid()) + .build()) .setName(ep.getName()) .setAdministrativeState(ep.getAdministrativeState()) .setDirection(ep.getDirection()) .setLifecycleState(ep.getLifecycleState()) .setOperationalState(ep.getOperationalState()) .setLayerProtocolName(ep.getLayerProtocolName()) - // TODO: implement bandwidth profile .setCapacity(new CapacityBuilder() .setTotalSize(new TotalSizeBuilder().build()) -// .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile + // TODO: implement bandwidth profile //.setBandwidthProfile(new BandwidthProfileBuilder().build()) .build()) .setProtectionRole(ep.getProtectionRole()) .setRole(ep.getRole()) -- 2.36.6