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.rev220114.mapping.Mapping;
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;
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, PortMappingVersion710 portMapping710) {
this.deviceTransactionManager = deviceTransactionManager;
+ this.portMapping = portMapping;
+ this.portMapping710 = portMapping710;
}
public void postInterface(String nodeId, InterfaceBuilder ifBuilder) throws OpenRoadmInterfaceException {
}
if (intf2DeleteOpt.isPresent()) {
Interface intf2Delete = intf2DeleteOpt.get();
- // State admin state to out of service
- InterfaceBuilder ifBuilder = new InterfaceBuilder(intf2Delete);
- ifBuilder.setAdministrativeState(AdminStates.OutOfService);
+ // 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
+ // just build a new Interface builder without the arguments for inter2Delete
+ InterfaceBuilder ifBuilder = new InterfaceBuilder()
+ .setAdministrativeState(AdminStates.OutOfService)
+ // 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());
+
// post interface with updated admin state
try {
postInterface(nodeId, ifBuilder);
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 {