X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Ftapi%2Ftopology%2FTapiNetworkUtilsImpl.java;h=afa28afcf4a52cdbe5ea51b0812ea1de017d0412;hb=HEAD;hp=5030768e253e509a6e525fb9a3680b0fc2cb8483;hpb=7163540eb75ce9968881b470ebf640b7a92f9eaa;p=transportpce.git diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java index 5030768e2..afa28afcf 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkUtilsImpl.java @@ -8,46 +8,32 @@ package org.opendaylight.transportpce.tapi.topology; import com.google.common.collect.ImmutableClassToInstanceMap; -import com.google.common.util.concurrent.ListenableFuture; import java.nio.charset.Charset; import java.util.Map; -import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutionException; import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; +import org.opendaylight.transportpce.tapi.impl.rpc.DeleteTapiLinkImpl; +import org.opendaylight.transportpce.tapi.impl.rpc.InitRoadmRoadmTapiLinkImpl; +import org.opendaylight.transportpce.tapi.impl.rpc.InitXpdrRdmTapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.DeleteTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitRoadmRoadmTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.InitXpdrRdmTapiLinkOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Context; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.Context1; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.context.TopologyContext; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyBuilder; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLink; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLink; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLink; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Context; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.Context1; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.context.TopologyContext; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.Topology; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyBuilder; +import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.context.TopologyKey; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.Rpc; -import org.opendaylight.yangtools.yang.common.ErrorType; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; @@ -56,24 +42,23 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component -public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService { +public class TapiNetworkUtilsImpl { private static final Logger LOG = LoggerFactory.getLogger(TapiNetworkUtilsImpl.class); private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString()); + private final NetworkTransactionService networkTransactionService; - private final TapiLink tapiLink; private Registration reg; @Activate public TapiNetworkUtilsImpl(@Reference RpcProviderService rpcProviderService, @Reference NetworkTransactionService networkTransactionService, @Reference TapiLink tapiLink) { this.networkTransactionService = networkTransactionService; - this.tapiLink = tapiLink; this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.>builder() - .put(InitRoadmRoadmTapiLink.class, this::initRoadmRoadmTapiLink) - .put(InitXpdrRdmTapiLink.class, this::initXpdrRdmTapiLink) - .put(DeleteTapiLink.class, this::deleteTapiLink) + .put(InitRoadmRoadmTapiLink.class, new InitRoadmRoadmTapiLinkImpl(tapiLink, this)) + .put(InitXpdrRdmTapiLink.class, new InitXpdrRdmTapiLinkImpl(tapiLink, null)) + .put(DeleteTapiLink.class, new DeleteTapiLinkImpl(this, networkTransactionService)) .build()); LOG.info("TapiNetworkUtilsImpl instantiated"); } @@ -84,88 +69,16 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService LOG.info("TapiNetworkUtilsImpl Closed"); } - @Override - public final ListenableFuture> initRoadmRoadmTapiLink( - InitRoadmRoadmTapiLinkInput input) { - // TODO --> need to check if the nodes and neps exist in the topology - String sourceNode = input.getRdmANode(); - String sourceTp = input.getDegATp(); - String destNode = input.getRdmZNode(); - String destTp = input.getDegZTp(); - Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp, - TapiStringConstants.OMS_RDM_RDM_LINK, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, - TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, - this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp), - this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp), - Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid); - InitRoadmRoadmTapiLinkOutputBuilder output = new InitRoadmRoadmTapiLinkOutputBuilder(); - if (link == null) { - LOG.error("Error creating link object"); - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Failed to create link in topology") - .buildFuture(); - } - if (putLinkInTopology(link)) { - output = new InitRoadmRoadmTapiLinkOutputBuilder() - .setResult("Link created in tapi topology. Link-uuid = " + link.getUuid()); - } - return RpcResultBuilder.success(output.build()).buildFuture(); - } - - @Override - public final ListenableFuture> initXpdrRdmTapiLink( - InitXpdrRdmTapiLinkInput input) { - // TODO --> need to check if the nodes and neps exist in the topology - String destNode = input.getRdmNode(); - String destTp = input.getAddDropTp(); - String sourceNode = input.getXpdrNode(); - String sourceTp = input.getNetworkTp(); - Link link = this.tapiLink.createTapiLink(sourceNode, sourceTp, destNode, destTp, - TapiStringConstants.OMS_XPDR_RDM_LINK, TapiStringConstants.OTSI, TapiStringConstants.PHTNC_MEDIA, - TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA, - this.tapiLink.getAdminState(sourceNode, sourceTp, destNode, destTp), - this.tapiLink.getOperState(sourceNode, sourceTp, destNode, destTp), - Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid); - InitXpdrRdmTapiLinkOutputBuilder output = new InitXpdrRdmTapiLinkOutputBuilder(); - if (link == null) { - LOG.error("Error creating link object"); - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Failed to create link in topology") - .buildFuture(); - } - if (putLinkInTopology(link)) { - output = new InitXpdrRdmTapiLinkOutputBuilder() - .setResult("Link created in tapi topology. Link-uuid = " + link.getUuid()); - } - return RpcResultBuilder.success(output.build()).buildFuture(); - } - - @Override - public final ListenableFuture> deleteTapiLink(DeleteTapiLinkInput input) { - // TODO: check if this IID is correct - // TODO --> need to check if the link exists in the topology - try { - InstanceIdentifier linkIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class, - new TopologyKey(tapiTopoUuid)).child(Link.class, new LinkKey(input.getUuid())).build(); - this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, linkIID); - this.networkTransactionService.commit().get(); - LOG.info("TAPI link deleted successfully."); - return RpcResultBuilder.success(new DeleteTapiLinkOutputBuilder() - .setResult("Link successfully deleted from tapi topology").build()).buildFuture(); - } catch (InterruptedException | ExecutionException e) { - LOG.error("Failed to delete TAPI link", e); - return RpcResultBuilder.failed() - .withError(ErrorType.RPC, "Failed to delete link from topology") - .buildFuture(); - } - } public Registration getRegisteredRpc() { return reg; } - private boolean putLinkInTopology(Link tapLink) { + public Uuid getTapiTopoUuid() { + return tapiTopoUuid; + } + + public boolean putLinkInTopology(Link tapLink) { // TODO is this merge correct? Should we just merge topology by changing the nodes map?? // TODO: verify this is correct. Should we identify the context IID with the context UUID?? LOG.info("Creating tapi node in TAPI topology context");