X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=renderer%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Frenderer%2Fprovisiondevice%2FOtnDeviceRendererServiceImpl.java;h=f9606e3b3f96698c3728af138b39cb1facb097e5;hb=c725528fb8a0b09ce24adac744c888a10cf90f72;hp=676f1557012921a73029def82ef4d9a0425e1be5;hpb=ed0789eb5b14e334c5750e73e456157d9076b1bc;p=transportpce.git diff --git a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/OtnDeviceRendererServiceImpl.java b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/OtnDeviceRendererServiceImpl.java index 676f15570..f9606e3b3 100644 --- a/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/OtnDeviceRendererServiceImpl.java +++ b/renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/OtnDeviceRendererServiceImpl.java @@ -26,16 +26,16 @@ import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfa import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; import org.opendaylight.transportpce.networkmodel.service.NetworkModelService; import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.OtnServicePathInput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.OtnServicePathOutput; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev200128.OtnServicePathOutputBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.Interface; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutputBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OpucnTribSlotDef; -import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.node.interfaces.NodeInterface; -import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.node.interfaces.NodeInterfaceBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.node.interfaces.NodeInterfaceKey; -import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev201211.otn.renderer.input.Nodes; -import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.OtnLinkType; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterface; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.node.interfaces.NodeInterfaceKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.otn.renderer.nodes.Nodes; +import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev210511.OtnLinkType; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,20 +67,20 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { boolean success = true; List nodeInterfaces = new ArrayList<>(); List results = new ArrayList<>(); - if (input.getServiceType() == null || input.getServiceRate() == null) { + if (input.getServiceFormat() == null || input.getServiceRate() == null) { OtnServicePathOutputBuilder otnServicePathOutputBuilder = new OtnServicePathOutputBuilder() .setSuccess(false) .setResult("Error - service-type and service-rate must be presents"); return otnServicePathOutputBuilder.build(); } CopyOnWriteArrayList otnNodesProvisioned = new CopyOnWriteArrayList<>(); - switch (input.getServiceType()) { + switch (input.getServiceFormat()) { case "Ethernet": - if ("10G".equals(input.getServiceRate()) || "1G".equals(input.getServiceRate())) { + if (input.getServiceRate().intValue() == 1 || input.getServiceRate().intValue() == 10) { try { LOG.info("Calling Node interfaces {} {} {} {} {} {} {}", input.getServiceRate(), input.getEthernetEncoding(), - input.getServiceType(), input.getOperation(), input.getTribPortNumber(), + input.getServiceFormat(), input.getOperation(), input.getTribPortNumber(), input.getTribSlot(), input.getNodes()); nodeInterfaces = createInterface(input); LOG.info("Node interfaces created just fine "); @@ -92,11 +92,12 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { LOG.warn("Set up service path failed", e); success = false; } - } else if ("100G".equals(input.getServiceRate())) { + } else if (input.getServiceRate().intValue() == 100) { try { LOG.info("Calling Node interfaces {} {} {} {} {} {}", input.getServiceRate(), input.getEthernetEncoding(), - input.getServiceType(), input.getOperation(), input.getOpucnTribSlots(), input.getNodes()); + input.getServiceFormat(), input.getOperation(), input.getOpucnTribSlots(), + input.getNodes()); nodeInterfaces = createInterface(input); LOG.info("Node interfaces created just fine for 100G OTN "); // TODO: Update the OTN topology accordingly with Opucn-Trib-slots @@ -112,7 +113,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { } break; case "ODU": - if ("100G".equals(input.getServiceRate())) { + if (input.getServiceRate().intValue() == 100) { try { createODU4TtpInterface(input, nodeInterfaces, otnNodesProvisioned); updateOtnTopology(otnNodesProvisioned, null, null, null, null, false); @@ -120,7 +121,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { LOG.warn("Set up service path failed", e); success = false; } - } else if ("400G".equals(input.getServiceRate())) { + } else if (input.getServiceRate().intValue() == 400) { try { createOduc4TtpInterface(input, nodeInterfaces, otnNodesProvisioned); updateOtnTopology(otnNodesProvisioned, null, null, null, null, false); @@ -133,7 +134,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { } break; default: - LOG.error("service-type {} not managed yet", input.getServiceType()); + LOG.error("service-type {} not managed yet", input.getServiceFormat()); break; } if (success) { @@ -172,28 +173,39 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { String nodeId = node.getNodeId(); LOG.info("Deleting service setup on node {}", nodeId); String networkTp = node.getNetworkTp(); - if (networkTp == null || input.getServiceRate() == null || input.getServiceType() == null) { - LOG.error("destination ({}) or service rate ({}) or service type ({}) is null.", networkTp, - input.getServiceRate(), input.getServiceType()); + if (networkTp == null || input.getServiceRate() == null || input.getServiceFormat() == null) { + LOG.error("destination ({}) or service-rate ({}) or service-format ({}) is null.", networkTp, + input.getServiceRate(), input.getServiceFormat()); return; } // if the node is currently mounted then proceed. if (this.deviceTransactionManager.isDeviceMounted(nodeId)) { String connectionNumber = ""; - switch (input.getServiceRate()) { - case ("100G"): - if ("ODU".equals(input.getServiceType())) { + switch (input.getServiceRate().intValue()) { + case 100: + if ("ODU".equals(input.getServiceFormat())) { interfacesToDelete.add(networkTp + "-ODU4"); otnNodesProvisioned.add(node); if (node.getNetwork2Tp() != null) { interfacesToDelete.add(node.getNetwork2Tp() + "-ODU4"); } + } else if ("Ethernet".equals(input.getServiceFormat())) { + connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU4"); } break; - case ("10G"): + case 400: + if ("ODU".equals(input.getServiceFormat())) { + interfacesToDelete.add(networkTp + "-ODUC4"); + otnNodesProvisioned.add(node); + if (node.getNetwork2Tp() != null) { + interfacesToDelete.add(node.getNetwork2Tp() + "-ODUC4"); + } + } + break; + case 10: connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU2e"); break; - case ("1G"): + case 1: connectionNumber = getConnectionNumber(input.getServiceName(), node, networkTp, "ODU0"); break; default: @@ -208,9 +220,17 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { for (String interf : intToDelete) { if (!this.openRoadmInterfaceFactory.isUsedByOtnXc(nodeId, interf, connectionNumber, this.deviceTransactionManager)) { + interfacesToDelete.add(interf); - if (!getSupportedInterface(nodeId, interf).contains("ODU4")) { - interfacesToDelete.add(getSupportedInterface(nodeId, interf)); + String supportedInterface = this.openRoadmInterfaces.getSupportedInterface(nodeId, interf); + if (input.getServiceRate().intValue() == 100) { + if (!supportedInterface.contains("ODUC4")) { + interfacesToDelete.add(supportedInterface); + } + } else { + if (!supportedInterface.contains("ODU4")) { + interfacesToDelete.add(supportedInterface); + } } } } @@ -251,7 +271,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { } forkJoinPool.shutdown(); LOG.info("requesting otn-topology update..."); - if (!nodesTpToUpdate.isEmpty() && !"ODU".equals(input.getServiceType())) { + if (!nodesTpToUpdate.isEmpty() && !"ODU".equals(input.getServiceFormat())) { updateOtnTopology(null, nodesTpToUpdate, input.getServiceRate(), input.getTribPortNumber(), input.getTribSlot(), true); } else if (!otnNodesProvisioned.isEmpty()) { @@ -277,21 +297,6 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { } } - private String getSupportedInterface(String nodeId, String interf) { - Optional supInterfOpt; - try { - supInterfOpt = this.openRoadmInterfaces.getInterface(nodeId, interf); - if (supInterfOpt.isPresent()) { - return supInterfOpt.get().getSupportingInterface(); - } else { - return null; - } - } catch (OpenRoadmInterfaceException e) { - LOG.error("error getting Supported Interface of {} - {}", interf, nodeId, e); - return null; - } - } - private List updateOduNodes(List nodeInterfaceList, String deLimiter) { List nodesToUpdate = new ArrayList<>(); if (!(deLimiter.equals("ODU")) || !(deLimiter.equals("ODUC4"))) { @@ -321,8 +326,8 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { List nodeInterfaces = new ArrayList<>(); LOG.info("Calling Create Interface entry for OTN service path"); if (input.getServiceRate() == null - || !("1G".equals(input.getServiceRate()) || "10G".equals(input.getServiceRate()) - || "100G".equals(input.getServiceRate()))) { + || !(input.getServiceRate().intValue() == 1 || input.getServiceRate().intValue() == 10 + || input.getServiceRate().intValue() == 100)) { LOG.error("Service rate {} not managed yet", input.getServiceRate()); } else { createLowOrderInterfaces(input, nodeInterfaces); @@ -341,8 +346,8 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { // check if the node is mounted or not? List createdEthInterfaces = new ArrayList<>(); List createdOduInterfaces = new ArrayList<>(); - switch (input.getServiceRate()) { - case ("1G"): + switch (input.getServiceRate().intValue()) { + case 1: LOG.info("Input service is 1G"); if (node.getClientTp() != null) { createdEthInterfaces.add( @@ -364,7 +369,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { input.getTribSlot())); } break; - case ("10G"): + case 10: LOG.info("Input service is 10G"); if (node.getClientTp() != null) { createdEthInterfaces.add(openRoadmInterfaceFactory.createOpenRoadmEth10GInterface( @@ -387,7 +392,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { input.getTribSlot())); } break; - case ("100G"): + case 100: LOG.info("Input service is 100G"); // Take the first and last value in the list of OpucnTribSlot (assuming SH would provide // min and max value only, size two) @@ -499,7 +504,7 @@ public class OtnDeviceRendererServiceImpl implements OtnDeviceRendererService { } } - private void updateOtnTopology(CopyOnWriteArrayList nodes, List nodesTps, String serviceRate, + private void updateOtnTopology(CopyOnWriteArrayList nodes, List nodesTps, Uint32 serviceRate, Short tribPortNb, Short tribSlotNb, boolean isDeletion) { if (nodes != null && nodes.size() == 2) { if (isDeletion) {