X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Ftapi%2Fconnectivity%2FTapiConnectivityImpl.java;h=79a9dc7c7db586a1ba9fecc0e96bb1f25d5bd13d;hb=46b020d25342f0ca86d83f6a503d7565f67f829e;hp=bd7932f1378062465ede4a5f6c386a327f1c8603;hpb=f49968974e1477d4fd9cfdd87d867c9ad347678e;p=transportpce.git diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java index bd7932f13..79a9dc7c7 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImpl.java @@ -7,6 +7,7 @@ */ package org.opendaylight.transportpce.tapi.connectivity; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.ListenableFuture; import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -15,19 +16,19 @@ import java.util.UUID; import java.util.concurrent.ExecutionException; import org.opendaylight.transportpce.common.OperationResult; import org.opendaylight.transportpce.common.ResponseCodes; -import org.opendaylight.transportpce.tapi.listeners.TapiPceListenerImpl; -import org.opendaylight.transportpce.tapi.listeners.TapiRendererListenerImpl; +import org.opendaylight.transportpce.tapi.listeners.TapiPceNotificationHandler; +import org.opendaylight.transportpce.tapi.listeners.TapiRendererNotificationHandler; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.validation.CreateConnectivityServiceValidation; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.RpcActions; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev211210.sdnc.request.header.SdncRequestHeaderBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.OrgOpenroadmServiceService; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateInput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceCreateOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteInputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.ServiceDeleteOutput; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfo; -import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.service.delete.input.ServiceDeleteReqInfoBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.RpcActions; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev230526.sdnc.request.header.SdncRequestHeaderBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.OrgOpenroadmServiceService; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteInputBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceDeleteOutput; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfo; +import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.delete.input.ServiceDeleteReqInfoBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState; @@ -39,26 +40,33 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.glob import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePoint; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.tapi.context.ServiceInterfacePointKey; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetails; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetails; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetails; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceList; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutputBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.ServiceType; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityService; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceOutput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.cep.list.ConnectionEndPoint; @@ -76,6 +84,8 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev18121 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connection.end.point.details.output.ConnectionEndPointBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.Service; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.get.connectivity.service.list.output.ServiceKey; +import org.opendaylight.yangtools.yang.binding.Rpc; +import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -92,12 +102,12 @@ public class TapiConnectivityImpl implements TapiConnectivityService { private OrgOpenroadmServiceService serviceHandler; private final TapiContext tapiContext; private final ConnectivityUtils connectivityUtils; - private TapiPceListenerImpl pceListenerImpl; - private TapiRendererListenerImpl rendererListenerImpl; + private TapiPceNotificationHandler pceListenerImpl; + private TapiRendererNotificationHandler rendererListenerImpl; public TapiConnectivityImpl(OrgOpenroadmServiceService serviceHandler, TapiContext tapiContext, - ConnectivityUtils connectivityUtils, TapiPceListenerImpl pceListenerImpl, - TapiRendererListenerImpl rendererListenerImpl) { + ConnectivityUtils connectivityUtils, TapiPceNotificationHandler pceListenerImpl, + TapiRendererNotificationHandler rendererListenerImpl) { LOG.info("inside TapiImpl constructor"); this.serviceHandler = serviceHandler; this.tapiContext = tapiContext; @@ -128,10 +138,10 @@ public class TapiConnectivityImpl implements TapiConnectivityService { .withError(ErrorType.RPC, "SIP list is empty") .buildFuture(); } - if (sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().findFirst().get() - .getServiceInterfacePoint().getServiceInterfacePointUuid())) + if (sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().findFirst() + .orElseThrow().getServiceInterfacePoint().getServiceInterfacePointUuid())) && sipMap.containsKey(new ServiceInterfacePointKey(input.getEndPoint().values().stream().skip(1) - .findFirst().get().getServiceInterfacePoint().getServiceInterfacePointUuid()))) { + .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); @@ -183,6 +193,7 @@ public class TapiConnectivityImpl implements TapiConnectivityService { .setOperationalState(OperationalState.DISABLED) .setLifecycleState(LifecycleState.PLANNED) .setServiceLayer(input.getConnectivityConstraint().getServiceLayer()) + .setServiceLevel(input.getConnectivityConstraint().getServiceLevel()) .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY) .setConnectivityDirection(ForwardingDirection.BIDIRECTIONAL) .setName(Map.of(name.key(), name)) @@ -197,37 +208,6 @@ public class TapiConnectivityImpl implements TapiConnectivityService { .setService(new ServiceBuilder(service).build()).build()).buildFuture(); } - private Map createEndPoints( - Map endPoints) { - Map endPointMap = new HashMap<>(); - for (org.opendaylight.yang.gen.v1.urn - .onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.input.EndPoint ep: - endPoints.values()) { - EndPoint endpoint = new EndPointBuilder() - .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()) - .setCapacity(new CapacityBuilder() - .setTotalSize(new TotalSizeBuilder().build()) - .setBandwidthProfile(new BandwidthProfileBuilder().build()) // TODO: implement bandwidth profile - .build()) - .setProtectionRole(ep.getProtectionRole()) - .setRole(ep.getRole()) - .setLocalId(ep.getLocalId()) - .build(); - endPointMap.put(endpoint.key(), endpoint); - } - return endPointMap; - } @Override public ListenableFuture> getConnectivityServiceDetails( @@ -251,7 +231,9 @@ public class TapiConnectivityImpl implements TapiConnectivityService { public ListenableFuture> updateConnectivityService( UpdateConnectivityServiceInput input) { // TODO Auto-generated method stub. More complicated as it depends on what needs to be updated... left aside - return null; + return RpcResultBuilder.failed() + .withError(ErrorType.RPC, ErrorTag.OPERATION_NOT_SUPPORTED, "RPC not implemented yet") + .buildFuture(); } @Override @@ -350,6 +332,50 @@ public class TapiConnectivityImpl implements TapiConnectivityService { new ConnectionEndPointBuilder(cep).build()).build()).buildFuture(); } + public ImmutableClassToInstanceMap> registerRPCs() { + return ImmutableClassToInstanceMap.>builder() + .put(CreateConnectivityService.class, this::createConnectivityService) + .put(GetConnectivityServiceDetails.class, this::getConnectivityServiceDetails) + .put(UpdateConnectivityService.class, this::updateConnectivityService) + .put(GetConnectionDetails.class, this::getConnectionDetails) + .put(DeleteConnectivityService.class, this::deleteConnectivityService) + .put(GetConnectivityServiceList.class, this::getConnectivityServiceList) + .put(GetConnectionEndPointDetails.class, this::getConnectionEndPointDetails) + .build(); + } + + private Map createEndPoints( + Map endPoints) { + Map endPointMap = new HashMap<>(); + for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210 + .create.connectivity.service.input.EndPoint ep: endPoints.values()) { + EndPoint endpoint = new EndPointBuilder() + .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()) + .build()) + .setProtectionRole(ep.getProtectionRole()) + .setRole(ep.getRole()) + .setLocalId(ep.getLocalId()) + .build(); + endPointMap.put(endpoint.key(), endpoint); + } + return endPointMap; + } + private Uuid getUuidFromIput(String serviceIdOrName) { try { UUID.fromString(serviceIdOrName);