From 10853955a456cf690fb5c8b83e57b52cb5680092 Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Mon, 22 Apr 2024 16:30:57 +0200 Subject: [PATCH] Refactor TAPI TapiNetworkModelServiceImpl JIRA: TRNSPRTPCE-735 Signed-off-by: guillaume.lambert Change-Id: I1e9ed1dd865f954f7d1626ac8e195a4cf1b3d48e --- .../topology/TapiNetworkModelServiceImpl.java | 870 +++++++++--------- 1 file changed, 412 insertions(+), 458 deletions(-) diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java index 5a1669cd7..53f509878 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiNetworkModelServiceImpl.java @@ -44,7 +44,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.re import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityKey; @@ -106,8 +105,6 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.No import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.TOPOLOGYOBJECTTYPENODEEDGEPOINT; 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.node.InterRuleGroup; -import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.InterRuleGroupKey; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey; @@ -141,7 +138,6 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.tr import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic; import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.Notification; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint64; @@ -192,7 +188,6 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } this.sipMap.clear(); LOG.info("Mapping of node {}: {}", orNodeId, node.getMapping().values()); - // check type of device, check version and create node mapping switch (node.getNodeInfo().getNodeType()) { case Rdm: @@ -202,11 +197,8 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { Map> mapSrg = new HashMap<>(); List mappingList = new ArrayList<>(node.nonnullMapping().values()); mappingList.sort(Comparator.comparing(Mapping::getLogicalConnectionPoint)); - - List nodeShardList = getRoadmNodelist(mappingList); - // populate degree and srg LCP map - for (String str : nodeShardList) { + for (String str : getRoadmNodelist(mappingList)) { List interList = mappingList.stream() .filter(x -> x.getLogicalConnectionPoint().contains(str)) .collect(Collectors.toList()); @@ -250,7 +242,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { new SupportedCepLayerProtocolQualifierInstancesBuilder() .setNumberOfCepInstances(Uint64.valueOf(1)) .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE) - .build())) + .build())) .collect(Collectors.toList())); LOG.debug("TAPINETWORKMODELSERVICEIMPL DEG+SRG complete retrieved OnepMap {} ", onepMap); // create tapi Node @@ -258,7 +250,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { mergeNodeinTopology(Map.of(roadmNode.key(), roadmNode)); mergeSipsinContext(this.sipMap); // TODO add states corresponding to device config -> based on mapping. - // This should be possible after Gilles work is merged + // This should be possible after Gilles work is merged // rdm to rdm link creation if neighbour roadm is mounted LOG.info("checking if neighbor roadm exists"); @@ -271,33 +263,34 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { break; case Xpdr: - List networkMappings = node.nonnullMapping().values().stream() - .filter(k -> k.getLogicalConnectionPoint().contains("NETWORK")) - .collect(Collectors.toList()); Map xpdrMap = new HashMap<>(); - for (Mapping mapping : networkMappings) { + for (Mapping mapping : node.nonnullMapping().values().stream() + .filter(k -> k.getLogicalConnectionPoint().contains("NETWORK")) + .collect(Collectors.toList())) { Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]); String nodeId = node.getNodeId() + TapiStringConstants.XXPDR + xpdrNb; - if (!xpdrMap.containsKey(xpdrNb)) { - List xpdrNetMaps = node.nonnullMapping().values() - .stream().filter(k -> k.getLogicalConnectionPoint() - .contains("XPDR" + xpdrNb + TapiStringConstants.NETWORK)).collect(Collectors.toList()); - List xpdrClMaps = node.nonnullMapping().values() - .stream().filter(k -> k.getLogicalConnectionPoint() - .contains("XPDR" + xpdrNb + TapiStringConstants.CLIENT)).collect(Collectors.toList()); - xpdrMap.put(xpdrNb, node.getNodeId()); - // create switching pool - OduSwitchingPools oorOduSwitchingPool = createSwitchPoolForXpdr( - mapping.getXpdrType().getIntValue(), xpdrClMaps, xpdrNetMaps, xpdrNb); - // node transformation - Map nodeMap = new HashMap<>( - transformXpdrToTapiNode( - nodeId, xpdrClMaps, xpdrNetMaps, mapping.getXpdrType(), oorOduSwitchingPool)); - // add nodes and sips to tapi context - mergeNodeinTopology(nodeMap); - mergeSipsinContext(this.sipMap); + if (xpdrMap.containsKey(xpdrNb)) { + continue; } + List xpdrNetMaps = node.nonnullMapping().values().stream() + .filter(k -> k.getLogicalConnectionPoint() + .contains("XPDR" + xpdrNb + TapiStringConstants.NETWORK)) + .collect(Collectors.toList()); + List xpdrClMaps = node.nonnullMapping().values().stream() + .filter(k -> k.getLogicalConnectionPoint() + .contains("XPDR" + xpdrNb + TapiStringConstants.CLIENT)) + .collect(Collectors.toList()); + xpdrMap.put(xpdrNb, node.getNodeId()); + // create switching pool + OduSwitchingPools oorOduSwitchingPool = + createSwitchPoolForXpdr(mapping.getXpdrType(), xpdrClMaps, xpdrNetMaps, xpdrNb); + // add nodes and sips to tapi context + mergeNodeinTopology(new HashMap<>( + // node transformation + transformXpdrToTapiNode( + nodeId, xpdrClMaps, xpdrNetMaps, mapping.getXpdrType(), oorOduSwitchingPool))); + mergeSipsinContext(this.sipMap); } LOG.info("TAPI node for or node {} successfully merged", orNodeId); break; @@ -310,8 +303,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { @Override public void updateTapiTopology(String nodeId, Mapping mapping) { - List uuids = getChangedNodeUuids(nodeId, mapping); - List changedOneps = updateNeps(mapping, uuids); + List changedOneps = updateNeps(mapping, getChangedNodeUuids(nodeId, mapping)); updateLinks(changedOneps, mapping); sendNotification(changedOneps, mapping); LOG.info("Updated TAPI topology successfully."); @@ -319,16 +311,16 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { @SuppressWarnings("rawtypes") private void sendNotification(List changedOneps, Mapping mapping) { - Notification notification = new NotificationBuilder() - .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) -// .setTargetObjectType(ObjectType.NODEEDGEPOINT) - //TODO: Change this : modification in Models 2.4 does not provide for Object type Node EdgePoint - .setTargetObjectType(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE) - .setChangedAttributes(getChangedAttributes(changedOneps, mapping)) - .setUuid(tapiTopoUuid) - .build(); try { - notificationPublishService.putNotification(notification); + notificationPublishService.putNotification( + new NotificationBuilder() + .setNotificationType(NOTIFICATIONTYPEATTRIBUTEVALUECHANGE.VALUE) + // .setTargetObjectType(ObjectType.NODEEDGEPOINT) + //TODO: Change this : modification in Models 2.4 does not provide for Object type Node EdgePoint + .setTargetObjectType(TOPOLOGYOBJECTTYPENODEEDGEPOINT.VALUE) + .setChangedAttributes(getChangedAttributes(changedOneps, mapping)) + .setUuid(tapiTopoUuid) + .build()); } catch (InterruptedException e) { LOG.error("Could not send notification"); } @@ -337,12 +329,16 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private Map getChangedAttributes( List changedOneps, Mapping mapping) { Map changedAttributes = new HashMap<>(); + String operState = mapping.getPortOperState(); + String oldState = operState.equals("InService") ? "OutOfService" : "InService"; for (Uuid nep : changedOneps) { + String nepVal = nep.getValue(); changedAttributes.put( - new ChangedAttributesKey(nep.getValue()), - new ChangedAttributesBuilder().setValueName(nep.getValue()) - .setOldValue(mapping.getPortOperState().equals("InService") ? "OutOfService" : "InService") - .setNewValue(mapping.getPortOperState()) + new ChangedAttributesKey(nepVal), + new ChangedAttributesBuilder() + .setValueName(nepVal) + .setOldValue(oldState) + .setNewValue(operState) .build()); } return changedAttributes; @@ -350,18 +346,23 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void updateLinks(List changedOneps, Mapping mapping) { try { - InstanceIdentifier topoIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) - .child(Topology.class, new TopologyKey(tapiTopoUuid)) - .build(); Optional optTopology = - this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, topoIID).get(); + this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(tapiTopoUuid)) + .build()) + .get(); if (optTopology.isEmpty()) { LOG.error("Could not update TAPI links"); return; } int nbAffectedLinks = 0; - LOG.info("UUIDofAffectedONEPS = {} ", changedOneps.toString()); + LOG.info("UUIDofAffectedONEPS = {} ", changedOneps); + AdministrativeState newAdmState = transformAdminState(mapping.getPortAdminState()); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); for (Link link : optTopology.orElseThrow().nonnullLink().values()) { List linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream() .map(NodeEdgePointRef::getNodeEdgePointUuid) @@ -370,14 +371,19 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { if (Collections.disjoint(changedOneps, linkNeps)) { continue; } - InstanceIdentifier linkIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) .child(Topology.class, new TopologyKey(tapiTopoUuid)) - .child(Link.class, new LinkKey(link.getUuid())).build(); - Link linkblr = new LinkBuilder().setUuid(link.getUuid()) - .setAdministrativeState(transformAdminState(mapping.getPortAdminState())) - .setOperationalState(transformOperState(mapping.getPortOperState())).build(); - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, linkIID, linkblr); + .child(Link.class, new LinkKey(link.getUuid())) + .build(), + new LinkBuilder() + .setUuid(link.getUuid()) + .setAdministrativeState(newAdmState) + .setOperationalState(newOprState) + .build()); nbAffectedLinks++ ; } LOG.info("AffectedLinksNb = {} ", nbAffectedLinks); @@ -389,41 +395,47 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private List updateNeps(Mapping mapping, List uuids) { List changedOneps = new ArrayList<>(); + AdministrativeState newAdmState = transformAdminState(mapping.getPortAdminState()); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); for (Uuid nodeUuid : uuids) { try { - InstanceIdentifier 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 optionalNode = - this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, nodeIID).get(); + this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(tapiTopoUuid)) + .child(Node.class, new NodeKey(nodeUuid)) + .build()) + .get(); if (optionalNode.isEmpty()) { continue; } - Node node = optionalNode.orElseThrow(); - List oneps = node.getOwnedNodeEdgePoint().values().stream() + for (OwnedNodeEdgePoint onep : optionalNode.orElseThrow().getOwnedNodeEdgePoint().values().stream() .filter(onep -> ((Name) onep.getName().values().toArray()[0]).getValue() .contains(mapping.getLogicalConnectionPoint())) - .collect(Collectors.toList()); - for (OwnedNodeEdgePoint onep : oneps) { + .collect(Collectors.toList())) { changedOneps.add(onep.getUuid()); updateSips(mapping, onep); - CepList cepList = getUpdatedCeps(mapping, onep); - InstanceIdentifier onepIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + 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(onep.getUuid())) - .build(); - OwnedNodeEdgePoint onepblr = new OwnedNodeEdgePointBuilder().setUuid(onep.getUuid()) - .addAugmentation(new OwnedNodeEdgePoint1Builder().setCepList(cepList).build()) - .setAdministrativeState(transformAdminState(mapping.getPortAdminState())) - .setOperationalState(transformOperState(mapping.getPortOperState())).build(); - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, onepIID, onepblr); + .build(), + new OwnedNodeEdgePointBuilder() + .setUuid(onep.getUuid()) + .addAugmentation( + new OwnedNodeEdgePoint1Builder().setCepList(getUpdatedCeps(mapping, onep)).build()) + .setAdministrativeState(newAdmState) + .setOperationalState(newOprState) + .build()); LOG.info("UpdatedNEP {} of UUID {} to ADMIN {} OPER {}", - onep.getName().toString(), onep.getUuid(), - transformAdminState(mapping.getPortAdminState()), - transformOperState(mapping.getPortOperState())); + onep.getName(), onep.getUuid(), newAdmState, newOprState); } this.networkTransactionService.commit().get(); } catch (InterruptedException | ExecutionException e) { @@ -435,24 +447,23 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private CepList getUpdatedCeps(Mapping mapping, OwnedNodeEdgePoint onep) { OwnedNodeEdgePoint1 onep1 = onep.augmentation(OwnedNodeEdgePoint1.class); - CepList guardClauseCepList = new CepListBuilder().setConnectionEndPoint(new HashMap<>()).build(); if (onep1 == null) { - return guardClauseCepList; + return new CepListBuilder().setConnectionEndPoint(new HashMap<>()).build(); } CepList onep1CepList = onep1.getCepList(); if (onep1CepList == null) { - return guardClauseCepList; + return new CepListBuilder().setConnectionEndPoint(new HashMap<>()).build(); } var onep1CepListConnEndPoint = onep1CepList.getConnectionEndPoint(); if (onep1CepListConnEndPoint == null) { - return guardClauseCepList; + return new CepListBuilder().setConnectionEndPoint(new HashMap<>()).build(); } Map cepMap = new HashMap<>(); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); for (Map.Entry entry : onep1CepListConnEndPoint.entrySet()) { - ConnectionEndPoint cep = new ConnectionEndPointBuilder(entry.getValue()) - .setOperationalState(transformOperState(mapping.getPortOperState())) - .build(); - cepMap.put(entry.getKey(), cep); + cepMap.put( + entry.getKey(), + new ConnectionEndPointBuilder(entry.getValue()).setOperationalState(newOprState).build()); } return new CepListBuilder().setConnectionEndPoint(cepMap).build(); } @@ -466,11 +477,16 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } if (nodeId.contains("PDR")) { LOG.debug("ANALYSING change in {}", nodeId); - int xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]); - String xpdrNodeId = nodeId + TapiStringConstants.XXPDR + xpdrNb; return new ArrayList<>(List.of(new Uuid( UUID.nameUUIDFromBytes( - (String.join("+", xpdrNodeId, TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8)) + (String.join("+", + //xpdrNodeId, + nodeId + TapiStringConstants.XXPDR + // + xpdrNb, + + Integer.parseInt( + mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]), + TapiStringConstants.XPDR)) + .getBytes(StandardCharsets.UTF_8)) .toString()))); } LOG.error("Updating this device is currently not supported"); @@ -478,65 +494,55 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private void updateSips(Mapping mapping, OwnedNodeEdgePoint onep) { - if (onep.getMappedServiceInterfacePoint() == null || onep.getMappedServiceInterfacePoint().size() == 0) { + if (onep.getMappedServiceInterfacePoint() == null) { return; } - //TODO remove onep.getMappedServiceInterfacePoint().size() == 0 check -> a for-loop on empty list won't harm + AdministrativeState newAdmState = transformAdminState(mapping.getPortAdminState()); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); for (MappedServiceInterfacePoint msip : onep.getMappedServiceInterfacePoint().values()) { - InstanceIdentifier sipIID = InstanceIdentifier + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier .builder(Context.class) .child(ServiceInterfacePoint.class, new ServiceInterfacePointKey(msip.getServiceInterfacePointUuid())) - .build(); - ServiceInterfacePoint sipblr = new ServiceInterfacePointBuilder() + .build(), + new ServiceInterfacePointBuilder() .setUuid(msip.getServiceInterfacePointUuid()) - .setAdministrativeState(transformAdminState(mapping.getPortAdminState())) - .setOperationalState(transformOperState(mapping.getPortOperState())).build(); - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, sipIID, sipblr); + .setAdministrativeState(newAdmState) + .setOperationalState(newOprState) + .build()); } - } private Map transformXpdrToTapiNode(String nodeId, List xpdrClMaps, List xpdrNetMaps, XpdrNodeTypes xponderType, OduSwitchingPools oorOduSwitchingPool) { - Map nodeMap = new HashMap<>(); LOG.info("creation of a DSR/ODU node for {}", nodeId); - Uuid nodeUuidDsr = new Uuid( - UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.XPDR)).getBytes(StandardCharsets.UTF_8)) - .toString()); - Name nameDsr = new NameBuilder() - .setValueName("dsr/odu node name") - .setValue(String.join("+", nodeId, TapiStringConstants.XPDR)) - .build(); - Name nameOtsi = new NameBuilder() - .setValueName("otsi node name") - .setValue(String.join("+", nodeId, TapiStringConstants.XPDR)) - .build(); + String nameVal = String.join("+", nodeId, TapiStringConstants.XPDR); + Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(nameVal).build(); + Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(nameVal).build(); Name nameNodeType = new NameBuilder().setValueName("Node Type").setValue(getNodeType(xponderType)).build(); - Set dsrLayerProtocols = Set.of( - LayerProtocolName.DSR, LayerProtocolName.ODU, - LayerProtocolName.DIGITALOTN, LayerProtocolName.PHOTONICMEDIA); Node dsrNode = createTapiXpdrNode( - Map.of(nameDsr.key(), nameDsr, nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType), - dsrLayerProtocols, nodeId, nodeUuidDsr, xpdrClMaps, xpdrNetMaps, xponderType, oorOduSwitchingPool); - nodeMap.put(dsrNode.key(), dsrNode); - return nodeMap; + Map.of(nameDsr.key(), nameDsr, nameOtsi.key(), nameOtsi, nameNodeType.key(), nameNodeType), + Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU, + LayerProtocolName.DIGITALOTN, LayerProtocolName.PHOTONICMEDIA), + nodeId, new Uuid(UUID.nameUUIDFromBytes(nameVal.getBytes(StandardCharsets.UTF_8)).toString()), + xpdrClMaps, xpdrNetMaps, xponderType, oorOduSwitchingPool); + return new HashMap<>(Map.of(dsrNode.key(), dsrNode)); } private OduSwitchingPools createSwitchPoolForXpdr( - int xpdrType, List xpdrClMaps, List xpdrNetMaps, Integer xpdrNb) { + XpdrNodeTypes xpdrType, List xpdrClMaps, List xpdrNetMaps, Integer xpdrNb) { //TODO are switching pool correct here?? switch (xpdrType) { - case 1: - // Tpdr + case Tpdr: return createTpdrSwitchPool(xpdrNetMaps); - case 2: - // Mux + case Mpdr: return createMuxSwitchPool(xpdrClMaps, xpdrNetMaps, xpdrNb); - case 3: - // Switch + case Switch: return createSwtchSwitchPool(xpdrClMaps, xpdrNetMaps, xpdrNb); + // case Regen: + // case RegenUni: default: LOG.warn("Xpdr type {} not supported", xpdrType); } @@ -550,7 +556,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { //List tpList = new ArrayList<>(); for (Map.Entry> entry : mapSrg.entrySet()) { // For each srg node. Loop through the LCPs and create neps and sips for PP - for (Mapping m:entry.getValue()) { + for (Mapping m : entry.getValue()) { String tpId = m.getLogicalConnectionPoint(); String overlayNodeId = String.join("-", orNodeId, tpId.split("\\-")[0]); if (!tpId.contains("PP")) { @@ -559,37 +565,40 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } int counter = 50; do { - counter--; + var netTP1fromDS = getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId); + if (netTP1fromDS != null) { + //tpList.add(netTP1fromDS); + tpMap.put(tpId, netTP1fromDS); + LOG.debug("LCP {} is not empty for augmentation TP1", tpId); + break; + } try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block LOG.debug("Waiting until PP is backported in Topology, Exception raised", e); } - } while (getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId) == null && counter != 0); - if (getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId) != null) { - //tpList.add(getNetworkTerminationPointFromDatastore(overlayNodeId, tpId)); - tpMap.put(tpId, getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId)); - LOG.debug("LCP {} is not empty for augmentation TP1", tpId); - } else { + counter--; + } while (counter > 0); + if (counter == 0) { LOG.error("CREATENEP transformSrgToOnep, No Tp1 found in topology for LCP {}, of NodeId {} ", tpId, overlayNodeId); } - if (getNetworkTerminationPoint11FromDatastore(overlayNodeId, tpId) != null) { - LOG.info("LCP {} is not empty for augmentation TP11", tpId); - } else { + if (getNetworkTerminationPoint11FromDatastore(overlayNodeId, tpId) == null) { LOG.error("CREATENEP transformSrgToOnep, No Tp11 found in topology for LCP {}, of NodeId {} ", tpId, overlayNodeId); + } else { + LOG.info("LCP {} is not empty for augmentation TP11", tpId); } } } LOG.debug("TransformSRGToONep for tps {}, of NodeId {} ", - tpMap.entrySet().stream().map(tp -> tp.getKey()).collect(Collectors.toList()).toString(), orNodeId); + tpMap.entrySet().stream().map(tp -> tp.getKey()).collect(Collectors.toList()), orNodeId); return populateNepsForRdmNode(orNodeId, tpMap, false, TapiStringConstants.PHTNC_MEDIA_OTS); } - private Map transformDegToOnep(String orNodeId, - Map> mapDeg) { + private Map transformDegToOnep( + String orNodeId, Map> mapDeg) { LOG.debug("CREATENEP transformDegToOnep, ListOfMapping {}, of NodeId {} ", mapDeg, orNodeId); Map degOnepMap = new HashMap<>(); Map tpMap = new HashMap<>(); @@ -603,13 +612,14 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { continue; } String overlayNodeId = String.join("-", orNodeId, tpId.split("\\-")[0]); - if (getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId) == null) { + var netTP1fromDS = getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId); + if (netTP1fromDS == null) { LOG.error("CREATENEP transformDegToOnep, No Tp found in topology for LCP {}, of NodeId {} ", tpId, overlayNodeId); continue; } //tpList.add(getNetworkTerminationPointFromDatastore(overlayNodeId, tpId)); - tpMap.put(tpId, getNetworkTerminationPoint1FromDatastore(overlayNodeId, tpId)); + tpMap.put(tpId, netTP1fromDS); LOG.info("LCP {} is not empty for augmentation TP1", tpId); } } @@ -713,13 +723,14 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { return; } Map sips = context.getServiceInterfacePoint(); - if (sips != null) { - for (ServiceInterfacePoint sip:sips.values()) { - if (sip.getName().values().stream().anyMatch(name -> name.getValue().contains(nodeId))) { - // Update state of services that have this sip as an endpoint and also connections - updateConnectivityServicesState(sip.getUuid(), nodeId); - deleteSipFromTopo(sip.getUuid()); - } + if (sips == null) { + return; + } + for (ServiceInterfacePoint sip:sips.values()) { + if (sip.getName().values().stream().anyMatch(name -> name.getValue().contains(nodeId))) { + // Update state of services that have this sip as an endpoint and also connections + updateConnectivityServicesState(sip.getUuid(), nodeId); + deleteSipFromTopo(sip.getUuid()); } } } @@ -729,26 +740,23 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { String nodeId, Uuid nodeUuid, List xpdrClMaps, List xpdrNetMaps, XpdrNodeTypes xponderType, OduSwitchingPools oorOduSwitchingPool) { - Map ruleList = new HashMap<>(); - Set ruleTypes = new HashSet<>(); - ruleTypes.add(RuleType.FORWARDING); + if (!layerProtocols.contains(LayerProtocolName.DSR) + || !layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) { + LOG.error("Undefined LayerProtocolName for {} node {}", + nameMap.get(nameMap.keySet().iterator().next()).getValueName(), + nameMap.get(nameMap.keySet().iterator().next()).getValue()); + } + Map onepl = + new HashMap<>(createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType)); Rule rule = new RuleBuilder() .setLocalId("forward") .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE) - .setRuleType(ruleTypes) + .setRuleType(new HashSet<>(Set.of(RuleType.FORWARDING))) .build(); - ruleList.put(rule.key(), rule); - if (!(layerProtocols.contains(LayerProtocolName.DSR) - && layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA))) { - LOG.error("Undefined LayerProtocolName for {} node {}", nameMap.get(nameMap.keySet().iterator().next()) - .getValueName(), nameMap.get(nameMap.keySet().iterator().next()).getValue()); - } - Map onepl = new HashMap<>(); - onepl.putAll(createXpdrDsrOduNeps(nodeId, xpdrClMaps, xpdrNetMaps, xponderType)); - Map nodeRuleGroupList = createNodeRuleGroupForDsrNode( - nodeId, oorOduSwitchingPool, ruleList, onepl); + Map nodeRuleGroupList = + createNodeRuleGroupForDsrNode(nodeId, oorOduSwitchingPool, new HashMap<>(Map.of(rule.key(), rule)), onepl); onepl.putAll(createXpdrPhtnMdNeps(nodeId, xpdrNetMaps)); - LOG.debug("TapiNetworkModelServiceImpl line 721, total NEP map = {}", onepl.toString()); + LOG.debug("TapiNetworkModelServiceImpl line 721, total NEP map = {}", onepl); // Empty random creation of mandatory fields for avoiding errors.... CostCharacteristic costCharacteristic = new CostCharacteristicBuilder() @@ -794,19 +802,19 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { builtNode.getOwnedNodeEdgePoint().entrySet()) { if (entry.getValue().getSupportedCepLayerProtocolQualifierInstances().stream() .filter(sclpqi -> sclpqi.getLayerProtocolQualifier().equals(PHOTONICLAYERQUALIFIEROTS.VALUE)) - .collect(Collectors.toList()).isEmpty() - || entry.getValue().augmentationOrElseThrow( - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121 - .OwnedNodeEdgePoint1.class) == null - || entry.getValue().augmentationOrElseThrow( + .collect(Collectors.toList()).isEmpty()) { + continue; + } + var aug1 = entry.getValue().augmentationOrElseThrow( org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121 - .OwnedNodeEdgePoint1.class).getPhotonicMediaNodeEdgePointSpec() == null) { + .OwnedNodeEdgePoint1.class); + if (aug1 == null) { continue; } - pmnepspecList.add(entry.getValue() - .augmentationOrElseThrow(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121 - .OwnedNodeEdgePoint1.class) - .getPhotonicMediaNodeEdgePointSpec()); + var phMedNepSpec = aug1.getPhotonicMediaNodeEdgePointSpec(); + if (phMedNepSpec != null) { + pmnepspecList.add(phMedNepSpec); + } } LOG.debug("TapiNetworkModelServiceImpl line 775, List of non empty PMNEPSEC is = {}", pmnepspecList); return builtNode; @@ -816,143 +824,94 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { String nodeId, List xpdrNetMaps) { Map onepl = new HashMap<>(); // eNep creation on otsi node - for (int i = 0; i < xpdrNetMaps.size(); i++) { - Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS, - xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()); - Name onedName = new NameBuilder() - .setValueName("eNodeEdgePoint") - .setValue(String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS, - xpdrNetMaps.get(i).getLogicalConnectionPoint())) - .build(); - - List newSupIfCapList = - new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); - List opModeList = new ArrayList<>(); - if (xpdrNetMaps.get(i).getSupportedOperationalMode() != null) { - opModeList.addAll(xpdrNetMaps.get(i).getSupportedOperationalMode()); - } - - OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(), - Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, - true, String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS), newSupIfCapList, opModeList, - transformOperState(xpdrNetMaps.get(i).getPortOperState()), - transformAdminState(xpdrNetMaps.get(i).getPortAdminState())); + for (Mapping mapping : xpdrNetMaps) { + var lcp = mapping.getLogicalConnectionPoint(); + String onedNameVal = String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS, lcp); + Name onedName = new NameBuilder().setValueName("eNodeEdgePoint").setValue(onedNameVal).build(); + var supOpModes = mapping.getSupportedOperationalMode(); + List opModeList = supOpModes == null ? new ArrayList<>() : new ArrayList<>(supOpModes); + AdministrativeState newAdmState = transformAdminState(mapping.getPortAdminState()); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); + OwnedNodeEdgePoint onep = createNep( + nodeId, + new Uuid(UUID.nameUUIDFromBytes(onedNameVal.getBytes(StandardCharsets.UTF_8)).toString()), + lcp, Map.of(onedName.key(), onedName), + LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true, + String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS), + new ArrayList<>(mapping.getSupportedInterfaceCapability()), opModeList, newOprState, newAdmState); onepl.put(onep.key(), onep); - } // OTSi_MC Nep creation on otsi node - for (int i = 0; i < xpdrNetMaps.size(); i++) { - Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.OTSI_MC, - xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()); - Name onedName = new NameBuilder() - .setValueName("PhotMedNodeEdgePoint") - .setValue(String.join("+", nodeId, TapiStringConstants.OTSI_MC, - xpdrNetMaps.get(i).getLogicalConnectionPoint())) - .build(); - - List newSupIfCapList = - new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); - List opModeList = new ArrayList<>(); - if (xpdrNetMaps.get(i).getSupportedOperationalMode() != null) { - opModeList.addAll(xpdrNetMaps.get(i).getSupportedOperationalMode()); - } - - OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(), - Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, - false, String.join("+", nodeId, TapiStringConstants.OTSI_MC), newSupIfCapList, opModeList, - transformOperState(xpdrNetMaps.get(i).getPortOperState()), - transformAdminState(xpdrNetMaps.get(i).getPortAdminState())); - onepl.put(onep.key(), onep); + String onedNameVal2 = String.join("+", nodeId, TapiStringConstants.OTSI_MC, lcp); + Name onedName2 = new NameBuilder().setValueName("PhotMedNodeEdgePoint").setValue(onedNameVal2).build(); + OwnedNodeEdgePoint onep2 = createNep( + nodeId, + new Uuid(UUID.nameUUIDFromBytes(onedNameVal2.getBytes(StandardCharsets.UTF_8)).toString()), + lcp, Map.of(onedName2.key(), onedName2), + LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, false, + String.join("+", nodeId, TapiStringConstants.OTSI_MC), + new ArrayList<>(mapping.getSupportedInterfaceCapability()), opModeList, newOprState, newAdmState); + onepl.put(onep2.key(), onep2); } return onepl; } - private Map createXpdrDsrOduNeps(String nodeId, List xpdrClMaps, - List xpdrNetMaps, - XpdrNodeTypes xponderType) { + private Map createXpdrDsrOduNeps( + String nodeId, List xpdrClMaps, List xpdrNetMaps, XpdrNodeTypes xponderType) { Map onepl = new HashMap<>(); // client nep creation on DSR node - for (int i = 0; i < xpdrClMaps.size(); i++) { - LOG.info("Client NEP = {}", - String.join("+", nodeId, TapiStringConstants.DSR, xpdrClMaps.get(i).getLogicalConnectionPoint())); - Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.DSR, - xpdrClMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()); - NameBuilder nameBldr = new NameBuilder().setValue(String.join("+", nodeId, - TapiStringConstants.DSR, xpdrClMaps.get(i).getLogicalConnectionPoint())); - Name name = nameBldr + for (Mapping mapping : xpdrClMaps) { + var lcp = mapping.getLogicalConnectionPoint(); + String nepvalue = String.join("+", nodeId, TapiStringConstants.DSR, lcp); + LOG.info("Client NEP = {}", nepvalue); + Name name = new NameBuilder() + .setValue(nepvalue) .setValueName(OpenroadmNodeType.TPDR.getName().equalsIgnoreCase(xponderType.getName()) ? "100G-tpdr" : "NodeEdgePoint_C") .build(); - List newSupIfCapList = - new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability()); - OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(), - Map.of(name.key(), name), LayerProtocolName.DSR, LayerProtocolName.DSR, true, - String.join("+", nodeId, TapiStringConstants.DSR), newSupIfCapList, null, - transformOperState(xpdrClMaps.get(i).getPortOperState()), - transformAdminState(xpdrClMaps.get(i).getPortAdminState())); + AdministrativeState newAdmState = transformAdminState(mapping.getPortAdminState()); + OperationalState newOprState = transformOperState(mapping.getPortOperState()); + OwnedNodeEdgePoint onep = createNep( + nodeId, new Uuid(UUID.nameUUIDFromBytes(nepvalue.getBytes(StandardCharsets.UTF_8)).toString()), + lcp, Map.of(name.key(), name), LayerProtocolName.DSR, LayerProtocolName.DSR, true, + String.join("+", nodeId, TapiStringConstants.DSR), + new ArrayList<>(mapping.getSupportedInterfaceCapability()), null, newOprState, newAdmState); onepl.put(onep.key(), onep); + // network nep creation on E_ODU node + String onedNameVal = String.join("+", nodeId, TapiStringConstants.E_ODU, lcp); + LOG.info("eODU NEP = {}", onedNameVal); + Name onedName = new NameBuilder().setValueName("eNodeEdgePoint_N").setValue(onedNameVal).build(); + OwnedNodeEdgePoint onep2 = createNep( + nodeId, new Uuid(UUID.nameUUIDFromBytes(onedNameVal.getBytes(StandardCharsets.UTF_8)).toString()), + lcp, Map.of(onedName.key(), onedName), LayerProtocolName.ODU, LayerProtocolName.DSR, true, + String.join("+", nodeId, TapiStringConstants.E_ODU), + new ArrayList<>(mapping.getSupportedInterfaceCapability()), null, newOprState, newAdmState); + onepl.put(onep2.key(), onep2); } // network nep creation on I_ODU node - for (int i = 0; i < xpdrNetMaps.size(); i++) { - LOG.info("iODU NEP = {}", String.join("+", nodeId, TapiStringConstants.I_ODU, - xpdrNetMaps.get(i).getLogicalConnectionPoint())); - Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.I_ODU, - xpdrNetMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()); - Name onedName = new NameBuilder() - .setValueName("iNodeEdgePoint_N") - .setValue(String.join("+", nodeId, TapiStringConstants.I_ODU, - xpdrNetMaps.get(i).getLogicalConnectionPoint())) - .build(); - - List newSupIfCapList = - new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); - OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(), - Map.of(onedName.key(), onedName), - LayerProtocolName.ODU, LayerProtocolName.DSR, true, - String.join("+", nodeId, TapiStringConstants.I_ODU), newSupIfCapList, null, - transformOperState(xpdrNetMaps.get(i).getPortOperState()), - transformAdminState(xpdrNetMaps.get(i).getPortAdminState())); - onepl.put(onep.key(), onep); - } - // network nep creation on E_ODU node - for (int i = 0; i < xpdrClMaps.size(); i++) { - LOG.info("eODU NEP = {}", String.join("+", nodeId, TapiStringConstants.E_ODU, - xpdrClMaps.get(i).getLogicalConnectionPoint())); - Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, TapiStringConstants.E_ODU, - xpdrClMaps.get(i).getLogicalConnectionPoint())).getBytes(StandardCharsets.UTF_8)).toString()); - Name onedName = new NameBuilder() - .setValueName("eNodeEdgePoint_N") - .setValue( - String.join("+", nodeId, TapiStringConstants.E_ODU, xpdrClMaps.get(i).getLogicalConnectionPoint())) - .build(); - - List newSupIfCapList = - new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability()); - - OwnedNodeEdgePoint onep = createNep(nodeId, nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(), - Map.of(onedName.key(), onedName), - LayerProtocolName.ODU, LayerProtocolName.DSR, true, - String.join("+", nodeId, TapiStringConstants.E_ODU), newSupIfCapList, null, - transformOperState(xpdrClMaps.get(i).getPortOperState()), - transformAdminState(xpdrClMaps.get(i).getPortAdminState())); + for (Mapping mapping : xpdrNetMaps) { + var lcp = mapping.getLogicalConnectionPoint(); + String onedNameVal = String.join("+", nodeId, TapiStringConstants.I_ODU, lcp); + LOG.info("iODU NEP = {}", onedNameVal); + Name onedName = new NameBuilder().setValueName("iNodeEdgePoint_N").setValue(onedNameVal).build(); + OwnedNodeEdgePoint onep = createNep( + nodeId, new Uuid(UUID.nameUUIDFromBytes(onedNameVal.getBytes(StandardCharsets.UTF_8)).toString()), + lcp, Map.of(onedName.key(), onedName), LayerProtocolName.ODU, LayerProtocolName.DSR, true, + String.join("+", nodeId, TapiStringConstants.I_ODU), + new ArrayList<>(mapping.getSupportedInterfaceCapability()), + null, transformOperState(mapping.getPortOperState()),transformAdminState(mapping.getPortAdminState())); onepl.put(onep.key(), onep); } return onepl; } private OperationalState transformOperState(String operString) { - State operState = org.opendaylight.transportpce.networkmodel.util.TopologyUtils.setNetworkOperState(operString); - return operState.equals(State.InService) ? OperationalState.ENABLED : OperationalState.DISABLED; + return org.opendaylight.transportpce.networkmodel.util.TopologyUtils.setNetworkOperState(operString) + .equals(State.InService) ? OperationalState.ENABLED : OperationalState.DISABLED; } private AdministrativeState transformAdminState(String adminString) { - AdminStates adminState = org.opendaylight.transportpce.networkmodel.util.TopologyUtils - .setNetworkAdminState(adminString); - return adminState.equals(AdminStates.InService) ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED; + return org.opendaylight.transportpce.networkmodel.util.TopologyUtils.setNetworkAdminState(adminString) + .equals(AdminStates.InService) ? AdministrativeState.UNLOCKED : AdministrativeState.LOCKED; } private OwnedNodeEdgePoint createNep(String nodeId, Uuid nepUuid, String tpid, Map nepNames, @@ -962,11 +921,10 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { List sicListTemp = new ArrayList<>(); List keyedOpModeList = new ArrayList<>(); for (SupportedIfCapability supInterCapa : sicList) { - SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder() + sicListTemp.add(new SupportedInterfaceCapabilityBuilder() .withKey(new SupportedInterfaceCapabilityKey(supInterCapa)) .setIfCapType(supInterCapa) - .build(); - sicListTemp.add(supIfCapa); + .build()); } Collection sicColl = sicListTemp; OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder() @@ -991,14 +949,17 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } if (opModeList == null || opModeList.isEmpty()) { for (SupportedInterfaceCapability sic : sicColl) { - String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; - if (("IfOCHOTUCnODUCn").equals(ifCapType) || ("IfOCHOTUCnODUCnUniregen").equals(ifCapType) - || ("IfOCHOTUCnODUCnRegen").equals(ifCapType)) { - //TODO use switch / case block - keyedOpModeList.add(new OperationalModeKey("400G")); - LOG.warn(TopologyUtils.NOOPMODEDECLARED + "400G rate available", tpid); - break; + switch (sic.getIfCapType().toString().split("\\{")[0]) { + case "IfOCHOTUCnODUCn": + case "IfOCHOTUCnODUCnUniregen": + case "IfOCHOTUCnODUCnRegen": + keyedOpModeList.add(new OperationalModeKey("400G")); + LOG.warn(TopologyUtils.NOOPMODEDECLARED + "400G rate available", tpid); + break; + default: + continue; } + break; } keyedOpModeList.add(new OperationalModeKey("100G")); LOG.warn(TopologyUtils.NOOPMODEDECLARED + "100G rate available", tpid); @@ -1008,16 +969,16 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } } Map freqWidthMap = new HashMap<>(); - if (getNetworkTerminationPointFromDatastore(nodeId, tpid) != null) { - freqWidthMap = tapiFactory.getXpdrUsedWavelength(getNetworkTerminationPointFromDatastore(nodeId, tpid)); - } else { + if (getNetworkTerminationPointFromDatastore(nodeId, tpid) == null) { LOG.error("CREATENEP, No Tp found in topology for LCP {}, of NodeId {} ", tpid, nodeId); + } else { + freqWidthMap = tapiFactory.getXpdrUsedWavelength(getNetworkTerminationPointFromDatastore(nodeId, tpid)); } - onepBldr = tapiFactory.addPayloadStructureAndPhotSpecToOnep( - nodeId, freqWidthMap, keyedOpModeList, sicColl, onepBldr, keyword); - LOG.debug("TapiNetworkServiceImpl line982, onep = {}", onepBldr.build()); - return onepBldr.build(); - //TODO don't build twice + OwnedNodeEdgePoint onep = tapiFactory.addPayloadStructureAndPhotSpecToOnep( + nodeId, freqWidthMap, keyedOpModeList, sicColl, onepBldr, keyword) + .build(); + LOG.debug("TapiNetworkServiceImpl line982, onep = {}", onep); + return onep; } private Node createRoadmTapiNode(String orNodeId, Map onepMap) { @@ -1025,20 +986,21 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { Uuid nodeUuid; Name nodeNames; if (orNodeId.equals("ROADMINFRA")) { - nodeUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.RDM_INFRA - .getBytes(Charset.forName("UTF-8"))).toString()); - nodeNames = new NameBuilder().setValueName("roadm node name").setValue(TapiStringConstants.RDM_INFRA) - .build(); + nodeUuid = new Uuid( + UUID.nameUUIDFromBytes(TapiStringConstants.RDM_INFRA.getBytes(Charset.forName("UTF-8"))) + .toString()); + nodeNames = + new NameBuilder().setValueName("roadm node name").setValue(TapiStringConstants.RDM_INFRA).build(); } else { - nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", orNodeId, - TapiStringConstants.PHTNC_MEDIA)).getBytes(StandardCharsets.UTF_8)).toString()); - nodeNames = new NameBuilder().setValueName("roadm node name") - .setValue(String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA)).build(); + String nodeNamesVal = String.join("+", orNodeId, TapiStringConstants.PHTNC_MEDIA); + nodeUuid = new Uuid( + UUID.nameUUIDFromBytes(nodeNamesVal.getBytes(StandardCharsets.UTF_8)) + .toString()); + nodeNames = new NameBuilder().setValueName("roadm node name").setValue(nodeNamesVal).build(); } Name nameNodeType = new NameBuilder().setValueName("Node Type").setValue(OpenroadmNodeType.ROADM.getName()).build(); // Protocol Layer - Set layerProtocols = Set.of(LayerProtocolName.PHOTONICMEDIA); // Empty random creation of mandatory fields for avoiding errors.... CostCharacteristic costCharacteristic = new CostCharacteristicBuilder() .setCostAlgorithm("Restricted Shortest Path - RSP") @@ -1056,24 +1018,20 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setRiskCharacteristicName("risk characteristic") .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2")) .build(); - RiskParameterPac riskParamPac = new RiskParameterPacBuilder() - .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic)) - .build(); - Map nodeRuleGroupMap - = tapiFactory.createAllNodeRuleGroupForRdmNode(topologicalMode, nodeUuid, orNodeId, onepMap.values()); - Map interRuleGroupMap - = tapiFactory.createInterRuleGroupForRdmNode(topologicalMode, nodeUuid, orNodeId, - nodeRuleGroupMap.entrySet().stream().map(e -> e.getKey()).collect(Collectors.toList())); + Map nodeRuleGroupMap = + tapiFactory.createAllNodeRuleGroupForRdmNode(topologicalMode, nodeUuid, orNodeId, onepMap.values()); return new NodeBuilder() .setUuid(nodeUuid) .setName(Map.of(nodeNames.key(), nodeNames, nameNodeType.key(), nameNodeType)) - .setLayerProtocolName(layerProtocols) + .setLayerProtocolName(Set.of(LayerProtocolName.PHOTONICMEDIA)) .setAdministrativeState(AdministrativeState.UNLOCKED) .setOperationalState(OperationalState.ENABLED) .setLifecycleState(LifecycleState.INSTALLED) .setOwnedNodeEdgePoint(onepMap) .setNodeRuleGroup(nodeRuleGroupMap) - .setInterRuleGroup(interRuleGroupMap) + .setInterRuleGroup( + tapiFactory.createInterRuleGroupForRdmNode(topologicalMode, nodeUuid, orNodeId, + nodeRuleGroupMap.entrySet().stream().map(e -> e.getKey()).collect(Collectors.toList()))) .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic)) .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic)) .setErrorCharacteristic("error") @@ -1082,27 +1040,25 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setDeliveryOrderCharacteristic("delivery order") .setUnavailableTimeCharacteristic("unavailable time") .setServerIntegrityProcessCharacteristic("server integrity process") - .setRiskParameterPac(riskParamPac) + .setRiskParameterPac( + new RiskParameterPacBuilder() + .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic)) + .build()) .build(); } private OduSwitchingPools createTpdrSwitchPool(List xpdrNetMaps) { Map nblMap = new HashMap<>(); - int count = 1; for (int i = 1; i <= xpdrNetMaps.size(); i++) { - LOG.info("XPDr net LCP = {}", xpdrNetMaps.get(i - 1).getLogicalConnectionPoint()); - LOG.info("XPDr net associated LCP = {}", xpdrNetMaps.get(i - 1).getConnectionMapLcp()); - TpId tpid1 = new TpId(xpdrNetMaps.get(i - 1).getLogicalConnectionPoint()); - TpId tpid2 = new TpId(xpdrNetMaps.get(i - 1).getConnectionMapLcp()); - Set tpList = new HashSet<>(); - tpList.add(tpid1); - tpList.add(tpid2); + String netLCP = xpdrNetMaps.get(i - 1).getLogicalConnectionPoint(); + String netAssoLCP = xpdrNetMaps.get(i - 1).getConnectionMapLcp(); + LOG.info("XPDr net LCP = {}", netLCP); + LOG.info("XPDr net associated LCP = {}", netAssoLCP); NonBlockingList nbl = new NonBlockingListBuilder() - .setNblNumber(Uint16.valueOf(count)) - .setTpList(tpList) + .setNblNumber(Uint16.valueOf(i)) + .setTpList(new HashSet<>(Set.of(new TpId(netLCP), new TpId(netAssoLCP)))) .build(); nblMap.put(nbl.key(), nbl); - count++; } return new OduSwitchingPoolsBuilder() .setNonBlockingList(nblMap) @@ -1113,39 +1069,27 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private OduSwitchingPools createSwtchSwitchPool( List xpdrClMaps, List xpdrNetMaps, Integer xpdrNb) { Set tpl = new HashSet<>(); - TpId tpId = null; for (int i = 1; i <= xpdrClMaps.size(); i++) { - tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i); - tpl.add(tpId); + tpl.add(new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i)); + tpl.add(new TpId("XPDR" + xpdrNb + TapiStringConstants.NETWORK + i)); } - for (int i = 1; i <= xpdrNetMaps.size(); i++) { - tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.NETWORK + i); - tpl.add(tpId); - } - Map nbMap = new HashMap<>(); - NonBlockingList nbl = new NonBlockingListBuilder() - .setNblNumber(Uint16.valueOf(1)) - .setTpList(tpl) - .build(); - nbMap.put(nbl.key(),nbl); + NonBlockingList nbl = new NonBlockingListBuilder().setNblNumber(Uint16.valueOf(1)).setTpList(tpl).build(); return new OduSwitchingPoolsBuilder() .setSwitchingPoolNumber(Uint16.valueOf(1)) .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking) - .setNonBlockingList(nbMap) + .setNonBlockingList(new HashMap<>(Map.of(nbl.key(),nbl))) .build(); } private OduSwitchingPools createMuxSwitchPool(List xpdrClMaps, List xpdrNetMaps, Integer xpdrNb) { Map nbMap = new HashMap<>(); for (int i = 1; i <= xpdrClMaps.size(); i++) { - Set tpList = new HashSet<>(); - TpId tpId = new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i); - tpList.add(tpId); - tpId = new TpId("XPDR" + xpdrNb + "-NETWORK1"); - tpList.add(tpId); NonBlockingList nbl = new NonBlockingListBuilder() .setNblNumber(Uint16.valueOf(i)) - .setTpList(tpList) + .setTpList( + new HashSet<>(Set.of( + new TpId("XPDR" + xpdrNb + TapiStringConstants.CLIENT + i), + new TpId("XPDR" + xpdrNb + "-NETWORK1")))) .setAvailableInterconnectBandwidth(Uint32.valueOf(xpdrNetMaps.size() * 10L)) .setInterconnectBandwidthUnit(Uint32.valueOf(1000000000)) .build(); @@ -1168,31 +1112,30 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } LOG.debug("ONEPL = {}", onepl.values()); Map nodeRuleGroupMap = new HashMap<>(); + Uuid nodeUuid = new Uuid( + UUID.nameUUIDFromBytes((String.join("+", nodeId, TapiStringConstants.DSR)).getBytes(StandardCharsets.UTF_8)) + .toString()); int count = 1; for (NonBlockingList nbl : oorOduSwitchingPool.nonnullNonBlockingList().values()) { LOG.info("Non blocking list = {}", nbl); Map nepList = new HashMap<>(); for (TpId tp : nbl.getTpList()) { - LOG.info("EDOU TP = {}", String.join("+", nodeId, TapiStringConstants.E_ODU, tp.getValue())); - LOG.info("DSR TP = {}", String.join("+", nodeId, TapiStringConstants.DSR, tp.getValue())); - Uuid tpUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, - TapiStringConstants.E_ODU, tp.getValue())).getBytes(StandardCharsets.UTF_8)).toString()); - Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", nodeId, - TapiStringConstants.DSR, tp.getValue())).getBytes(StandardCharsets.UTF_8)).toString()); + String tpUuidSd = String.join("+", nodeId, TapiStringConstants.E_ODU, tp.getValue()); + LOG.info("EDOU TP = {}", tpUuidSd); + Uuid tpUuid = new Uuid(UUID.nameUUIDFromBytes(tpUuidSd.getBytes(StandardCharsets.UTF_8)).toString()); + String tp1UuidSd = String.join("+", nodeId, TapiStringConstants.DSR, tp.getValue()); + LOG.info("DSR TP = {}", tp1UuidSd); + Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1UuidSd.getBytes(StandardCharsets.UTF_8)).toString()); if (onepl.containsKey(new OwnedNodeEdgePointKey(tpUuid)) && onepl.containsKey(new OwnedNodeEdgePointKey(tp1Uuid))) { NodeEdgePoint nep1 = new NodeEdgePointBuilder() .setTopologyUuid(this.tapiTopoUuid) - .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId,TapiStringConstants. DSR)).getBytes(StandardCharsets.UTF_8)) - .toString())) + .setNodeUuid(nodeUuid) .setNodeEdgePointUuid(tp1Uuid) .build(); NodeEdgePoint nep2 = new NodeEdgePointBuilder() .setTopologyUuid(this.tapiTopoUuid) - .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId,TapiStringConstants. DSR)).getBytes(StandardCharsets.UTF_8)) - .toString())) + .setNodeUuid(nodeUuid) .setNodeEdgePointUuid(tpUuid) .build(); nepList.put(nep1.key(), nep1); @@ -1233,14 +1176,15 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private String getNodeType(XpdrNodeTypes xponderType) { - switch (xponderType.getIntValue()) { - //TODO use enum directly - case 1: + switch (xponderType) { + case Tpdr: return OpenroadmNodeType.TPDR.getName(); - case 2: + case Mpdr: return OpenroadmNodeType.MUXPDR.getName(); - case 3: + case Switch: return OpenroadmNodeType.SWITCH.getName(); + //case Regen: + //case RegenUni: default: LOG.info("XpdrType {} not supported", xponderType); return null; @@ -1251,16 +1195,15 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // 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"); - InstanceIdentifier topoIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class) - .child(TopologyContext.class) - .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) - .build(); - - Topology topology = new TopologyBuilder().setUuid(this.tapiTopoUuid).setNode(nodeMap).build(); - // merge in datastore - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID, topology); + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) + .build(), + new TopologyBuilder().setUuid(this.tapiTopoUuid).setNode(nodeMap).build()); try { this.networkTransactionService.commit().get(); } catch (InterruptedException | ExecutionException e) { @@ -1273,15 +1216,15 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // 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"); - InstanceIdentifier topoIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class) - .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) - .build(); - - Topology topology = new TopologyBuilder().setUuid(this.tapiTopoUuid).setLink(linkMap).build(); - // merge in datastore - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, topoIID, topology); + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) + .build(), + new TopologyBuilder().setUuid(this.tapiTopoUuid).setLink(linkMap).build()); try { this.networkTransactionService.commit().get(); } catch (InterruptedException | ExecutionException e) { @@ -1294,12 +1237,11 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // 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?? try { - ContextBuilder contextBuilder = new ContextBuilder(); - contextBuilder.setServiceInterfacePoint(sips); - InstanceIdentifier contextIID = InstanceIdentifier.builder(Context.class).build(); // merge in datastore this.networkTransactionService.merge( - LogicalDatastoreType.OPERATIONAL, contextIID, contextBuilder.build()); + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class).build(), + new ContextBuilder().setServiceInterfacePoint(sips).build()); this.networkTransactionService.commit().get(); LOG.info("TAPI SIPs merged successfully."); } catch (InterruptedException | ExecutionException e) { @@ -1308,12 +1250,15 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private void deleteLinkFromTopo(Uuid linkUuid) { - // TODO: check if this IID is correct try { - InstanceIdentifier linkIID = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class, - new TopologyKey(this.tapiTopoUuid)).child(Link.class, new LinkKey(linkUuid)).build(); - this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, linkIID); + this.networkTransactionService.delete( + LogicalDatastoreType.OPERATIONAL, + // TODO: check if this IID is correct + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) + .child(Link.class, new LinkKey(linkUuid)).build()); this.networkTransactionService.commit().get(); LOG.info("TAPI link deleted successfully."); } catch (InterruptedException | ExecutionException e) { @@ -1322,12 +1267,15 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private void deleteNodeFromTopo(Uuid nodeUuid) { - // TODO: check if this IID is correct try { - InstanceIdentifier nodeIDD = InstanceIdentifier.builder(Context.class) - .augmentation(Context1.class).child(TopologyContext.class).child(Topology.class, - new TopologyKey(this.tapiTopoUuid)).child(Node.class, new NodeKey(nodeUuid)).build(); - this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, nodeIDD); + this.networkTransactionService.delete( + LogicalDatastoreType.OPERATIONAL, + // TODO: check if this IID is correct + InstanceIdentifier.builder(Context.class) + .augmentation(Context1.class) + .child(TopologyContext.class) + .child(Topology.class, new TopologyKey(this.tapiTopoUuid)) + .child(Node.class, new NodeKey(nodeUuid)).build()); this.networkTransactionService.commit().get(); LOG.info("TAPI Node deleted successfully."); } catch (InterruptedException | ExecutionException e) { @@ -1338,9 +1286,11 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void deleteSipFromTopo(Uuid sipUuid) { // TODO: check if this IID is correct try { - InstanceIdentifier sipIID = InstanceIdentifier.builder(Context.class) - .child(ServiceInterfacePoint.class, new ServiceInterfacePointKey(sipUuid)).build(); - this.networkTransactionService.delete(LogicalDatastoreType.OPERATIONAL, sipIID); + this.networkTransactionService.delete( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .child(ServiceInterfacePoint.class, new ServiceInterfacePointKey(sipUuid)) + .build()); this.networkTransactionService.commit().get(); LOG.info("TAPI SIP deleted successfully."); } catch (InterruptedException | ExecutionException e) { @@ -1350,14 +1300,17 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private void updateConnectivityServicesState(Uuid sipUuid, String nodeId) { // TODO: check if this IID is correct - InstanceIdentifier connectivitycontextIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) - .child(ConnectivityContext.class) - .build(); ConnectivityContext connContext = null; try { Optional optConnContext = - this.networkTransactionService.read(LogicalDatastoreType.OPERATIONAL, connectivitycontextIID).get(); + this.networkTransactionService.read( + LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.builder(Context.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 + .Context1.class) + .child(ConnectivityContext.class) + .build()) + .get(); if (optConnContext.isEmpty()) { LOG.error("Couldnt retrieve connectivity context from datastore"); return; @@ -1381,12 +1334,12 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .anyMatch(endPoint -> endPoint.getServiceInterfacePoint().getServiceInterfacePointUuid() .equals(sipUuid))) { LOG.info("Service using SIP of node {} identified. Update state of service", nodeId); - ConnectivityService updService = new ConnectivityServiceBuilder(service) - .setAdministrativeState(AdministrativeState.LOCKED) - .setOperationalState(OperationalState.DISABLED) - .setLifecycleState(LifecycleState.PENDINGREMOVAL) - .build(); - updateConnectivityService(updService); + updateConnectivityService( + new ConnectivityServiceBuilder(service) + .setAdministrativeState(AdministrativeState.LOCKED) + .setOperationalState(OperationalState.DISABLED) + .setLifecycleState(LifecycleState.PENDINGREMOVAL) + .build()); } } } @@ -1396,22 +1349,25 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } for (Connection connection:connMap.values()) { if (connection.getName().values().stream().anyMatch(name -> name.getValue().contains(nodeId))) { - Connection updConn = new ConnectionBuilder(connection) - .setLifecycleState(LifecycleState.PENDINGREMOVAL) - .setOperationalState(OperationalState.DISABLED) - .build(); - updateConnection(updConn); + updateConnection( + new ConnectionBuilder(connection) + .setLifecycleState(LifecycleState.PENDINGREMOVAL) + .setOperationalState(OperationalState.DISABLED) + .build()); } } } private void updateConnection(Connection updConn) { - // TODO: check if this IID is correct - InstanceIdentifier connectionIID = InstanceIdentifier.builder(Context.class) + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + // TODO: check if this IID is correct + InstanceIdentifier.builder(Context.class) .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) - .child(ConnectivityContext.class).child(Connection.class, - new ConnectionKey(updConn.getUuid())).build(); - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectionIID, updConn); + .child(ConnectivityContext.class) + .child(Connection.class, new ConnectionKey(updConn.getUuid())) + .build(), + updConn); try { this.networkTransactionService.commit().get(); } catch (InterruptedException | ExecutionException e) { @@ -1420,12 +1376,16 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private void updateConnectivityService(ConnectivityService updService) { - // TODO: check if this IID is correct - InstanceIdentifier connectivityserviceIID = InstanceIdentifier.builder(Context.class) - .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121.Context1.class) - .child(ConnectivityContext.class).child(ConnectivityService.class, - new ConnectivityServiceKey(updService.getUuid())).build(); - this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, connectivityserviceIID, updService); + this.networkTransactionService.merge( + LogicalDatastoreType.OPERATIONAL, + // TODO: check if this IID is correct + InstanceIdentifier.builder(Context.class) + .augmentation(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev221121 + .Context1.class) + .child(ConnectivityContext.class) + .child(ConnectivityService.class, new ConnectivityServiceKey(updService.getUuid())) + .build(), + updService); try { this.networkTransactionService.commit().get(); } catch (InterruptedException | ExecutionException e) { @@ -1439,9 +1399,9 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { Map onepMap = new HashMap<>(); for (Map.Entry entry : tpMap.entrySet()) { // Admin and oper state common for all tps - OpenroadmTpType tpType = entry.getValue().getTpType(); // PHOTONIC MEDIA nep - LOG.debug("PHOTO NEP = {}", String.join("+", nodeId, nepPhotonicSublayer, entry.getKey())); + String nepNameValue = String.join("+", nodeId, nepPhotonicSublayer, entry.getKey()); + LOG.debug("PHOTO NEP = {}", nepNameValue); SupportedCepLayerProtocolQualifierInstancesBuilder sclpqiBd = new SupportedCepLayerProtocolQualifierInstancesBuilder().setNumberOfCepInstances(Uint64.valueOf(1)); switch (nepPhotonicSublayer) { @@ -1460,14 +1420,13 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { default: break; } - List sclpqiList = new ArrayList<>(List.of(sclpqiBd.build())); OwnedNodeEdgePointBuilder onepBd = new OwnedNodeEdgePointBuilder(); if (!nepPhotonicSublayer.equals(TapiStringConstants.MC) && !nepPhotonicSublayer.equals(TapiStringConstants.OTSI_MC)) { Map usedFreqMap = new HashMap<>(); Map availableFreqMap = new HashMap<>(); - switch (tpType) { + switch (entry.getValue().getTpType()) { // Whatever is the TP and its type we consider that it is handled in a bidirectional way : // same wavelength(s) used in both direction. case SRGRXPP: @@ -1482,7 +1441,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06); } else { LOG.debug("EnteringLOOPcreateOTSiMC & MC with usedFreqMap non empty {} for Node {}, tp {}", - usedFreqMap.toString(), nodeId, tpMap.toString()); + usedFreqMap, nodeId, tpMap); onepMap.putAll(populateNepsForRdmNode(nodeId, new HashMap<>(Map.of(entry.getKey(), entry.getValue())), true, TapiStringConstants.MC)); @@ -1506,24 +1465,19 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { onepBd = tapiFactory.addPhotSpecToRoadmOnep( nodeId, usedFreqMap, availableFreqMap, onepBd, nepPhotonicSublayer); } - AdminStates admin = entry.getValue().getAdministrativeState(); - State oper = entry.getValue().getOperationalState(); - Name nepName = new NameBuilder() - .setValueName(nepPhotonicSublayer + "NodeEdgePoint") - .setValue(String.join("+", nodeId, nepPhotonicSublayer, entry.getKey())) - .build(); + Name nepName = + new NameBuilder().setValueName(nepPhotonicSublayer + "NodeEdgePoint").setValue(nepNameValue).build(); OwnedNodeEdgePoint onep = onepBd - .setUuid(new Uuid(UUID.nameUUIDFromBytes( - (String.join("+", nodeId, nepPhotonicSublayer, entry.getKey())) - .getBytes(Charset.forName("UTF-8"))) - .toString())) + .setUuid(new Uuid(UUID.nameUUIDFromBytes(nepNameValue.getBytes(Charset.forName("UTF-8"))).toString())) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName.key(), nepName)) .setSupportedCepLayerProtocolQualifierInstances(sclpqiList) .setDirection(Direction.BIDIRECTIONAL) .setLinkPortRole(PortRole.SYMMETRIC) - .setAdministrativeState(this.tapiLink.setTapiAdminState(admin.getName())) - .setOperationalState(this.tapiLink.setTapiOperationalState(oper.getName())) + .setAdministrativeState( + this.tapiLink.setTapiAdminState(entry.getValue().getAdministrativeState().getName())) + .setOperationalState( + this.tapiLink.setTapiOperationalState(entry.getValue().getOperationalState().getName())) .setLifecycleState(LifecycleState.INSTALLED) .build(); LOG.debug("ROADMNEPPopulation TapiNetworkModelServiceImpl populate NEP {} for Node {}", @@ -1559,7 +1513,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { Optional tpOptional = networkTransactionService.read(LogicalDatastoreType.CONFIGURATION, tpIID).get(); if (tpOptional.isEmpty()) { - LOG.error("readMdSal: Error reading tp {} , empty list",tpIID); + LOG.error("readMdSal: Error reading tp {} , empty list", tpIID); return null; } LOG.debug("SUCCES getting LCP TP for NodeId {} TpId {} while creating NEP in TapiNetworkModelServiceImpl", @@ -1616,8 +1570,8 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526 .TerminationPoint1 getNetworkTerminationPoint11FromDatastore(String nodeId, String tpId) { - InstanceIdentifier - tpIID = InstanceIdentifier.builder(Networks.class) + InstanceIdentifier tpIID = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) .child( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226 -- 2.36.6