From: Gilles Thouenon Date: Wed, 15 Mar 2023 20:05:28 +0000 (+0100) Subject: Convert TapiLinkImpl into a Component X-Git-Tag: 8.0.0~74 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=transportpce.git;a=commitdiff_plain;h=e25f274098143d1171db8072a8b6091fb97b8e4a Convert TapiLinkImpl into a Component - Rename TapiLink into TapiLinkImpl and create its associated interface. - Turn TapiLinkImpl into a Component. - Adapt blueprint file removing TapiLink bean. JIRA: TRNSPRTPCE-736 Signed-off-by: Gilles Thouenon Change-Id: Ied0c259a1e6186e0eb3d4fd2993ce150736111ab (cherry picked from commit 3f83898ef90e47a1c85722caff67ee8243dc51fd) --- diff --git a/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java b/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java index 9ee5b91c0..842d5a679 100644 --- a/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java +++ b/lighty/src/main/java/io/lighty/controllers/tpce/module/TransportPCEImpl.java @@ -86,6 +86,7 @@ import org.opendaylight.transportpce.tapi.topology.TapiNetworkUtilsImpl; import org.opendaylight.transportpce.tapi.topology.TapiOrLinkListener; import org.opendaylight.transportpce.tapi.topology.TapiPortMappingListener; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiListener; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererService; @@ -203,7 +204,7 @@ public class TransportPCEImpl extends AbstractLightyModule implements TransportP lightyServices.getBindingNotificationPublishService(), servicehandler, serviceListener); if (activateTapi) { LOG.info("Creating tapi beans ..."); - TapiLink tapiLink = new TapiLink(networkTransaction); + TapiLink tapiLink = new TapiLinkImpl(networkTransaction); R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(networkTransaction, deviceTransactionManager, tapiLink); TapiRendererListenerImpl tapiRendererListenerImpl = new TapiRendererListenerImpl(lightyServices diff --git a/tapi/pom.xml b/tapi/pom.xml index ce3a27c79..b5eb3a7d7 100644 --- a/tapi/pom.xml +++ b/tapi/pom.xml @@ -162,6 +162,10 @@ Author: Martial Coulibaly on behalf of Orange org.opendaylight.netconf sal-netconf-connector + + org.osgi + org.osgi.service.component.annotations + diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java index 6fcd64578..e58b26422 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/impl/TapiProvider.java @@ -32,6 +32,7 @@ import org.opendaylight.transportpce.tapi.topology.TopologyUtils; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiListener; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.TransportpcePceListener; import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.Network; @@ -131,7 +132,7 @@ public class TapiProvider { LOG.info("TapiProvider Session Initiated"); TapiContext tapiContext = new TapiContext(this.networkTransactionService); LOG.info("Empty TAPI context created: {}", tapiContext.getTapiContext()); - TapiLink tapiLink = new TapiLink(this.networkTransactionService); + TapiLink tapiLink = new TapiLinkImpl(this.networkTransactionService); TopologyUtils topologyUtils = new TopologyUtils(this.networkTransactionService, this.dataBroker, tapiLink); ConnectivityUtils connectivityUtils = new ConnectivityUtils(this.serviceDataStoreOperations, new HashMap<>(), tapiContext, this.networkTransactionService); diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java index 4d11a2c97..4fbacab62 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLink.java @@ -1,5 +1,5 @@ /* - * Copyright © 2021 Nokia. All rights reserved. + * Copyright © 2023 Orange, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,289 +7,31 @@ */ package org.opendaylight.transportpce.tapi.utils; -import java.nio.charset.Charset; -import java.util.HashMap; -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.common.api.LogicalDatastoreType; -import org.opendaylight.transportpce.common.network.NetworkTransactionService; -import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; 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.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.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.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.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.Uint64; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -public class TapiLink { +public interface TapiLink { - private static final Logger LOG = LoggerFactory.getLogger(TapiLink.class); - private final NetworkTransactionService networkTransactionService; + Link createTapiLink(String srcNodeid, String srcTpId, String dstNodeId, String dstTpId, String linkType, + String srcNodeQual, String dstNodeQual, String srcTpQual, String dstTpQual, + String adminState, String operState, Set layerProtoNameList, + Set transLayerNameList, Uuid tapiTopoUuid); - public TapiLink(NetworkTransactionService networkTransactionService) { - this.networkTransactionService = networkTransactionService; - } + AdministrativeState setTapiAdminState(String adminState); - public Link createTapiLink(String srcNodeid, String srcTpId, String dstNodeId, String dstTpId, String linkType, - String srcNodeQual, String dstNodeQual, String srcTpQual, String dstTpQual, - String adminState, String operState, Set layerProtoNameList, - Set transLayerNameList, Uuid tapiTopoUuid) { - Map nepList = new HashMap<>(); - String sourceNodeKey = String.join("+", srcNodeid, srcNodeQual); - String sourceNepKey = String.join("+", srcNodeid, srcTpQual, srcTpId); - Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes(sourceNodeKey.getBytes(Charset.forName("UTF-8"))) - .toString()); - Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes(sourceNepKey.getBytes(Charset.forName("UTF-8"))) - .toString()); - String destNodeKey = String.join("+", dstNodeId, dstNodeQual); - String destNepKey = String.join("+", dstNodeId, dstTpQual, dstTpId); - String linkKey = String.join("to", sourceNepKey, destNepKey); - Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes(destNodeKey.getBytes(Charset.forName("UTF-8"))).toString()); - Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes(destNepKey.getBytes(Charset.forName("UTF-8"))).toString()); - NodeEdgePoint sourceNep = new NodeEdgePointBuilder() - .setTopologyUuid(tapiTopoUuid) - .setNodeUuid(sourceUuidNode) - .setNodeEdgePointUuid(sourceUuidTp) - .build(); - nepList.put(sourceNep.key(), sourceNep); - NodeEdgePoint destNep = new NodeEdgePointBuilder() - .setTopologyUuid(tapiTopoUuid) - .setNodeUuid(destUuidNode) - .setNodeEdgePointUuid(destUuidTp) - .build(); - nepList.put(destNep.key(), destNep); - NameBuilder linkName = new NameBuilder(); - // TODO: variables for each type - switch (linkType) { - case TapiStringConstants.OMS_RDM_RDM_LINK: - LOG.info("Roadm to roadm link"); - linkName - .setValueName("OMS link name") - .setValue(linkKey); - break; - case TapiStringConstants.TRANSITIONAL_LINK: - LOG.info("Transitional link"); - linkName - .setValueName("transitional link name") - .setValue(linkKey); - break; - case TapiStringConstants.OMS_XPDR_RDM_LINK: - LOG.info("Xpdr to roadm link"); - linkName - .setValueName("XPDR-RDM link name") - .setValue(linkKey); - break; - case TapiStringConstants.OTN_XPDR_XPDR_LINK: - LOG.info("OTN Xpdr to roadm link"); - linkName - .setValueName("otn link name") - .setValue(linkKey); - break; - default: - LOG.warn("Type {} not recognized", linkType); - return null; - } - // Todo: common aspects of links and set all attributes - CostCharacteristic costCharacteristic = new CostCharacteristicBuilder() - .setCostAlgorithm("Restricted Shortest Path - RSP") - .setCostName("HOP_COUNT") - .setCostValue(TapiStringConstants.COST_HOP_VALUE) - .build(); - LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() - .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) - .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) - .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) - .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) - .setTrafficPropertyName("FIXED_LATENCY") - .build(); - RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder() - .setRiskCharacteristicName("risk characteristic") - .setRiskIdentifierList(Set.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(linkKey.getBytes(Charset.forName("UTF-8"))).toString())) - .setName(Map.of(linkName.build().key(), linkName.build())) - .setTransitionedLayerProtocolName(transLayerNameList) - .setLayerProtocolName(layerProtoNameList) - .setNodeEdgePoint(nepList) - .setDirection(ForwardingDirection.BIDIRECTIONAL) - .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize( - new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()) - .build()) - .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON) - .setRestorationPolicy(RestorationPolicy.NA) - .build()) - .setAdministrativeState(setTapiAdminState(adminState)) - .setOperationalState(setTapiOperationalState(operState)) - .setLifecycleState(LifecycleState.INSTALLED) - .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize( - new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).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(); - } + AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2); - public AdministrativeState setTapiAdminState(String adminState) { - if (adminState == null) { - return null; - } - return adminState.equals(AdminStates.InService.getName()) - || adminState.equals(AdministrativeState.UNLOCKED.getName()) ? AdministrativeState.UNLOCKED - : AdministrativeState.LOCKED; - } + OperationalState setTapiOperationalState(String operState); - public AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) { - if (adminState1 == null || adminState2 == null) { - return null; - } - LOG.info("Admin state 1 = {}, andmin state 2 = {}", adminState1.getName(), adminState2.getName()); - return AdminStates.InService.equals(adminState1) && AdminStates.InService.equals(adminState2) - ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED; - } + OperationalState setTapiOperationalState(State operState1, State operState2); - public OperationalState setTapiOperationalState(String operState) { - if (operState == null) { - return null; - } - return operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName()) - ? OperationalState.ENABLED : OperationalState.DISABLED; - } + String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId); - public OperationalState setTapiOperationalState(State operState1, State operState2) { - if (operState1 == null || operState2 == null) { - return null; - } - return State.InService.equals(operState1) && State.InService.equals(operState2) - ? OperationalState.ENABLED : OperationalState.DISABLED; - } - - public String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) { - Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER - .getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, - TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, - TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString()); - InstanceIdentifier 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(); - Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, - TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, - TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString()); - InstanceIdentifier onep1IID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) - .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid)) - .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid)) - .build(); - try { - Optional optionalOnep = this.networkTransactionService.read( - LogicalDatastoreType.OPERATIONAL, onepIID).get(); - Optional optionalOnep1 = this.networkTransactionService.read( - LogicalDatastoreType.OPERATIONAL, onep1IID).get(); - if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) { - LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid); - return null; - } - return optionalOnep.get().getOperationalState().equals(optionalOnep1.get().getOperationalState()) - ? optionalOnep.get().getOperationalState().getName() : OperationalState.DISABLED.getName(); - } catch (InterruptedException | ExecutionException e) { - LOG.error("Failed getting Mapping data from portMapping",e); - return null; - } - } - - public String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) { - Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER - .getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, - TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, - TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString()); - InstanceIdentifier 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(); - Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, - TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, - TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString()); - InstanceIdentifier onep1IID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) - .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid)) - .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid)) - .build(); - try { - Optional optionalOnep = this.networkTransactionService.read( - LogicalDatastoreType.OPERATIONAL, onepIID).get(); - Optional optionalOnep1 = this.networkTransactionService.read( - LogicalDatastoreType.OPERATIONAL, onep1IID).get(); - if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) { - LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid); - return null; - } - return optionalOnep.get().getAdministrativeState().equals(optionalOnep1.get().getAdministrativeState()) - ? optionalOnep.get().getAdministrativeState().getName() : AdministrativeState.UNLOCKED.getName(); - } catch (InterruptedException | ExecutionException e) { - LOG.error("Failed getting Mapping data from portMapping",e); - return null; - } - } + String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId); } diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java new file mode 100644 index 000000000..d33c9bdec --- /dev/null +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/utils/TapiLinkImpl.java @@ -0,0 +1,300 @@ +/* + * Copyright © 2021 Nokia. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.transportpce.tapi.utils; + +import java.nio.charset.Charset; +import java.util.HashMap; +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.common.api.LogicalDatastoreType; +import org.opendaylight.transportpce.common.network.NetworkTransactionService; +import org.opendaylight.transportpce.tapi.TapiStringConstants; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; +import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; +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.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.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.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.yangtools.yang.binding.InstanceIdentifier; +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.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Component +public class TapiLinkImpl implements TapiLink { + + private static final Logger LOG = LoggerFactory.getLogger(TapiLinkImpl.class); + private final NetworkTransactionService networkTransactionService; + + @Activate + public TapiLinkImpl(@Reference NetworkTransactionService networkTransactionService) { + this.networkTransactionService = networkTransactionService; + } + + public Link createTapiLink(String srcNodeid, String srcTpId, String dstNodeId, String dstTpId, String linkType, + String srcNodeQual, String dstNodeQual, String srcTpQual, String dstTpQual, + String adminState, String operState, Set layerProtoNameList, + Set transLayerNameList, Uuid tapiTopoUuid) { + Map nepList = new HashMap<>(); + String sourceNodeKey = String.join("+", srcNodeid, srcNodeQual); + String sourceNepKey = String.join("+", srcNodeid, srcTpQual, srcTpId); + Uuid sourceUuidNode = new Uuid(UUID.nameUUIDFromBytes(sourceNodeKey.getBytes(Charset.forName("UTF-8"))) + .toString()); + Uuid sourceUuidTp = new Uuid(UUID.nameUUIDFromBytes(sourceNepKey.getBytes(Charset.forName("UTF-8"))) + .toString()); + String destNodeKey = String.join("+", dstNodeId, dstNodeQual); + String destNepKey = String.join("+", dstNodeId, dstTpQual, dstTpId); + String linkKey = String.join("to", sourceNepKey, destNepKey); + Uuid destUuidNode = new Uuid(UUID.nameUUIDFromBytes(destNodeKey.getBytes(Charset.forName("UTF-8"))).toString()); + Uuid destUuidTp = new Uuid(UUID.nameUUIDFromBytes(destNepKey.getBytes(Charset.forName("UTF-8"))).toString()); + NodeEdgePoint sourceNep = new NodeEdgePointBuilder() + .setTopologyUuid(tapiTopoUuid) + .setNodeUuid(sourceUuidNode) + .setNodeEdgePointUuid(sourceUuidTp) + .build(); + nepList.put(sourceNep.key(), sourceNep); + NodeEdgePoint destNep = new NodeEdgePointBuilder() + .setTopologyUuid(tapiTopoUuid) + .setNodeUuid(destUuidNode) + .setNodeEdgePointUuid(destUuidTp) + .build(); + nepList.put(destNep.key(), destNep); + NameBuilder linkName = new NameBuilder(); + // TODO: variables for each type + switch (linkType) { + case TapiStringConstants.OMS_RDM_RDM_LINK: + LOG.info("Roadm to roadm link"); + linkName + .setValueName("OMS link name") + .setValue(linkKey); + break; + case TapiStringConstants.TRANSITIONAL_LINK: + LOG.info("Transitional link"); + linkName + .setValueName("transitional link name") + .setValue(linkKey); + break; + case TapiStringConstants.OMS_XPDR_RDM_LINK: + LOG.info("Xpdr to roadm link"); + linkName + .setValueName("XPDR-RDM link name") + .setValue(linkKey); + break; + case TapiStringConstants.OTN_XPDR_XPDR_LINK: + LOG.info("OTN Xpdr to roadm link"); + linkName + .setValueName("otn link name") + .setValue(linkKey); + break; + default: + LOG.warn("Type {} not recognized", linkType); + return null; + } + // Todo: common aspects of links and set all attributes + CostCharacteristic costCharacteristic = new CostCharacteristicBuilder() + .setCostAlgorithm("Restricted Shortest Path - RSP") + .setCostName("HOP_COUNT") + .setCostValue(TapiStringConstants.COST_HOP_VALUE) + .build(); + LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder() + .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE) + .setQueingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE) + .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE) + .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE) + .setTrafficPropertyName("FIXED_LATENCY") + .build(); + RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder() + .setRiskCharacteristicName("risk characteristic") + .setRiskIdentifierList(Set.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(linkKey.getBytes(Charset.forName("UTF-8"))).toString())) + .setName(Map.of(linkName.build().key(), linkName.build())) + .setTransitionedLayerProtocolName(transLayerNameList) + .setLayerProtocolName(layerProtoNameList) + .setNodeEdgePoint(nepList) + .setDirection(ForwardingDirection.BIDIRECTIONAL) + .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize( + new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()) + .build()) + .setResilienceType(new ResilienceTypeBuilder().setProtectionType(ProtectionType.NOPROTECTON) + .setRestorationPolicy(RestorationPolicy.NA) + .build()) + .setAdministrativeState(setTapiAdminState(adminState)) + .setOperationalState(setTapiOperationalState(operState)) + .setLifecycleState(LifecycleState.INSTALLED) + .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().setTotalSize( + new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).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(); + } + + public AdministrativeState setTapiAdminState(String adminState) { + if (adminState == null) { + return null; + } + return adminState.equals(AdminStates.InService.getName()) + || adminState.equals(AdministrativeState.UNLOCKED.getName()) ? AdministrativeState.UNLOCKED + : AdministrativeState.LOCKED; + } + + public AdministrativeState setTapiAdminState(AdminStates adminState1, AdminStates adminState2) { + if (adminState1 == null || adminState2 == null) { + return null; + } + LOG.info("Admin state 1 = {}, andmin state 2 = {}", adminState1.getName(), adminState2.getName()); + return AdminStates.InService.equals(adminState1) && AdminStates.InService.equals(adminState2) + ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED; + } + + public OperationalState setTapiOperationalState(String operState) { + if (operState == null) { + return null; + } + return operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName()) + ? OperationalState.ENABLED : OperationalState.DISABLED; + } + + public OperationalState setTapiOperationalState(State operState1, State operState2) { + if (operState1 == null || operState2 == null) { + return null; + } + return State.InService.equals(operState1) && State.InService.equals(operState2) + ? OperationalState.ENABLED : OperationalState.DISABLED; + } + + public String getOperState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) { + Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER + .getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, + TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, + TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString()); + InstanceIdentifier 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(); + Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, + TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, + TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString()); + InstanceIdentifier onep1IID = InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class).child(TopologyContext.class) + .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid)) + .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid)) + .build(); + try { + Optional optionalOnep = this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, onepIID).get(); + Optional optionalOnep1 = this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, onep1IID).get(); + if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) { + LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid); + return null; + } + return optionalOnep.get().getOperationalState().equals(optionalOnep1.get().getOperationalState()) + ? optionalOnep.get().getOperationalState().getName() : OperationalState.DISABLED.getName(); + } catch (InterruptedException | ExecutionException e) { + LOG.error("Failed getting Mapping data from portMapping",e); + return null; + } + } + + public String getAdminState(String srcNodeId, String destNodeId, String sourceTpId, String destTpId) { + Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER + .getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, + TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", srcNodeId, + TapiStringConstants.PHTNC_MEDIA, sourceTpId).getBytes(Charset.forName("UTF-8"))).toString()); + InstanceIdentifier 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(); + Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, + TapiStringConstants.PHTNC_MEDIA).getBytes(Charset.forName("UTF-8"))).toString()); + Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", destNodeId, + TapiStringConstants.PHTNC_MEDIA, destTpId).getBytes(Charset.forName("UTF-8"))).toString()); + InstanceIdentifier onep1IID = InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class).child(TopologyContext.class) + .child(Topology.class, new TopologyKey(tapiTopoUuid)).child(Node.class, new NodeKey(node1Uuid)) + .child(OwnedNodeEdgePoint.class, new OwnedNodeEdgePointKey(nep1Uuid)) + .build(); + try { + Optional optionalOnep = this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, onepIID).get(); + Optional optionalOnep1 = this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, onep1IID).get(); + if (!optionalOnep.isPresent() || !optionalOnep1.isPresent()) { + LOG.error("One of the 2 neps doesnt exist in the datastore: {} OR {}", nepUuid, nep1Uuid); + return null; + } + return optionalOnep.get().getAdministrativeState().equals(optionalOnep1.get().getAdministrativeState()) + ? optionalOnep.get().getAdministrativeState().getName() : AdministrativeState.UNLOCKED.getName(); + } catch (InterruptedException | ExecutionException e) { + LOG.error("Failed getting Mapping data from portMapping",e); + return null; + } + } +} diff --git a/tapi/src/main/resources/OSGI-INF/blueprint/tapi-blueprint.xml b/tapi/src/main/resources/OSGI-INF/blueprint/tapi-blueprint.xml index 83522f98a..77e28e650 100644 --- a/tapi/src/main/resources/OSGI-INF/blueprint/tapi-blueprint.xml +++ b/tapi/src/main/resources/OSGI-INF/blueprint/tapi-blueprint.xml @@ -34,16 +34,12 @@ Author: Gilles Thouenon + - - - - diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java index 8ae33a138..deab1ea8b 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/connectivity/TapiConnectivityImplTest.java @@ -45,6 +45,7 @@ import org.opendaylight.transportpce.tapi.utils.TapiConnectivityDataUtils; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; import org.opendaylight.transportpce.test.utils.TopologyDataUtils; @@ -110,7 +111,7 @@ public class TapiConnectivityImplTest extends AbstractTest { TapiTopologyDataUtils.PORTMAPPING_FILE); networkTransactionService = new NetworkTransactionImpl(getDataBroker()); - tapilink = new TapiLink(networkTransactionService); + tapilink = new TapiLinkImpl(networkTransactionService); serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(getDataStoreContextUtil().getDataBroker()); tapiContext = new TapiContext(networkTransactionService); topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker(), diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java index 272caa5b2..ed92f5aad 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToFullTapiTopoTest.java @@ -39,6 +39,7 @@ import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; import org.opendaylight.transportpce.test.utils.TopologyDataUtils; @@ -196,7 +197,7 @@ public class ConvertORTopoToFullTapiTopoTest extends AbstractTest { topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER.getBytes( Charset.forName("UTF-8"))).toString()); networkTransactionService = new NetworkTransactionImpl(getDataBroker()); - tapiLink = new TapiLink(networkTransactionService); + tapiLink = new TapiLinkImpl(networkTransactionService); LOG.info("TEST SETUP READY"); } diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java index 001e944e0..1eaf0022c 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopoTest.java @@ -37,6 +37,7 @@ import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; import org.opendaylight.transportpce.test.utils.TopologyDataUtils; @@ -162,7 +163,7 @@ public class ConvertORTopoToTapiTopoTest extends AbstractTest { topologyUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_MULTILAYER.getBytes( Charset.forName("UTF-8"))).toString()); networkTransactionService = new NetworkTransactionImpl(getDataBroker()); - tapiLink = new TapiLink(networkTransactionService); + tapiLink = new TapiLinkImpl(networkTransactionService); LOG.info("TEST SETUP READY"); } diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java index 31556e8c5..7fb3b598f 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java @@ -29,6 +29,7 @@ import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutput; @@ -61,7 +62,7 @@ public class TapiTopologyImplExceptionTest { }; when(networkTransactionService.commit()).then(answer); tapiContext = new TapiContext(networkTransactionService); - tapiLink = new TapiLink(networkTransactionService); + tapiLink = new TapiLinkImpl(networkTransactionService); GetTopologyDetailsInput input = TapiTopologyDataUtils.buildGetTopologyDetailsInput( TapiStringConstants.T0_MULTILAYER); diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java index fd339a28b..346c7590f 100644 --- a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java +++ b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java @@ -39,6 +39,7 @@ import org.opendaylight.transportpce.tapi.connectivity.ConnectivityUtils; import org.opendaylight.transportpce.tapi.utils.TapiContext; import org.opendaylight.transportpce.tapi.utils.TapiInitialORMapping; import org.opendaylight.transportpce.tapi.utils.TapiLink; +import org.opendaylight.transportpce.tapi.utils.TapiLinkImpl; import org.opendaylight.transportpce.tapi.utils.TapiTopologyDataUtils; import org.opendaylight.transportpce.test.AbstractTest; import org.opendaylight.transportpce.test.utils.TopologyDataUtils; @@ -105,7 +106,7 @@ public class TapiTopologyImplTest extends AbstractTest { TopologyDataUtils.writePortmappingFromFileToDatastore(getDataStoreContextUtil(), TapiTopologyDataUtils.PORTMAPPING_FILE); networkTransactionService = new NetworkTransactionImpl(getDataBroker()); - tapiLink = new TapiLink(networkTransactionService); + tapiLink = new TapiLinkImpl(networkTransactionService); serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(getDataStoreContextUtil().getDataBroker()); tapiContext = new TapiContext(networkTransactionService); topologyUtils = new TopologyUtils(networkTransactionService, getDataStoreContextUtil().getDataBroker(),