X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Ftapi%2Fconnectivity%2FConnectivityUtils.java;h=840c7d515ba760beeaa1840ae691ddcb6aee9d78;hb=88b66915d592d2f1602581bd6991b47b89673f71;hp=969c0ef09d5863aba3d890cddbcac3a19982246b;hpb=6067e755ff30476a33ca409a24f148e231995c98;p=transportpce.git diff --git a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java index 969c0ef09..840c7d515 100644 --- a/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java +++ b/tapi/src/main/java/org/opendaylight/transportpce/tapi/connectivity/ConnectivityUtils.java @@ -18,7 +18,7 @@ import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations; -import org.opendaylight.transportpce.tapi.topology.TopologyUtils; +import org.opendaylight.transportpce.tapi.TapiStringConstants; import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint; import org.opendaylight.transportpce.tapi.utils.ServiceEndpointType; import org.opendaylight.transportpce.tapi.utils.TapiContext; @@ -95,23 +95,7 @@ import org.slf4j.LoggerFactory; public final class ConnectivityUtils { - private static final String LGX_PORT_NAME = "Some lgx-port-name"; - private static final String PORT_TYPE = "some port type"; - private static final String LGX_DEVICE_NAME = "Some lgx-device-name"; - private static final String PORT_RACK_VALUE = "000000.00"; - private static final String DSR = "DSR"; - private static final String ODU = "ODU"; - private static final String E_ODU = "eODU"; - private static final String I_ODU = "iODU"; - private static final String OTSI = "OTSi"; - private static final String E_OTSI = "eOTSi"; - private static final String I_OTSI = "iOTSi"; - private static final String PHTNC_MEDIA = "PHOTONIC_MEDIA"; - private static final String MC = "MEDIA_CHANNEL"; - private static final String OTSI_MC = "OTSi_MEDIA_CHANNEL"; - private static final String TP = "TerminationPoint"; - private static final String NODE = "Node"; - private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER + private final Uuid tapiTopoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString()); private static final Logger LOG = LoggerFactory.getLogger(ConnectivityUtils.class); @@ -166,14 +150,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(txPortDeviceName) .setPortName(txPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -181,14 +165,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(rxPortDeviceName) .setPortName(rxPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -205,14 +189,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(txPortDeviceName) .setPortName(txPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -220,14 +204,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(rxPortDeviceName) .setPortName(rxPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -339,7 +323,7 @@ public final class ConnectivityUtils { .sorted(Comparator.comparing(AToZ::getId)).collect(Collectors.toList())) { resourceType = elem.getResource().getResource().implementedInterface().getSimpleName(); switch (resourceType) { - case TP: + case TapiStringConstants.TP: TerminationPoint tp = (TerminationPoint) elem.getResource().getResource(); String tpID = tp.getTpId(); String tpNode; @@ -370,7 +354,7 @@ public final class ConnectivityUtils { } } break; - case NODE: + case TapiStringConstants.NODE: Node node = (Node) elem.getResource().getResource(); String nodeId = node.getNodeId(); if (nodeId.contains("XPDR") || nodeId.contains("SPDR") || nodeId.contains("MXPDR")) { @@ -411,7 +395,10 @@ public final class ConnectivityUtils { // create corresponding CEPs and Connections. Connections should be added to the corresponding context // CEPs must be included in the topology context as an augmentation for each ONEP!! ServiceFormat serviceFormat = serviceAEnd.getServiceFormat(); // should be equal to serviceZEnd - // TODO -> better mechanism to map services??? + // TODO -> Maybe we dont need to create the connections and ceps if the previous service doesnt exist?? + // As mentioned above, for 100GbE service creation there are ROADMs in the path description. + // What are the configurations needed here? No OTU, ODU... what kind of cross connections is needed? + // this needs to be changed switch (serviceFormat) { case OC: // Identify number of ROADMs @@ -454,7 +441,9 @@ public final class ConnectivityUtils { connectionServMap.putAll(createXpdrCepsAndConnectionsOdu(xpdrNetworkTplist, xpdrNodelist)); } // Top connection in the DSR layer, between client ports of the xpdrs - connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNodelist)); + // TODO differentiate between 100GbE and OTN 10GbE services + connectionServMap.putAll(createXpdrCepsAndConnectionsDsr(xpdrClientTplist, xpdrNetworkTplist, + xpdrNodelist)); break; default: LOG.error("Service type format not supported"); @@ -463,20 +452,43 @@ public final class ConnectivityUtils { } private Map createXpdrCepsAndConnectionsDsr(List xpdrClientTplist, + List xpdrNetworkTplist, List xpdrNodelist) { Map connServMap = new HashMap<>(); Map cepMap = new HashMap<>(); + ConnectionEndPoint> cepMapDsr = new HashMap<>(); + Map cepMapOdu = new HashMap<>(); - // Create 1 cep per Xpdr in the CLIENT and a top connection DSR between the CLIENT xpdrs + // Create 1 cep per Xpdr in the CLIENT, 1 cep per Xpdr eODU, 1 XC between eODU and iODE, + // 1 top connection between eODU and a top connection DSR between the CLIENT xpdrs for (String xpdr:xpdrNodelist) { LOG.info("Creating ceps and xc for xpdr {}", xpdr); String spcXpdrClient = xpdrClientTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get(); - ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, DSR, DSR, LayerProtocolName.DSR); - putXpdrCepInTopologyContext(xpdr, spcXpdrClient, DSR, DSR, netCep1); + ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, + LayerProtocolName.DSR); + putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.DSR, TapiStringConstants.DSR, netCep1); - cepMap.put(netCep1.key(), netCep1); + ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrClient, TapiStringConstants.E_ODU, + TapiStringConstants.DSR, LayerProtocolName.ODU); + putXpdrCepInTopologyContext(xpdr, spcXpdrClient, TapiStringConstants.E_ODU, TapiStringConstants.DSR, + netCep2); + + String spcXpdrNetwork = getAssociatedNetworkPort(spcXpdrClient, xpdrNetworkTplist); + ConnectionEndPoint netCep3 = getAssociatediODUCep(spcXpdrNetwork); + + cepMapDsr.put(netCep1.key(), netCep1); + cepMapOdu.put(netCep2.key(), netCep2); + // Create x connection between I_ODU and E_ODU within xpdr + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrClient, spcXpdrNetwork, + TapiStringConstants.ODU, LayerProtocolName.ODU); + this.connectionFullMap.put(connection.key(), connection); + + // Create X connection that will be added to the service object + Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build(); + connServMap.put(conn.key(), conn); } // DSR top connection between edge xpdr CLIENT DSR @@ -484,14 +496,25 @@ public final class ConnectivityUtils { .get(0))).findFirst().get(); String spcXpdr2 = xpdrClientTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().get(); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, DSR, LayerProtocolName.DSR); - this.connectionFullMap.put(connection.key(), connection); + connectionOdu = createTopConnection(spcXpdr1, spcXpdr2, cepMapOdu, TapiStringConstants.E_ODU, + LayerProtocolName.ODU); + this.connectionFullMap.put(connectionOdu.key(), connectionOdu); // ODU top connection that will be added to the service object - Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build(); + Connection conn = new ConnectionBuilder().setConnectionUuid(connectionOdu.getUuid()).build(); connServMap.put(conn.key(), conn); + org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection + connectionDsr = createTopConnection(spcXpdr1, spcXpdr2, cepMapDsr, TapiStringConstants.DSR, + LayerProtocolName.DSR); + this.connectionFullMap.put(connectionDsr.key(), connectionDsr); + + // DSR top connection that will be added to the service object + Connection conn1 = new ConnectionBuilder().setConnectionUuid(connectionDsr.getUuid()).build(); + connServMap.put(conn1.key(), conn1); + return connServMap; } @@ -500,38 +523,28 @@ public final class ConnectivityUtils { Map connServMap = new HashMap<>(); Map cepMap = new HashMap<>(); - // Create 1 cep per Xpdr in the I_ODU and E_ODU, X connection between iODU and eODU and a top + // Create 1 cep per Xpdr in the I_ODU and a top // connection iODU between the xpdrs for (String xpdr:xpdrNodelist) { LOG.info("Creating ceps and xc for xpdr {}", xpdr); String spcXpdrNetwork = xpdrNetworkTplist.stream().filter(netp -> netp.contains(xpdr)).findFirst().get(); - ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, E_ODU, DSR, LayerProtocolName.ODU); - putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_ODU, DSR, netCep1); - ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, I_ODU, DSR, LayerProtocolName.ODU); - putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_ODU, DSR, netCep2); + ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_ODU, + TapiStringConstants.DSR, LayerProtocolName.ODU); + putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_ODU, TapiStringConstants.DSR, + netCep1); cepMap.put(netCep1.key(), netCep1); - cepMap.put(netCep2.key(), netCep2); - - // Create x connection between I_ODU and E_ODU within xpdr - org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createXCBetweenCeps(netCep1, netCep2, spcXpdrNetwork, spcXpdrNetwork, ODU, - LayerProtocolName.ODU); - this.connectionFullMap.put(connection.key(), connection); - - // Create X connection that will be added to the service object - Connection conn = new ConnectionBuilder().setConnectionUuid(connection.getUuid()).build(); - connServMap.put(conn.key(), conn); } - // ODU top connection between edge xpdr e_ODU + // ODU top connection between edge xpdr i_ODU String spcXpdr1 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(0))).findFirst().get(); String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().get(); org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, E_ODU, LayerProtocolName.ODU); + connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_ODU, + LayerProtocolName.ODU); this.connectionFullMap.put(connection.key(), connection); // ODU top connection that will be added to the service object @@ -555,21 +568,26 @@ public final class ConnectivityUtils { // TODO photonic media model should be updated to have the corresponding CEPs. I will just create // 3 different MC CEPs giving different IDs to show that they are different // Create 3 CEPs for each xpdr otsi node and the corresponding cross connection matchin the NEPs - ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, PHTNC_MEDIA, OTSI, - LayerProtocolName.PHOTONICMEDIA); - putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, PHTNC_MEDIA, OTSI, netCep1); - ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, E_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA); - putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, E_OTSI, OTSI, netCep2); - ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, I_OTSI, OTSI, LayerProtocolName.PHOTONICMEDIA); - putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, I_OTSI, OTSI, netCep3); + ConnectionEndPoint netCep1 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, + TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); + putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.OTSI, + netCep1); + ConnectionEndPoint netCep2 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.E_OTSI, + TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); + putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.E_OTSI, TapiStringConstants.OTSI, + netCep2); + ConnectionEndPoint netCep3 = createCepXpdr(spcXpdrNetwork, TapiStringConstants.I_OTSI, + TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); + putXpdrCepInTopologyContext(xpdr, spcXpdrNetwork, TapiStringConstants.I_OTSI, TapiStringConstants.OTSI, + netCep3); cepMap.put(netCep1.key(), netCep1); cepMap.put(netCep2.key(), netCep2); cepMap.put(netCep3.key(), netCep3); // Create x connection between I_OTSi and E_OTSi within xpdr org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, OTSI, - LayerProtocolName.PHOTONICMEDIA); + connection = createXCBetweenCeps(netCep2, netCep3, spcXpdrNetwork, spcXpdrNetwork, + TapiStringConstants.OTSI, LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); // Create X connection that will be added to the service object @@ -582,7 +600,8 @@ public final class ConnectivityUtils { String spcXpdr2 = xpdrNetworkTplist.stream().filter(adp -> adp.contains(xpdrNodelist .get(xpdrNodelist.size() - 1))).findFirst().get(); org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, I_OTSI, LayerProtocolName.PHOTONICMEDIA); + connection = createTopConnection(spcXpdr1, spcXpdr2, cepMap, TapiStringConstants.I_OTSI, + LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); // OTSi top connection that will be added to the service object @@ -612,12 +631,12 @@ public final class ConnectivityUtils { // Create 3 CEPs for each AD and DEG and the corresponding cross connections, matching the NEPs // created in the topology creation // add CEPs to the topology to the corresponding ONEP - ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, PHTNC_MEDIA); - putRdmCepInTopologyContext(roadm, spcRdmAD, PHTNC_MEDIA, adCep1); - ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, MC); - putRdmCepInTopologyContext(roadm, spcRdmAD, MC, adCep2); - ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, OTSI_MC); - putRdmCepInTopologyContext(roadm, spcRdmAD, OTSI_MC, adCep3); + ConnectionEndPoint adCep1 = createCepRoadm(spcRdmAD, TapiStringConstants.PHTNC_MEDIA); + putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.PHTNC_MEDIA, adCep1); + ConnectionEndPoint adCep2 = createCepRoadm(spcRdmAD, TapiStringConstants.MC); + putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.MC, adCep2); + ConnectionEndPoint adCep3 = createCepRoadm(spcRdmAD, TapiStringConstants.OTSI_MC); + putRdmCepInTopologyContext(roadm, spcRdmAD, TapiStringConstants.OTSI_MC, adCep3); cepMap.put(adCep1.key(), adCep1); cepMap.put(adCep2.key(), adCep2); cepMap.put(adCep3.key(), adCep3); @@ -625,12 +644,12 @@ public final class ConnectivityUtils { String spcRdmDEG = rdmDegTplist.stream().filter(adp -> adp.contains(roadm)).findFirst().get(); LOG.info("Degree port of ROADm {} = {}", roadm, spcRdmDEG); - ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, PHTNC_MEDIA); - putRdmCepInTopologyContext(roadm, spcRdmDEG, PHTNC_MEDIA, degCep1); - ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, MC); - putRdmCepInTopologyContext(roadm, spcRdmDEG, MC, degCep2); - ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, OTSI_MC); - putRdmCepInTopologyContext(roadm, spcRdmDEG, OTSI_MC, degCep3); + ConnectionEndPoint degCep1 = createCepRoadm(spcRdmDEG, TapiStringConstants.PHTNC_MEDIA); + putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.PHTNC_MEDIA, degCep1); + ConnectionEndPoint degCep2 = createCepRoadm(spcRdmDEG, TapiStringConstants.MC); + putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.MC, degCep2); + ConnectionEndPoint degCep3 = createCepRoadm(spcRdmDEG, TapiStringConstants.OTSI_MC); + putRdmCepInTopologyContext(roadm, spcRdmDEG, TapiStringConstants.OTSI_MC, degCep3); cepMap.put(degCep1.key(), degCep1); cepMap.put(degCep2.key(), degCep2); cepMap.put(degCep3.key(), degCep3); @@ -638,11 +657,11 @@ public final class ConnectivityUtils { LOG.info("Going to create cross connections for ROADM {}", roadm); // Create X connections between MC and OTSi_MC for full map org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, MC, + connection1 = createXCBetweenCeps(adCep2, degCep2, spcRdmAD, spcRdmDEG, TapiStringConstants.MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 1 created = {}", connection1); org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, OTSI_MC, + connection2 = createXCBetweenCeps(adCep3, degCep3, spcRdmAD, spcRdmDEG, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); LOG.info("Cross connection 2 created = {}", connection2); this.connectionFullMap.put(connection1.key(), connection1); @@ -670,7 +689,8 @@ public final class ConnectivityUtils { // Create top connections between MC for full map org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, MC, LayerProtocolName.PHOTONICMEDIA); + connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.MC, + LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); LOG.info("Top connection created = {}", connection); @@ -684,7 +704,7 @@ public final class ConnectivityUtils { String spcRdmAD1 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm1)).findFirst().get(); String spcRdmAD2 = rdmAddDropTplist.stream().filter(adp -> adp.contains(edgeRoadm2)).findFirst().get(); org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.Connection - connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, OTSI_MC, + connection = createTopConnection(spcRdmAD1, spcRdmAD2, cepMap, TapiStringConstants.OTSI_MC, LayerProtocolName.PHOTONICMEDIA); this.connectionFullMap.put(connection.key(), connection); LOG.info("Top connection created = {}", connection); @@ -829,7 +849,7 @@ public final class ConnectivityUtils { .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0], qualifier)).getBytes(Charset.forName("UTF-8"))) .toString())) - .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER + .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString())) .build(); // TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...) @@ -862,7 +882,7 @@ public final class ConnectivityUtils { .setNodeUuid(new Uuid(UUID.nameUUIDFromBytes((String.join("+",id.split("\\+")[0], nodeLayer)).getBytes(Charset.forName("UTF-8"))) .toString())) - .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER + .setTopologyUuid(new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString())) .build(); // TODO: add augmentation with the corresponding cep-spec (i.e. MC, OTSiMC...) @@ -1001,9 +1021,9 @@ public final class ConnectivityUtils { ZToA firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("0")).findFirst().get(); TerminationPoint tp = (TerminationPoint) firstElement.getResource().getResource(); Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), MC, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), MC, tp.getTpId())); + LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId())); for (ServiceInterfacePoint sip:this.sipMap.values()) { if (!sip.getUuid().equals(sipUuid)) { LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue()); @@ -1023,27 +1043,31 @@ public final class ConnectivityUtils { tp = (TerminationPoint) firstElement.getResource().getResource(); // Network-Network ports --> iODU layer SIPs TODO --> updated to E_ODU sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), E_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.I_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), E_ODU, tp.getTpId())); + LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.I_ODU, + tp.getTpId())); break; case OTU: firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("2")).findFirst().get(); tp = (TerminationPoint) firstElement.getResource().getResource(); // Network-Network ports --> iOTSi layer SIPs sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), I_OTSI, tp.getTpId())); + LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.I_OTSI, + tp.getTpId())); break; case Ethernet: + LOG.info("Elements ZA = {}", mapztoa.values().toString()); firstElement = mapztoa.values().stream().filter(ztoa -> ztoa.getId().equals("0")).findFirst().get(); tp = (TerminationPoint) firstElement.getResource().getResource(); // Client-client ports --> DSR layer SIPs sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), DSR, tp.getTpId())); + LOG.info("SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.DSR, + tp.getTpId())); break; default: sipUuid = null; @@ -1072,9 +1096,10 @@ public final class ConnectivityUtils { LOG.info("First element of service path = {}", firstElement.getResource().getResource()); TerminationPoint tp = (TerminationPoint) firstElement.getResource().getResource(); Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), MC, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.MC, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("ROADM SIP name = {}", String.join("+", tp.getTpNodeId(), MC, tp.getTpId())); + LOG.info("ROADM SIP name = {}", String.join("+", tp.getTpNodeId(), TapiStringConstants.MC, + tp.getTpId())); for (ServiceInterfacePoint sip:this.sipMap.values()) { if (!sip.getUuid().equals(sipUuid)) { LOG.info("SIP {} doesn match sipname {}", sip.getUuid().getValue(), sipUuid.getValue()); @@ -1094,27 +1119,31 @@ public final class ConnectivityUtils { tp = (TerminationPoint) firstElement.getResource().getResource(); // Network-Network ports --> iODU layer SIPs. TODO -> updated to eODU sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), E_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.I_ODU, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("ODU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), E_ODU, tp.getTpId())); + LOG.info("ODU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), + TapiStringConstants.I_ODU, tp.getTpId())); break; case OTU: firstElement = mapatoz.values().stream().filter(atoz -> atoz.getId().equals("2")).findFirst().get(); tp = (TerminationPoint) firstElement.getResource().getResource(); // Network-Network ports --> iOTSi layer SIPs sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.I_OTSI, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("OTU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), I_OTSI, tp.getTpId())); + LOG.info("OTU XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), + TapiStringConstants.I_OTSI, tp.getTpId())); break; case Ethernet: + LOG.info("Elements AZ = {}", mapatoz.values().toString()); firstElement = mapatoz.values().stream().filter(atoz -> atoz.getId().equals("0")).findFirst().get(); tp = (TerminationPoint) firstElement.getResource().getResource(); // Client-client ports --> DSR layer SIPs sipUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "SIP", - tp.getTpNodeId(), DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) + tp.getTpNodeId(), TapiStringConstants.DSR, tp.getTpId())).getBytes(Charset.forName("UTF-8"))) .toString()); - LOG.info("DSR XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), DSR, tp.getTpId())); + LOG.info("DSR XPDR SIP name = {}", String.join("+", tp.getTpNodeId(), + TapiStringConstants.DSR, tp.getTpId())); break; default: sipUuid = null; @@ -1134,11 +1163,11 @@ public final class ConnectivityUtils { private void putRdmCepInTopologyContext(String node, String spcRdmAD, String qual, ConnectionEndPoint cep) { LOG.info("NEP id before Merge = {}", String.join("+", node, qual, spcRdmAD.split("\\+")[1])); - LOG.info("Node of NEP id before Merge = {}", String.join("+", node, PHTNC_MEDIA)); + LOG.info("Node of NEP id before Merge = {}", String.join("+", node, TapiStringConstants.PHTNC_MEDIA)); // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep - Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER + Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString()); - Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, PHTNC_MEDIA) + Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, TapiStringConstants.PHTNC_MEDIA) .getBytes(Charset.forName("UTF-8"))).toString()); Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, qual, spcRdmAD.split("\\+")[1]) .getBytes(Charset.forName("UTF-8"))).toString()); @@ -1148,7 +1177,7 @@ public final class ConnectivityUtils { private void putXpdrCepInTopologyContext(String node, String spcXpdrNet, String qual, String nodeLayer, ConnectionEndPoint cep) { // Give uuids so that it is easier to look for things: topology uuid, node uuid, nep uuid, cep - Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TopologyUtils.T0_FULL_MULTILAYER + Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(TapiStringConstants.T0_FULL_MULTILAYER .getBytes(Charset.forName("UTF-8"))).toString()); Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(String.join("+", node, nodeLayer) .getBytes(Charset.forName("UTF-8"))).toString()); @@ -1165,8 +1194,8 @@ public final class ConnectivityUtils { } private String getIdBasedOnModelVersion(String nodeid) { - return nodeid.matches("[A-Z]{5}-[A-Z0-9]{2}-.*") ? String.join("-", nodeid.split("-")[0], nodeid.split("-")[1]) - : nodeid.split("-")[0]; + return nodeid.matches("[A-Z]{5}-[A-Z0-9]{2}-.*") ? String.join("-", nodeid.split("-")[0], + nodeid.split("-")[1]) : nodeid.split("-")[0]; } public ServiceCreateInput createORServiceInput(CreateConnectivityServiceInput input, Uuid serviceUuid) { @@ -1179,8 +1208,10 @@ public final class ConnectivityUtils { ConnectivityConstraint constraint = input.getConnectivityConstraint(); ConnectionType connType = null; ServiceFormat serviceFormat = null; - String nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), DSR); - String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(), DSR); + String nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), + TapiStringConstants.DSR); + String nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(), + TapiStringConstants.DSR); LOG.debug("Node a = {}", nodeAid); LOG.debug("Node z = {}", nodeZid); switch (constraint.getServiceLayer().getIntValue()) { @@ -1189,8 +1220,13 @@ public final class ConnectivityUtils { connType = ConnectionType.Infrastructure; serviceFormat = ServiceFormat.ODU; break; + case 1: + LOG.info("ETH, no need to create OTU and ODU"); + connType = ConnectionType.Service; + serviceFormat = ServiceFormat.Ethernet; + break; case 2: - LOG.info("DSR"); + LOG.info("DSR, need to create OTU and ODU"); connType = ConnectionType.Service; serviceFormat = ServiceFormat.Ethernet; break; @@ -1200,13 +1236,14 @@ public final class ConnectivityUtils { serviceFormat = getServiceFormatPhtnc(endPointMap.values()); if (serviceFormat.equals(ServiceFormat.OC)) { nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), - PHTNC_MEDIA); + TapiStringConstants.PHTNC_MEDIA); nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(), - PHTNC_MEDIA); + TapiStringConstants.PHTNC_MEDIA); } else { - nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), OTSI); + nodeAid = String.join("+", endPointMap.values().stream().findFirst().get().getLocalId(), + TapiStringConstants.OTSI); nodeZid = String.join("+", endPointMap.values().stream().skip(1).findFirst().get().getLocalId(), - OTSI); + TapiStringConstants.OTSI); } LOG.debug("Node a photonic = {}", nodeAid); LOG.debug("Node z photonic = {}", nodeZid); @@ -1318,14 +1355,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(txPortDeviceName) .setPortName(txPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -1333,14 +1370,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(rxPortDeviceName) .setPortName(rxPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()); @@ -1428,14 +1465,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(txPortDeviceName) .setPortName(txPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()) @@ -1443,14 +1480,14 @@ public final class ConnectivityUtils { .setPort(new PortBuilder() .setPortDeviceName(rxPortDeviceName) .setPortName(rxPortName) - .setPortRack(PORT_RACK_VALUE) + .setPortRack(TapiStringConstants.PORT_RACK_VALUE) .setPortShelf("00") - .setPortType(PORT_TYPE) + .setPortType(TapiStringConstants.PORT_TYPE) .build()) .setLgx(new LgxBuilder() - .setLgxDeviceName(LGX_DEVICE_NAME) - .setLgxPortName(LGX_PORT_NAME) - .setLgxPortRack(PORT_RACK_VALUE) + .setLgxDeviceName(TapiStringConstants.LGX_DEVICE_NAME) + .setLgxPortName(TapiStringConstants.LGX_PORT_NAME) + .setLgxPortRack(TapiStringConstants.PORT_RACK_VALUE) .setLgxPortShelf("00") .build()) .build()); @@ -1508,4 +1545,25 @@ public final class ConnectivityUtils { // EndPoints ar not ROADMs -> XPDR, MUXPDR, SWTICHPDR return ServiceFormat.OTU; } + + private ConnectionEndPoint getAssociatediODUCep(String spcXpdrNetwork) { + Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0], + TapiStringConstants.DSR).getBytes(Charset.forName("UTF-8")))).toString()); + Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", spcXpdrNetwork.split("\\+")[0], + TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1]).getBytes(Charset.forName("UTF-8")))) + .toString()); + Uuid cepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "CEP", + spcXpdrNetwork.split("\\+")[0], TapiStringConstants.I_ODU, spcXpdrNetwork.split("\\+")[1])) + .getBytes(Charset.forName("UTF-8"))).toString()); + return this.tapiContext.getTapiCEP(this.tapiTopoUuid, nodeUuid, nepUuid, cepUuid); + } + + private String getAssociatedNetworkPort(String spcXpdrClient, List xpdrNetworkTplist) { + for (String networkPort:xpdrNetworkTplist) { + if (networkPort.split("\\+")[0].equals(spcXpdrClient.split("\\+")[0])) { + return networkPort; + } + } + return null; + } }