Migration to TAPI 2.4 Step2
[transportpce.git] / tapi / src / main / java / org / opendaylight / transportpce / tapi / topology / TapiNetworkUtilsImpl.java
index 11f0359375430114ecdda3a2ff88cdb2728fc96b..5b3b87da3b53d1c4ecfe91ea5520a631f4ab375f 100644 (file)
  */
 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.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-import java.util.Optional;
+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.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.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.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.AdministrativeState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
-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.ForwardingDirection;
-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.LifecycleState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-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.common.rev181210.capacity.TotalSizeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.TotalPotentialCapacityBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
-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.topology.rev181210.Context1;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ProtectionType;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RestorationPolicy;
-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.link.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.ResilienceTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.risk.parameter.pac.RiskCharacteristicBuilder;
-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.LinkBuilder;
-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.Node;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
-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.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.cost.pac.CostCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristic;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.transfer.timing.pac.LatencyCharacteristicBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanism;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.validation.pac.ValidationMechanismBuilder;
+import org.opendaylight.transportpce.tapi.TapiStringConstants;
+import org.opendaylight.transportpce.tapi.utils.TapiLink;
+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.DeleteTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.DeleteTapiLinkOutputBuilder;
+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.InitRoadmRoadmTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitRoadmRoadmTapiLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLink;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.InitXpdrRdmTapiLinkOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev230728.TransportpceTapinetworkutilsService;
+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.LayerProtocolName;
+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.LinkKey;
+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.common.RpcError;
+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.opendaylight.yangtools.yang.common.Uint64;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component
 public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService {
 
     private static final Logger LOG = LoggerFactory.getLogger(TapiNetworkUtilsImpl.class);
-    private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA";
-    private static final String OTSI = "OTSi";
-    private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER
+    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;
 
-    public TapiNetworkUtilsImpl(NetworkTransactionService networkTransactionService) {
+    @Activate
+    public TapiNetworkUtilsImpl(@Reference RpcProviderService rpcProviderService,
+            @Reference NetworkTransactionService networkTransactionService, @Reference TapiLink tapiLink) {
         this.networkTransactionService = networkTransactionService;
+        this.tapiLink = tapiLink;
+        this.reg = rpcProviderService.registerRpcImplementations(ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+            .put(InitRoadmRoadmTapiLink.class, this::initRoadmRoadmTapiLink)
+            .put(InitXpdrRdmTapiLink.class, this::initXpdrRdmTapiLink)
+            .put(DeleteTapiLink.class, this::deleteTapiLink)
+            .build());
+        LOG.info("TapiNetworkUtilsImpl instantiated");
+    }
+
+    @Deactivate
+    public void close() {
+        this.reg.close();
+        LOG.info("TapiNetworkUtilsImpl Closed");
     }
 
     @Override
-    public ListenableFuture<RpcResult<InitRoadmRoadmTapiLinkOutput>> initRoadmRoadmTapiLink(
+    public final ListenableFuture<RpcResult<InitRoadmRoadmTapiLinkOutput>> 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();
-        String linkId = String.join("-", sourceNode, sourceTp.split("-")[0], sourceTp)
-            + "to" + String.join("-", destNode, destTp.split("-")[0], destTp);
-        Link link = createTapiLink(sourceNode, sourceTp, destNode, destTp, linkId, "OMS link name", PHTNC_MEDIA);
+        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.<InitRoadmRoadmTapiLinkOutput>failed().withError(RpcError.ErrorType.RPC,
-                "Failed to create link in topology").buildFuture();
+            return RpcResultBuilder.<InitRoadmRoadmTapiLinkOutput>failed()
+                .withError(ErrorType.RPC, "Failed to create link in topology")
+                .buildFuture();
         }
         if (putLinkInTopology(link)) {
             output = new InitRoadmRoadmTapiLinkOutputBuilder()
@@ -113,20 +113,25 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService
     }
 
     @Override
-    public ListenableFuture<RpcResult<InitXpdrRdmTapiLinkOutput>> initXpdrRdmTapiLink(InitXpdrRdmTapiLinkInput input) {
+    public final ListenableFuture<RpcResult<InitXpdrRdmTapiLinkOutput>> 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();
-        String linkId = String.join("-", sourceNode, sourceTp)
-            + "to" + String.join("-", destNode, destTp.split("-")[0], destTp);
-        Link link = createTapiLink(sourceNode, sourceTp, destNode, destTp, linkId, "XPDR-RDM link name", OTSI);
+        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.<InitXpdrRdmTapiLinkOutput>failed().withError(RpcError.ErrorType.RPC,
-                "Failed to create link in topology").buildFuture();
+            return RpcResultBuilder.<InitXpdrRdmTapiLinkOutput>failed()
+                .withError(ErrorType.RPC, "Failed to create link in topology")
+                .buildFuture();
         }
         if (putLinkInTopology(link)) {
             output = new InitXpdrRdmTapiLinkOutputBuilder()
@@ -136,13 +141,13 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService
     }
 
     @Override
-    public ListenableFuture<RpcResult<DeleteTapiLinkOutput>> deleteTapiLink(DeleteTapiLinkInput input) {
+    public final ListenableFuture<RpcResult<DeleteTapiLinkOutput>> deleteTapiLink(DeleteTapiLinkInput input) {
         // TODO: check if this IID is correct
         // TODO --> need to check if the link exists in the topology
         try {
             InstanceIdentifier<Link> 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();
+                .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.");
@@ -150,141 +155,17 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService
                 .setResult("Link successfully deleted from tapi topology").build()).buildFuture();
         } catch (InterruptedException | ExecutionException e) {
             LOG.error("Failed to delete TAPI link", e);
-            return RpcResultBuilder.<DeleteTapiLinkOutput>failed().withError(RpcError.ErrorType.RPC,
-                "Failed to delete link from topology").buildFuture();
+            return RpcResultBuilder.<DeleteTapiLinkOutput>failed()
+                .withError(ErrorType.RPC, "Failed to delete link from topology")
+                .buildFuture();
         }
     }
 
-    private Link createTapiLink(String sourceNode, String sourceTp, String destNode, String destTp, String linkId,
-                                String valueName, String sourceNodeQual) {
-        Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
-        Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode,
-            sourceNodeQual)).getBytes(Charset.forName("UTF-8"))).toString());
-        Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", sourceNode, PHTNC_MEDIA,
-            sourceTp)).getBytes(Charset.forName("UTF-8"))).toString());
-        Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode,
-            PHTNC_MEDIA)).getBytes(Charset.forName("UTF-8"))).toString());
-        Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes((String.join("+", destNode, PHTNC_MEDIA,
-            destTp)).getBytes(Charset.forName("UTF-8"))).toString());
-        if (!(nodeExists(sourceUuidNode) && nodeExists(destUuidNode)
-                && nepExists(sourceUuidTp, sourceUuidNode) && nepExists(destUuidTp, destUuidNode))) {
-            LOG.error("Verify the input data. No link can be created, "
-                + "as either the node or the tp doesnt exist in the TAPI topology");
-            return null;
-        }
-        NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
-            .setTopologyUuid(this.tapiTopoUuid)
-            .setNodeUuid(sourceUuidNode)
-            .setNodeEdgePointUuid(sourceUuidTp)
-            .build();
-        nepList.put(sourceNep.key(), sourceNep);
-        NodeEdgePoint destNep = new NodeEdgePointBuilder()
-            .setTopologyUuid(this.tapiTopoUuid)
-            .setNodeUuid(destUuidNode)
-            .setNodeEdgePointUuid(destUuidTp)
-            .build();
-        nepList.put(destNep.key(), destNep);
-        Name linkName = new NameBuilder().setValueName(valueName)
-            .setValue(linkId)
-            .build();
-        CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
-            .setCostAlgorithm("Restricted Shortest Path - RSP")
-            .setCostName("HOP_COUNT")
-            .setCostValue("12345678")
-            .build();
-        LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
-            .setFixedLatencyCharacteristic("12345678")
-            .setQueingLatencyCharacteristic("12345678")
-            .setJitterCharacteristic("12345678")
-            .setWanderCharacteristic("12345678")
-            .setTrafficPropertyName("FIXED_LATENCY")
-            .build();
-        RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
-            .setRiskCharacteristicName("risk characteristic")
-            .setRiskIdentifierList(List.of("risk identifier1", "risk identifier2"))
-            .build();
-        ValidationMechanism validationMechanism = new ValidationMechanismBuilder()
-            .setValidationMechanism("validation mechanism")
-            .setValidationRobustness("validation robustness")
-            .setLayerProtocolAdjacencyValidated("layer protocol adjacency")
-            .build();
-        return new LinkBuilder()
-            .setUuid(new Uuid(
-                UUID.nameUUIDFromBytes(linkId.getBytes(Charset.forName("UTF-8")))
-                    .toString()))
-            .setName(Map.of(linkName.key(), linkName))
-            .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
-            .setNodeEdgePoint(nepList)
-            .setDirection(ForwardingDirection.BIDIRECTIONAL)
-            .setTransitionedLayerProtocolName(new ArrayList<>())
-            .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON)
-                .setRestorationPolicy(RestorationPolicy.NA)
-                .build())
-            .setAdministrativeState(AdministrativeState.UNLOCKED)
-            .setOperationalState(OperationalState.ENABLED)
-            .setLifecycleState(LifecycleState.INSTALLED)
-            .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize(
-                new TotalSizeBuilder().setUnit(CapacityUnit.GBPS)
-                    .setValue(Uint64.valueOf(100)).build()).build())
-            .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
-                new TotalSizeBuilder().setUnit(CapacityUnit.MBPS)
-                    .setValue(Uint64.valueOf(100)).build())
-                .build())
-            .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
-            .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
-            .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
-            .setErrorCharacteristic("error")
-            .setLossCharacteristic("loss")
-            .setRepeatDeliveryCharacteristic("repeat delivery")
-            .setDeliveryOrderCharacteristic("delivery order")
-            .setUnavailableTimeCharacteristic("unavailable time")
-            .setServerIntegrityProcessCharacteristic("server integrity process")
-            .setValidationMechanism(Map.of(validationMechanism.key(), validationMechanism))
-            .build();
-    }
-
-    private boolean nepExists(Uuid nepUuid, Uuid nodeUuid) {
-        LOG.info("Checking if nep with uuid {} existis in tapi topology", nepUuid);
-        try {
-            InstanceIdentifier<OwnedNodeEdgePoint> onepIID = InstanceIdentifier.builder(Context.class)
-                .augmentation(Context1.class).child(TopologyContext.class)
-                .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
-                .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nepUuid))
-                .build();
-            Optional<OwnedNodeEdgePoint> optionalOnep = this.networkTransactionService.read(
-                LogicalDatastoreType.OPERATIONAL, onepIID).get();
-            if (!optionalOnep.isPresent()) {
-                LOG.error("ONEP is not present in datastore");
-                return false;
-            }
-            return true;
-        } catch (InterruptedException | ExecutionException e) {
-            LOG.error("Couldnt retrieve nep from datastore");
-            return false;
-        }
-    }
-
-    private boolean nodeExists(Uuid nodeUuid) {
-        LOG.info("Checking if node with uuid {} existis in tapi topology", nodeUuid);
-        try {
-            InstanceIdentifier<Node> nodeIID = InstanceIdentifier.builder(Context.class)
-                .augmentation(Context1.class).child(TopologyContext.class)
-                .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid))
-                .build();
-            Optional<Node> optionalNode = this.networkTransactionService.read(
-                LogicalDatastoreType.OPERATIONAL, nodeIID).get();
-            if (!optionalNode.isPresent()) {
-                LOG.error("Node is not present in datastore");
-                return false;
-            }
-            return true;
-        } catch (InterruptedException | ExecutionException e) {
-            LOG.error("Couldnt retrieve nep from datastore");
-            return false;
-        }
+    public Registration getRegisteredRpc() {
+        return reg;
     }
 
-    private boolean putLinkInTopology(Link tapiLink) {
+    private 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");
@@ -294,7 +175,7 @@ public class TapiNetworkUtilsImpl implements TransportpceTapinetworkutilsService
             .build();
 
         Topology topology = new TopologyBuilder().setUuid(tapiTopoUuid)
-            .setLink(Map.of(tapiLink.key(), tapiLink)).build();
+            .setLink(Map.of(tapLink.key(), tapLink)).build();
 
         // merge in datastore
         this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID,