X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Ftapi%2Ftopology%2FTapiNetworkModelServiceImpl.java;h=058962808aafa1ac4f536c28d8f55a5ba8c68fce;hb=f4774d83c69f8c4dcb14291e4f9d5827b9c29020;hp=39163fed44d3b3e2f7bee68343fff67a92edaccb;hpb=98ba9741bc45b3770f82465e241d64b536bf7341;p=transportpce.git 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 39163fed4..058962808 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 @@ -24,12 +24,13 @@ import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.network.NetworkTransactionService; import org.opendaylight.transportpce.tapi.R2RTapiLinkDiscovery; import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.TapiLink; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.mapping.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220922.network.Nodes; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.XpdrNodeTypes; @@ -137,26 +138,32 @@ 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.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 TapiNetworkModelServiceImpl implements TapiNetworkModelService { private static final Logger LOG = LoggerFactory.getLogger(TapiNetworkModelServiceImpl.class); + private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(StandardCharsets.UTF_8)).toString()); private final NetworkTransactionService networkTransactionService; - private Map sipMap; private final R2RTapiLinkDiscovery linkDiscovery; private final TapiLink tapiLink; private final NotificationPublishService notificationPublishService; + private Map sipMap = new HashMap<>(); - public TapiNetworkModelServiceImpl(final R2RTapiLinkDiscovery linkDiscovery, - NetworkTransactionService networkTransactionService, TapiLink tapiLink, - final NotificationPublishService notificationPublishService) { + @Activate + public TapiNetworkModelServiceImpl(@Reference NetworkTransactionService networkTransactionService, + @Reference DeviceTransactionManager deviceTransactionManager, + @Reference TapiLink tapiLink, + @Reference final NotificationPublishService notificationPublishService) { this.networkTransactionService = networkTransactionService; - this.sipMap = new HashMap<>(); - this.linkDiscovery = linkDiscovery; + this.linkDiscovery = new R2RTapiLinkDiscovery(networkTransactionService, deviceTransactionManager, tapiLink); this.tapiLink = tapiLink; this.notificationPublishService = notificationPublishService; } @@ -234,11 +241,11 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { // create switching pool OduSwitchingPools oorOduSwitchingPool = createSwitchPoolForXpdr( - mapping.getXponderType().getIntValue(), xpdrClMaps, xpdrNetMaps, xpdrNb); + mapping.getXpdrType().getIntValue(), xpdrClMaps, xpdrNetMaps, xpdrNb); // node transformation Map nodeMap = new HashMap<>(transformXpdrToTapiNode( - nodeId, xpdrClMaps, xpdrNetMaps, mapping.getXponderType(), oorOduSwitchingPool)); + nodeId, xpdrClMaps, xpdrNetMaps, mapping.getXpdrType(), oorOduSwitchingPool)); // add nodes and sips to tapi context mergeNodeinTopology(nodeMap); mergeSipsinContext(this.sipMap); @@ -260,6 +267,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { LOG.info("Updated TAPI topology successfully."); } + @SuppressWarnings("rawtypes") private void sendNotification(List changedOneps, Mapping mapping) { Notification notification = new NotificationBuilder() .setNotificationType(NotificationType.ATTRIBUTEVALUECHANGE) @@ -299,21 +307,18 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { LOG.error("Could not update TAPI links"); return; } - Map links = optTopology.get().getLink(); - if (links != null) { - for (Link link : links.values()) { - List linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream() - .map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList()); - if (!Collections.disjoint(changedOneps, linkNeps)) { - InstanceIdentifier linkIID = 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); - } + for (Link link : optTopology.get().nonnullLink().values()) { + List linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream() + .map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList()); + if (!Collections.disjoint(changedOneps, linkNeps)) { + InstanceIdentifier linkIID = 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); } } this.networkTransactionService.commit().get(); @@ -687,7 +692,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { xpdrNetMaps.get(i).getLogicalConnectionPoint())) .build(); - List> newSupIfCapList = + List newSupIfCapList = new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid1, xpdrNetMaps.get(i).getLogicalConnectionPoint(), @@ -708,8 +713,8 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { xpdrNetMaps.get(i).getLogicalConnectionPoint())) .build(); - List> newSupIfCapList = - new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); + List newSupIfCapList = + new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid2, xpdrNetMaps.get(i).getLogicalConnectionPoint(), Map.of(onedName.key(), onedName), LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, @@ -729,7 +734,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { xpdrNetMaps.get(i).getLogicalConnectionPoint())) .build(); - List> newSupIfCapList = + List newSupIfCapList = new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid3, xpdrNetMaps.get(i).getLogicalConnectionPoint(), @@ -762,7 +767,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { name = nameBldr.setValueName("NodeEdgePoint_C").build(); } - List> newSupIfCapList = + List newSupIfCapList = new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(), @@ -785,7 +790,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { xpdrNetMaps.get(i).getLogicalConnectionPoint())) .build(); - List> newSupIfCapList = + List newSupIfCapList = new ArrayList<>(xpdrNetMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrNetMaps.get(i).getLogicalConnectionPoint(), @@ -809,7 +814,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { xpdrClMaps.get(i).getLogicalConnectionPoint())) .build(); - List> newSupIfCapList = + List newSupIfCapList = new ArrayList<>(xpdrClMaps.get(i).getSupportedInterfaceCapability()); OwnedNodeEdgePoint onep = createNep(nepUuid, xpdrClMaps.get(i).getLogicalConnectionPoint(), @@ -837,7 +842,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private OwnedNodeEdgePoint createNep(Uuid nepUuid, String tpid, Map nepNames, LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword, - List> supportedInterfaceCapability, + List supportedInterfaceCapability, OperationalState operState, AdministrativeState adminState) { OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder() .setUuid(nepUuid) @@ -872,7 +877,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setUuid(nepUuid) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName.key(), nepName)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.class)) + .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState).setOperationalState(operState) .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) @@ -891,7 +896,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setUuid(nepUuid1) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName1.key(), nepName1)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.class)) + .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState).setOperationalState(operState) .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) @@ -916,7 +921,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { .setUuid(nepUuid2) .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA) .setName(Map.of(nepName2.key(), nepName2)) - .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.class)) + .setSupportedCepLayerProtocolQualifier(Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE)) .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC) .setAdministrativeState(adminState).setOperationalState(operState) .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL) @@ -928,7 +933,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { private Map createMSIP(int nb, LayerProtocolName layerProtocol, String tpid, String nodeid, - List> supportedInterfaceCapability, + List supportedInterfaceCapability, OperationalState operState, AdministrativeState adminState) { Map msipl = new HashMap<>(); for (int i = 0; i < nb; i++) { @@ -947,7 +952,7 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, String tpid, String nodeid, - List> supportedInterfaceCapability, + List supportedInterfaceCapability, OperationalState operState, AdministrativeState adminState) { // TODO: what value should be set in total capacity and available capacity LOG.info("SIP name = {}", String.join("+", nodeid, tpid)); @@ -1266,52 +1271,53 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { return nodeRuleGroupMap; } - private Set> createSupportedLayerProtocolQualifier( - List> sicList, LayerProtocolName lpn) { + private Set createSupportedLayerProtocolQualifier( + List sicList, LayerProtocolName lpn) { if (sicList == null) { - return Set.of(PHOTONICLAYERQUALIFIEROMS.class); + return Set.of(PHOTONICLAYERQUALIFIEROMS.VALUE); } Map supIfMap = new HashMap<>(); LOG.info("SIC list = {}", sicList); - for (Class supInterCapa : sicList) { + for (SupportedIfCapability supInterCapa : sicList) { SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder() .withKey(new SupportedInterfaceCapabilityKey(supInterCapa)) .setIfCapType(supInterCapa) .build(); supIfMap.put(supIfCapa.key(), supIfCapa); } - Set> sclpqList = new HashSet<>(); + Set sclpqList = new HashSet<>(); for (SupportedInterfaceCapability sic : supIfMap.values()) { + String ifCapType = sic.getIfCapType().toString().split("\\{")[0]; switch (lpn.getName()) { case "DSR": - switch (sic.getIfCapType().getSimpleName()) { + switch (ifCapType) { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqList.add(ODUTYPEODU0.class); - sclpqList.add(DIGITALSIGNALTYPEGigE.class); + sclpqList.add(ODUTYPEODU0.VALUE); + sclpqList.add(DIGITALSIGNALTYPEGigE.VALUE); break; case "If10GEODU2e": - sclpqList.add(ODUTYPEODU2E.class); - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.class); + sclpqList.add(ODUTYPEODU2E.VALUE); + sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); break; case "If10GEODU2": - sclpqList.add(ODUTYPEODU2.class); - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.class); + sclpqList.add(ODUTYPEODU2.VALUE); + sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); break; case "If10GE": - sclpqList.add(DIGITALSIGNALTYPE10GigELAN.class); + sclpqList.add(DIGITALSIGNALTYPE10GigELAN.VALUE); break; case "If100GEODU4": - sclpqList.add(DIGITALSIGNALTYPE100GigE.class); - sclpqList.add(ODUTYPEODU4.class); + sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE); + sclpqList.add(ODUTYPEODU4.VALUE); break; case "If100GE": - sclpqList.add(DIGITALSIGNALTYPE100GigE.class); + sclpqList.add(DIGITALSIGNALTYPE100GigE.VALUE); break; case "IfOCHOTU4ODU4": case "IfOCH": - sclpqList.add(ODUTYPEODU4.class); + sclpqList.add(ODUTYPEODU4.VALUE); break; default: LOG.error("IfCapability type not managed"); @@ -1319,24 +1325,24 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } break; case "ODU": - switch (sic.getIfCapType().getSimpleName()) { + switch (ifCapType) { // TODO: it may be needed to add more cases clauses if the interface capabilities of a // port are extended in the config file case "If1GEODU0": - sclpqList.add(ODUTYPEODU0.class); + sclpqList.add(ODUTYPEODU0.VALUE); break; case "If10GEODU2e": - sclpqList.add(ODUTYPEODU2E.class); + sclpqList.add(ODUTYPEODU2E.VALUE); break; case "If10GEODU2": case "If10GE": - sclpqList.add(ODUTYPEODU2.class); + sclpqList.add(ODUTYPEODU2.VALUE); break; case "If100GEODU4": case "If100GE": case "IfOCHOTU4ODU4": case "IfOCH": - sclpqList.add(ODUTYPEODU4.class); + sclpqList.add(ODUTYPEODU4.VALUE); break; default: LOG.error("IfCapability type not managed"); @@ -1344,10 +1350,9 @@ public class TapiNetworkModelServiceImpl implements TapiNetworkModelService { } break; case "PHOTONIC_MEDIA": - if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4") - || sic.getIfCapType().getSimpleName().equals("IfOCH")) { - sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.class); - sclpqList.add(PHOTONICLAYERQUALIFIEROMS.class); + if (ifCapType.equals("IfOCHOTU4ODU4") || ifCapType.equals("IfOCH")) { + sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.VALUE); + sclpqList.add(PHOTONICLAYERQUALIFIEROMS.VALUE); } break; default: