X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fopenroadminterfaces%2FOpenRoadmInterfacesImpl710.java;h=836bdf35fb6e496c44e2ecf20eb004ae1b38ce41;hb=3b12da60a58abd37a0d97afbe3c44c925547270f;hp=35fd0963fc5177efb2607334ea205a3954d43a3e;hpb=b39614911ce5dc431928dc84c4a42c806301d176;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/openroadminterfaces/OpenRoadmInterfacesImpl710.java b/common/src/main/java/org/opendaylight/transportpce/common/openroadminterfaces/OpenRoadmInterfacesImpl710.java index 35fd0963f..836bdf35f 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/openroadminterfaces/OpenRoadmInterfacesImpl710.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/openroadminterfaces/OpenRoadmInterfacesImpl710.java @@ -19,6 +19,10 @@ import org.opendaylight.transportpce.common.StringConstants; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransaction; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; +import org.opendaylight.transportpce.common.mapping.PortMapping; +import org.opendaylight.transportpce.common.mapping.PortMappingVersion710; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev231221.mapping.Mapping; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.Ports; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.pack.PortsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.packs.CircuitPacks; @@ -32,7 +36,6 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.port.Int import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates; import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.States; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,9 +44,13 @@ public class OpenRoadmInterfacesImpl710 { private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmInterfacesImpl710.class); private final DeviceTransactionManager deviceTransactionManager; + private final PortMapping portMapping; + private final PortMappingVersion710 portMapping710; - public OpenRoadmInterfacesImpl710(DeviceTransactionManager deviceTransactionManager) { + public OpenRoadmInterfacesImpl710(DeviceTransactionManager deviceTransactionManager, PortMapping portMapping) { this.deviceTransactionManager = deviceTransactionManager; + this.portMapping = portMapping; + this.portMapping710 = portMapping.getPortMappingVersion710(); } public void postInterface(String nodeId, InterfaceBuilder ifBuilder) throws OpenRoadmInterfaceException { @@ -52,7 +59,7 @@ public class OpenRoadmInterfacesImpl710 { try { Optional deviceTxOpt = deviceTxFuture.get(); if (deviceTxOpt.isPresent()) { - deviceTx = deviceTxOpt.get(); + deviceTx = deviceTxOpt.orElseThrow(); } else { throw new OpenRoadmInterfaceException(String.format("Device transaction was not found for node %s!", nodeId)); @@ -62,8 +69,10 @@ public class OpenRoadmInterfacesImpl710 { nodeId), e); } - InstanceIdentifier interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child( - Interface.class, new InterfaceKey(ifBuilder.getName())); + InstanceIdentifier interfacesIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey(ifBuilder.getName())) + .build(); LOG.info("POST INTERF for {} : InterfaceBuilder : name = {} \t type = {}", nodeId, ifBuilder.getName(), ifBuilder.getType().toString()); deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ifBuilder.build()); @@ -85,13 +94,17 @@ public class OpenRoadmInterfacesImpl710 { }; try { txSubmitFuture.get(); - LOG.info("Successfully posted interface {} on node {}", ifBuilder.getName(), nodeId); - boolean devicePortIsUptodated = false; - while (!devicePortIsUptodated) { - devicePortIsUptodated = checkIfDevicePortIsUpdatedWithInterface(nodeId, ifBuilder); + LOG.info("Successfully posted/deleted interface {} on node {}", ifBuilder.getName(), nodeId); + // this check is not needed during the delete operation + // during the delete operation, ifBuilder does not contain supporting-cp and supporting-port + if (ifBuilder.getSupportingCircuitPackName() != null && ifBuilder.getSupportingPort() != null) { + boolean devicePortIsUptodated = false; + while (!devicePortIsUptodated) { + devicePortIsUptodated = checkIfDevicePortIsUpdatedWithInterface(nodeId, ifBuilder); + } + LOG.info("{} - {} - interface {} updated on port {}", nodeId, ifBuilder.getSupportingCircuitPackName(), + ifBuilder.getName(), ifBuilder.getSupportingPort()); } - LOG.info("{} - {} - interface {} updated on port {}", nodeId, ifBuilder.getSupportingCircuitPackName(), - ifBuilder.getName(), ifBuilder.getSupportingPort()); timer.interrupt(); } catch (InterruptedException | ExecutionException e) { throw new OpenRoadmInterfaceException(String.format("Failed to post interface %s on node %s!", ifBuilder @@ -101,8 +114,10 @@ public class OpenRoadmInterfacesImpl710 { public Optional getInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException { - InstanceIdentifier interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Interface.class, new InterfaceKey(interfaceName)); + InstanceIdentifier interfacesIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey(interfaceName)) + .build(); return deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, interfacesIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); } @@ -118,7 +133,7 @@ public class OpenRoadmInterfacesImpl710 { interfaceName, nodeId), e); } if (intf2DeleteOpt.isPresent()) { - Interface intf2Delete = intf2DeleteOpt.get(); + Interface intf2Delete = intf2DeleteOpt.orElseThrow(); // set the name and set the type. Having these two lines will post the interface with just // name, type and admin-state, without all the default values such as maint-testsignal // delete the interfaces successfully @@ -128,10 +143,7 @@ public class OpenRoadmInterfacesImpl710 { // Though these could be redundant, but 'when' statements are causing problem, // when deleting the interfaces trying to be deleted .setName(intf2Delete.getName()) - .setType(intf2Delete.getType()) - // CP name and the ports are needed, since the post interface is validated - .setSupportingCircuitPackName(intf2Delete.getSupportingCircuitPackName()) - .setSupportingPort(intf2Delete.getSupportingPort()); + .setType(intf2Delete.getType()); // post interface with updated admin state try { @@ -141,15 +153,17 @@ public class OpenRoadmInterfacesImpl710 { + " deleting it!", interfaceName, AdminStates.OutOfService), ex); } - InstanceIdentifier interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child( - Interface.class, new InterfaceKey(interfaceName)); + InstanceIdentifier interfacesIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey(interfaceName)) + .build(); Future> deviceTxFuture = this.deviceTransactionManager.getDeviceTransaction( nodeId); DeviceTransaction deviceTx; try { Optional deviceTxOpt = deviceTxFuture.get(); if (deviceTxOpt.isPresent()) { - deviceTx = deviceTxOpt.get(); + deviceTx = deviceTxOpt.orElseThrow(); } else { throw new OpenRoadmInterfaceException(String.format("Device transaction was not found for node %s!", nodeId)); @@ -174,6 +188,11 @@ public class OpenRoadmInterfacesImpl710 { if (intf2Delete.getName().contains(StringConstants.CLIENT_TOKEN) || intf2Delete.getName().contains( StringConstants.NETWORK_TOKEN)) { postEquipmentState(nodeId, intf2Delete.getSupportingCircuitPackName(), false); + // Here we update the port-mapping data after the interface delete + Mapping oldMapping = this.portMapping.getMapping( + nodeId, intf2Delete.getSupportingCircuitPackName(), intf2Delete.getSupportingPort()); + this.portMapping.deleteMapping(nodeId, oldMapping.getLogicalConnectionPoint()); + this.portMapping710.updateMapping(nodeId, oldMapping); } } else { @@ -183,14 +202,16 @@ public class OpenRoadmInterfacesImpl710 { public void postEquipmentState(String nodeId, String circuitPackName, boolean activate) throws OpenRoadmInterfaceException { - InstanceIdentifier circuitPackIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child( - CircuitPacks.class, new CircuitPacksKey(circuitPackName)); + InstanceIdentifier circuitPackIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName)) + .build(); Optional cpOpt = this.deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, circuitPackIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); CircuitPacks cp = null; if (cpOpt.isPresent()) { - cp = cpOpt.get(); + cp = cpOpt.orElseThrow(); } else { throw new OpenRoadmInterfaceException(String.format( "Could not find CircuitPack %s in equipment config datastore for node %s", circuitPackName, nodeId)); @@ -215,7 +236,7 @@ public class OpenRoadmInterfacesImpl710 { try { Optional deviceTxOpt = deviceTxFuture.get(); if (deviceTxOpt.isPresent()) { - deviceTx = deviceTxOpt.get(); + deviceTx = deviceTxOpt.orElseThrow(); } else { throw new OpenRoadmInterfaceException(String.format("Device transaction was not found for node %s!", nodeId)); @@ -242,7 +263,7 @@ public class OpenRoadmInterfacesImpl710 { try { supInterfOpt = getInterface(nodeId, interf); if (supInterfOpt.isPresent()) { - return supInterfOpt.get().getSupportingInterfaceList().get(0); + return supInterfOpt.orElseThrow().getSupportingInterfaceList().stream().findFirst().orElseThrow(); } else { return null; } @@ -253,11 +274,13 @@ public class OpenRoadmInterfacesImpl710 { } private boolean checkIfDevicePortIsUpdatedWithInterface(String nodeId, InterfaceBuilder ifBuilder) { - KeyedInstanceIdentifier portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) + InstanceIdentifier portIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) .child(CircuitPacks.class, new CircuitPacksKey(ifBuilder.getSupportingCircuitPackName())) - .child(Ports.class, new PortsKey(ifBuilder.getSupportingPort())); + .child(Ports.class, new PortsKey(ifBuilder.getSupportingPort())) + .build(); Ports port = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, - portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).get(); + portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT).orElseThrow(); if (port.getInterfaces() == null) { return false; }