fix re-create evc and uni 25/31025/1
authorMohamed El-Serngawy <melserngawy@inocybe.com>
Tue, 8 Dec 2015 22:33:17 +0000 (17:33 -0500)
committerMohamed El-Serngawy <melserngawy@inocybe.com>
Tue, 8 Dec 2015 22:33:17 +0000 (17:33 -0500)
Change-Id: I7b188966d8b4836c8e7ca5e35e19499fac1cd0e1
Signed-off-by: Mohamed El-Serngawy <melserngawy@inocybe.com>
impl/src/main/java/org/opendaylight/unimgr/command/EvcDeleteCommand.java
impl/src/main/java/org/opendaylight/unimgr/command/UniCreateCommand.java
impl/src/main/java/org/opendaylight/unimgr/command/UniDeleteCommand.java
impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java

index a2cd4c26368de02862b212acf08ddd7e89201746..5968b7d22257f965f7d467406dd6241d3661909c 100644 (file)
@@ -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<Node> bridgeIid = managedNodeEntry
                                                              .getBridgeRef()
                                                              .getValue()
                                                              .firstIdentifierOf(Node.class);
-                    UnimgrUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION);
-                    UnimgrUtils.createBridgeNode(dataBroker,
-                                                 ovsdbNodeIid,
-                                                 uniAugmentation,
-                                                 UnimgrConstants.DEFAULT_BRIDGE_NAME);
+                    Optional<Node> optBridgeNode = UnimgrUtils.readNode(dataBroker, bridgeIid);
+                    if (optBridgeNode.isPresent()) {
+                        Node bridgeNode = optBridgeNode.get();
+                        InstanceIdentifier<TerminationPoint> iidGreTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode,
+                                                                                        UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME);
+                        InstanceIdentifier<TerminationPoint> iidEthTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode,
+                                                                                        UnimgrConstants.DEFAULT_TUNNEL_IFACE);
+                        UnimgrUtils.deleteNode(dataBroker, iidGreTermPoint, LogicalDatastoreType.CONFIGURATION);
+                        UnimgrUtils.deleteNode(dataBroker, iidEthTermPoint, LogicalDatastoreType.CONFIGURATION);
+                    }
                 }
             }
         } else {
index 711841a4aaf6089312cb711969beb2fb87072771..49bf992fce0bea1a3080bbcf1ff8589f251b60e1 100644 (file)
@@ -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);
index 9dab51f58386777ee3cc7c2761bbdf3ee054420e..738f413257b425138b302a631c4a04cfc7b7b8ad 100644 (file)
@@ -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<Node> ovsdbNodeIid = ovsNodedRef.getValue().firstIdentifierOf(Node.class);
                     Optional<Node> optionalNode = UnimgrUtils.readNode(dataBroker,
                                                                        LogicalDatastoreType.OPERATIONAL,
                                                                        ovsdbNodeIid);
                     if (optionalNode.isPresent()) {
+                        LOG.info("Delete bride node");
                         Node ovsdbNode = optionalNode.get();
                         InstanceIdentifier<Node> bridgeIid = UnimgrMapper.getOvsdbBridgeNodeIid(ovsdbNode);
-                            UnimgrUtils.deleteNode(dataBroker,
-                                                   bridgeIid,
-                                                   LogicalDatastoreType.CONFIGURATION);
+                        Optional<Node> optBridgeNode = UnimgrUtils.readNode(dataBroker, bridgeIid);
+                        if (optBridgeNode.isPresent()) {
+                            Node bridgeNode = optBridgeNode.get();
+                            InstanceIdentifier<TerminationPoint> iidTermPoint = UnimgrMapper.getTerminationPointIid(bridgeNode,
+                                                                                            UnimgrConstants.DEFAULT_BRIDGE_NAME);
+                            UnimgrUtils.deleteNode(dataBroker, iidTermPoint, LogicalDatastoreType.CONFIGURATION);
+                        }
+                        UnimgrUtils.deleteNode(dataBroker, bridgeIid, LogicalDatastoreType.CONFIGURATION);
                     }
-                    InstanceIdentifier<Node> iidUni = UnimgrMapper.getUniIid(dataBroker, uniAugmentation.getIpAddress(), LogicalDatastoreType.OPERATIONAL);
-                    UnimgrUtils.deleteNode(dataBroker, iidUni, LogicalDatastoreType.OPERATIONAL);
+                    InstanceIdentifier<Node> 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);
index 3bb5f3cd3b85ffeb9ea5893ee1718d63c28b62b7..c80cdb3cc53a02aa6fcd008bb57c43c3196aaefc 100644 (file)
@@ -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);
         }