From 40a0430faa0c6482f644125283d8c6f2db430421 Mon Sep 17 00:00:00 2001 From: Mohamed El-Serngawy Date: Tue, 8 Dec 2015 17:33:17 -0500 Subject: [PATCH] fix re-create evc and uni Change-Id: I7b188966d8b4836c8e7ca5e35e19499fac1cd0e1 Signed-off-by: Mohamed El-Serngawy --- .../unimgr/command/EvcDeleteCommand.java | 24 +++++++++++-------- .../unimgr/command/UniCreateCommand.java | 1 + .../unimgr/command/UniDeleteCommand.java | 22 ++++++++++++----- .../opendaylight/unimgr/impl/UnimgrUtils.java | 2 +- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/impl/src/main/java/org/opendaylight/unimgr/command/EvcDeleteCommand.java b/impl/src/main/java/org/opendaylight/unimgr/command/EvcDeleteCommand.java index a2cd4c26..5968b7d2 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/command/EvcDeleteCommand.java +++ b/impl/src/main/java/org/opendaylight/unimgr/command/EvcDeleteCommand.java @@ -14,6 +14,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.unimgr.impl.UnimgrConstants; +import org.opendaylight.unimgr.impl.UnimgrMapper; import org.opendaylight.unimgr.impl.UnimgrUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagedNodeEntry; @@ -22,6 +23,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.r import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniDest; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.evc.UniSource; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -74,9 +76,7 @@ public class EvcDeleteCommand extends AbstractDeleteCommand { } } } - UnimgrUtils.deleteNode(dataBroker, - removedEvcIid, - LogicalDatastoreType.OPERATIONAL); + UnimgrUtils.deleteNode(dataBroker, removedEvcIid, LogicalDatastoreType.OPERATIONAL); } } } @@ -98,18 +98,22 @@ public class EvcDeleteCommand extends AbstractDeleteCommand { ovsdbNodeIid); if (optionalOvsdNode.isPresent()) { Node ovsdbNode = optionalOvsdNode.get(); - OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode - .getAugmentation(OvsdbNodeAugmentation.class); + OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class); for (ManagedNodeEntry managedNodeEntry: ovsdbNodeAugmentation.getManagedNodeEntry()) { InstanceIdentifier bridgeIid = managedNodeEntry .getBridgeRef() .getValue() .firstIdentifierOf(Node.class); - UnimgrUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION); - UnimgrUtils.createBridgeNode(dataBroker, - ovsdbNodeIid, - uniAugmentation, - UnimgrConstants.DEFAULT_BRIDGE_NAME); + Optional optBridgeNode = UnimgrUtils.readNode(dataBroker, bridgeIid); + if (optBridgeNode.isPresent()) { + Node bridgeNode = optBridgeNode.get(); + InstanceIdentifier iidGreTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode, + UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME); + InstanceIdentifier iidEthTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode, + UnimgrConstants.DEFAULT_TUNNEL_IFACE); + UnimgrUtils.deleteNode(dataBroker, iidGreTermPoint, LogicalDatastoreType.CONFIGURATION); + UnimgrUtils.deleteNode(dataBroker, iidEthTermPoint, LogicalDatastoreType.CONFIGURATION); + } } } } else { diff --git a/impl/src/main/java/org/opendaylight/unimgr/command/UniCreateCommand.java b/impl/src/main/java/org/opendaylight/unimgr/command/UniCreateCommand.java index 711841a4..49bf992f 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/command/UniCreateCommand.java +++ b/impl/src/main/java/org/opendaylight/unimgr/command/UniCreateCommand.java @@ -108,6 +108,7 @@ public class UniCreateCommand extends AbstractCreateCommand { uni, ovsdbNode, dataBroker); + UnimgrUtils.updateUniNode(LogicalDatastoreType.OPERATIONAL, uniKey, uni, ovsdbNode, dataBroker); } else { ovsdbNode = UnimgrUtils.createOvsdbNode(dataBroker, uni); diff --git a/impl/src/main/java/org/opendaylight/unimgr/command/UniDeleteCommand.java b/impl/src/main/java/org/opendaylight/unimgr/command/UniDeleteCommand.java index 9dab51f5..738f4132 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/command/UniDeleteCommand.java +++ b/impl/src/main/java/org/opendaylight/unimgr/command/UniDeleteCommand.java @@ -12,11 +12,13 @@ import java.util.Set; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.unimgr.impl.UnimgrConstants; import org.opendaylight.unimgr.impl.UnimgrMapper; import org.opendaylight.unimgr.impl.UnimgrUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unimgr.rev151012.UniAugmentation; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -43,21 +45,29 @@ public class UniDeleteCommand extends AbstractDeleteCommand { UniAugmentation uniAugmentation = UnimgrUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL, removedUniIid); - if(uniAugmentation != null) { + if (uniAugmentation != null) { OvsdbNodeRef ovsNodedRef = uniAugmentation.getOvsdbNodeRef(); InstanceIdentifier ovsdbNodeIid = ovsNodedRef.getValue().firstIdentifierOf(Node.class); Optional optionalNode = UnimgrUtils.readNode(dataBroker, LogicalDatastoreType.OPERATIONAL, ovsdbNodeIid); if (optionalNode.isPresent()) { + LOG.info("Delete bride node"); Node ovsdbNode = optionalNode.get(); InstanceIdentifier bridgeIid = UnimgrMapper.getOvsdbBridgeNodeIid(ovsdbNode); - UnimgrUtils.deleteNode(dataBroker, - bridgeIid, - LogicalDatastoreType.CONFIGURATION); + Optional optBridgeNode = UnimgrUtils.readNode(dataBroker, bridgeIid); + if (optBridgeNode.isPresent()) { + Node bridgeNode = optBridgeNode.get(); + InstanceIdentifier iidTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode, + UnimgrConstants.DEFAULT_BRIDGE_NAME); + UnimgrUtils.deleteNode(dataBroker, iidTermPoint, LogicalDatastoreType.CONFIGURATION); + } + UnimgrUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION); } - InstanceIdentifier iidUni = UnimgrMapper.getUniIid(dataBroker, uniAugmentation.getIpAddress(), LogicalDatastoreType.OPERATIONAL); - UnimgrUtils.deleteNode(dataBroker, iidUni, LogicalDatastoreType.OPERATIONAL); + InstanceIdentifier iidUni = UnimgrMapper.getUniIid(dataBroker, uniAugmentation.getIpAddress(), + LogicalDatastoreType.OPERATIONAL); + if (iidUni != null) + UnimgrUtils.deleteNode(dataBroker, iidUni, LogicalDatastoreType.OPERATIONAL); } else { LOG.info("Received Uni Augmentation is null", removedUniIid); diff --git a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java index 3bb5f3cd..c80cdb3c 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java +++ b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java @@ -531,7 +531,7 @@ public class UnimgrUtils { transaction.delete(store, genericNode); try { transaction.submit().checkedGet(); - return !result; + result = true; } catch (TransactionCommitFailedException e) { LOG.error("Unable to remove node with Iid {} from store {}.", genericNode, store); } -- 2.36.6