Yang changes and cleanup 18/30418/2
authorVishal Thapar <vishal.thapar@ericsson.com>
Tue, 1 Dec 2015 03:59:36 +0000 (09:29 +0530)
committerVishal Thapar <vishal.thapar@ericsson.com>
Tue, 1 Dec 2015 09:55:14 +0000 (15:25 +0530)
This commits changes how locator-sets are defined and used
in yang file. This also includes code changes to accomodate
yang file changes and some refactoring to make code bit more
simpler and added some error checking.

Patchset2:
1. Added uuid fields for some objects
2. Fixes some issues found in testing physicalLocatorUpdate

Change-Id: Ia55a3bbd15030c7a8fb5cf6276e705097e1da57e
Signed-off-by: Vishal Thapar <vishal.thapar@ericsson.com>
20 files changed:
hwvtepsouthbound/hwvtepsouthbound-api/src/main/yang/hwvtep.yang
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepConnectionManager.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepDataChangeListener.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepSouthboundConstants.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepSouthboundMapper.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepSouthboundUtil.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/HwvtepOperationalState.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/HwvtepOperationalCommandAggregator.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/LogicalSwitchUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/MacEntriesRemoveCommand.java [new file with mode: 0644]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsLocalRemoveCommand.java [deleted file]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsLocalUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsRemoteRemoveCommand.java [deleted file]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsRemoteUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorRemoveCommand.java [new file with mode: 0644]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorSetUpdateCommand.java [deleted file]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalSwitchUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsLocalRemoveCommand.java [deleted file]
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsRemoteRemoveCommand.java [deleted file]

index 2686b1e36fff362f78b68228cf9d5f4bb258e824..953b2a8fb95946a77bc81e2e8adeba5157cf1938 100644 (file)
@@ -77,13 +77,19 @@ module hwvtep {
     }
 
     grouping hwvtep-mcast-mac-table-attributes {
-        leaf locator-set-ref {
-            description "Reference to a set of physical locators used for replication";
-            type hwvtep-physical-locator-set-ref;
+        description "Multicast mac table attributes";
+        leaf ipaddr {
+            description "Optional IP address associated with the mac";
+            type inet:ip-address;
         }
+        uses hwvtep-physical-locator-set-attributes;
     }
 
     grouping hwvtep-tunnel-attributes {
+        leaf tunnel-uuid {
+            description "The unique identifier of the tunnel";
+            type yang:uuid;
+        }
         leaf local-locator-ref {
             description "Reference to the physical locator to reach this entry";
             type hwvtep-physical-locator-ref;
@@ -105,6 +111,11 @@ module hwvtep {
 
     grouping hwvtep-physical-switch-attributes {
         uses hwvtep-node-identification;
+
+        leaf physical-switch-uuid {
+            description "The unique identifier of the physical-switch";
+            type yang:uuid;
+        }
         list management-ips {
             key "management-ips-key";
             leaf management-ips-key {
@@ -231,6 +242,10 @@ module hwvtep {
     }
 
     grouping hwvtep-physical-locator-attributes {
+        leaf physical-locator-uuid {
+            description "The unique identifier of the physical-locator";
+            type yang:uuid;
+        }
         leaf encapsulation-type {
             type encapsulation-type;
             description "Encapsulation type used by this locator";
@@ -251,7 +266,7 @@ module hwvtep {
 
     grouping hwvtep-logical-switch-attributes {
         uses hwvtep-node-identification;
-        leaf hwvtep-logical-switch-external-id {
+        leaf logical-switch-uuid {
             description "A unique identifier of the logical switch";
             type yang:uuid;
         }
@@ -259,7 +274,6 @@ module hwvtep {
             description "Per Logical Switch tunnel key";
             type string;
         }
-        uses hwvtep-physical-locator-set-attributes;
     }
 
     grouping hwvtep-physical-port-attributes {
@@ -275,6 +289,10 @@ module hwvtep {
                 description "Reference to logical switch for the vlan";
                 type hwvtep-logical-switch-ref;
             }
+            leaf physical-port-uuid {
+                description "The unique identifier of the physical-port";
+                type yang:uuid;
+            }
         }
     }
 
index 70ff1754e87677ae0f29f95b96b07fbc33e02a05..d3bd5cd7eb66f02ac328c4abdd22d8d68521a152 100644 (file)
@@ -185,7 +185,12 @@ public class HwvtepConnectionManager implements OvsdbConnectionListener, AutoClo
         HwvtepGlobalAugmentation hwvtepGlobal = node.getAugmentation(HwvtepGlobalAugmentation.class);
         PhysicalSwitchAugmentation pSwitchNode = node.getAugmentation(PhysicalSwitchAugmentation.class);
         if (hwvtepGlobal != null) {
-            return getConnectionInstance(hwvtepGlobal.getConnectionInfo());
+            if(hwvtepGlobal.getConnectionInfo() != null) {
+                return getConnectionInstance(hwvtepGlobal.getConnectionInfo());
+            } else {
+                // TODO: Case of user configured connection
+                return null; //for now
+            }
         } //TODO: We could get it from Managers also.
         else if(pSwitchNode != null){
             return getConnectionInstance(pSwitchNode);
index 17590fce02d4c565df9a0bd13526f8da368eed8f..141b280822355c326e7d494d6c40c3109e87bf52 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataObjectModification.Mod
 import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState;
 import org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactCommandAggregator;
@@ -37,6 +38,8 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Optional;
+
 public class HwvtepDataChangeListener implements DataTreeChangeListener<Node>, AutoCloseable {
 
     private ListenerRegistration<HwvtepDataChangeListener> registration;
@@ -121,7 +124,8 @@ public class HwvtepDataChangeListener implements DataTreeChangeListener<Node>, A
             Node node = getCreated(mod);
             if (node != null) {
                 HwvtepGlobalAugmentation hwvtepGlobal = node.getAugmentation(HwvtepGlobalAugmentation.class);
-                if (hwvtepGlobal != null) {
+                // We can only connect if user configured connection info
+                if (hwvtepGlobal != null && hwvtepGlobal.getConnectionInfo() != null) {
                     ConnectionInfo connection = hwvtepGlobal.getConnectionInfo();
                     InstanceIdentifier<Node> iid = hcm.getInstanceIdentifier(connection);
                     if (iid != null) {
@@ -148,7 +152,8 @@ public class HwvtepDataChangeListener implements DataTreeChangeListener<Node>, A
                 Node original = getOriginal(mod);
                 HwvtepGlobalAugmentation hgUpdated = updated.getAugmentation(HwvtepGlobalAugmentation.class);
                 HwvtepGlobalAugmentation hgOriginal = original.getAugmentation(HwvtepGlobalAugmentation.class);
-                if (hgUpdated != null && hgOriginal != null) {
+                // Check if user has updated connection information
+                if (hgUpdated != null && hgOriginal != null && hgUpdated.getConnectionInfo() != null) {
                     OvsdbClient client = hcm.getClient(hgUpdated.getConnectionInfo());
                     if (client == null) {
                         try {
@@ -264,6 +269,16 @@ public class HwvtepDataChangeListener implements DataTreeChangeListener<Node>, A
             //From original node to get connection instance
             Node node = mod.getDataBefore()!=null ? mod.getDataBefore() : mod.getDataAfter();
             HwvtepConnectionInstance connection = hcm.getConnectionInstance(node);
+            if(connection == null) {
+                //Let us try getting it from Operational DS
+                final ReadWriteTransaction transaction = db.newReadWriteTransaction();
+                InstanceIdentifier<Node> connectionIid = HwvtepSouthboundMapper.createInstanceIdentifier(node.getNodeId());
+                Optional<Node> optionalNode = HwvtepSouthboundUtil.readNode(transaction, connectionIid);
+                LOG.trace("Node in Operational DataStore for user node {} is {}", node, optionalNode);
+                if(optionalNode.isPresent()) {
+                    connection = hcm.getConnectionInstance(optionalNode.get());
+                }
+            }
             if (connection != null) {
                 if (!result.containsKey(connection)) {
                     List<DataTreeModification<Node>> tempChanges= new ArrayList<DataTreeModification<Node>>();
index ee79c9444533d4c4de5ffac9bbb46622733df5b0..9be655c401e838b7bae555ed02ec97d82403221e 100644 (file)
@@ -24,6 +24,6 @@ public class HwvtepSouthboundConstants {
     public static final String UUID = "uuid";
     public static final ImmutableBiMap<Class<? extends EncapsulationTypeBase>,String> ENCAPS_TYPE_MAP
     = new ImmutableBiMap.Builder<Class<? extends EncapsulationTypeBase>,String>()
-        .put(EncapsulationTypeVxlanOverIpv4.class,"vxlan-over-ipv4")
+        .put(EncapsulationTypeVxlanOverIpv4.class,"vxlan_over_ipv4")
         .build();
 }
index a5a819c3d30001adde739a94b5f052dd1c5f4587..8127029b1a1475a630f0dadb4bb49ed773df2548 100644 (file)
@@ -24,8 +24,12 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfo;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeVxlanOverIpv4;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfoBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -47,12 +51,6 @@ public class HwvtepSouthboundMapper {
     private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundMapper.class);
     private static final String N_CONNECTIONS_STR = "n_connections";
 
-    private static NodeId createNodeId(HwvtepConnectionInstance client) {
-        NodeKey key = client.getInstanceIdentifier().firstKeyOf(Node.class, NodeKey.class);
-        return key.getNodeId();
-
-    }
-
     public static InstanceIdentifier<Node> createInstanceIdentifier(NodeId nodeId) {
         return InstanceIdentifier
                 .create(NetworkTopology.class)
@@ -150,14 +148,19 @@ public class HwvtepSouthboundMapper {
                         .child(Node.class, nodeKey).build();
     }
 
-    public static InstanceIdentifier<Node> createInstanceIdentifier(HwvtepConnectionInstance client,
+    public static InstanceIdentifier<LogicalSwitches> createInstanceIdentifier(HwvtepConnectionInstance client,
                     LogicalSwitch lSwitch) {
-        String nodeString = client.getNodeKey().getNodeId().getValue() + "/logicalswitch/" + lSwitch.getName();
-        NodeId nodeId = new NodeId(new Uri(nodeString));
-        NodeKey nodeKey = new NodeKey(nodeId);
-        return InstanceIdentifier.builder(NetworkTopology.class)
+        InstanceIdentifier<LogicalSwitches> iid = null;
+        iid = InstanceIdentifier.builder(NetworkTopology.class)
                         .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
-                        .child(Node.class, nodeKey).build();
+                        .child(Node.class, client.getNodeKey()).augmentation(HwvtepGlobalAugmentation.class)
+                        .child(LogicalSwitches.class, new LogicalSwitchesKey(new HwvtepNodeName(lSwitch.getName())))
+                        .build();
+        /* TODO: Will this work instead to make it simpler?
+        iid = client.getInstanceIdentifier().builder()
+            .child(LogicalSwitches.class, new LogicalSwitchesKey(new HwvtepNodeName(lSwitch.getName())))).build()
+         */
+        return iid;
     }
 
     public static Class<? extends EncapsulationTypeBase> createEncapsulationType(String type) {
index 29c0d528754a2980028aaba1927339fc22910cd2..fdef418d1f9fe0d92e371d26ac5ec0852e82d4ce 100644 (file)
@@ -102,24 +102,6 @@ public class HwvtepSouthboundUtil {
         return result;
     }
 
-/*    public static Optional<HwvtepGlobalAugmentation> getManagingNode(DataBroker db,
-                    HwvtepLogicalSwitchAttributes lNode) {
-        Preconditions.checkNotNull(lNode);
-        Optional<HwvtepGlobalAugmentation> result = null;
-
-        HwvtepGlobalRef ref = lNode.getLogicalSwitchManagedBy();
-        if (ref != null && ref.getValue() != null) {
-            result = getManagingNode(db, ref);
-        } else {
-            LOG.warn("Cannot find client for LogicalSwitch without a specified ManagedBy {}", lNode);
-            return Optional.absent();
-        }
-        if(!result.isPresent()) {
-            LOG.warn("Failed to find managing node for PhysicalSwitch {}",lNode);
-        }
-        return result;
-    }*/
-
     private static Optional<HwvtepGlobalAugmentation> getManagingNode(DataBroker db, HwvtepGlobalRef ref) {
         try {
             ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
index baf439e50904dcd2e860b221718dddea63505d86..bf5ca1bca0fdc2e978f2fe4cad99d4c117ce86ab 100644 (file)
@@ -26,7 +26,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hw
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.PhysicalSwitchAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
 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.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
@@ -89,15 +88,6 @@ public class HwvtepOperationalState {
         return Optional.absent();
     }
 
-    public Optional<LocatorSet> getPhysicalLocatorSet(InstanceIdentifier<?> iid) {
-        Optional<Node> nodeOptional = getGlobalNode(iid);
-        //TODO: physical locator set are under different logical switches
-        /*if (nodeOptional.isPresent()) {
-            return Optional.fromNullable(nodeOptional.get().getAugmentation(HwvtepGlobalAugmentation.class).getLogicalSwitches());
-        }*/
-        return Optional.absent();
-    }
-
     public Optional<TerminationPoint> getHwvtepTerminationPoint(InstanceIdentifier<?> iid) {
         if (iid != null) {
             Optional<Node> nodeOptional = getGlobalNode(iid);
index 69ef97eda156bd59a1aceadfed243c79e14c3732..9aebf8a95d99d61b2835bc7c1a8f3b07ccd5042a 100644 (file)
@@ -23,7 +23,6 @@ public class HwvtepOperationalCommandAggregator implements TransactionCommand {
 
     public HwvtepOperationalCommandAggregator(HwvtepConnectionInstance key,TableUpdates updates,
             DatabaseSchema dbSchema) {
-        //TODO: Add commands in here
         commands.add(new GlobalUpdateCommand(key, updates, dbSchema));
         commands.add(new PhysicalSwitchUpdateCommand(key, updates, dbSchema));
         commands.add(new PhysicalSwitchRemoveCommand(key, updates, dbSchema));
@@ -34,15 +33,12 @@ public class HwvtepOperationalCommandAggregator implements TransactionCommand {
         commands.add(new PhysicalPortRemoveCommand(key, updates, dbSchema));
         commands.add(new HwvtepTunnelUpdateCommand(key, updates, dbSchema));
         commands.add(new PhysicalLocatorUpdateCommand(key, updates, dbSchema));
-        commands.add(new PhysicalLocatorSetUpdateCommand(key, updates, dbSchema));
+        commands.add(new PhysicalLocatorRemoveCommand(key, updates, dbSchema));
         commands.add(new UcastMacsLocalUpdateCommand(key, updates, dbSchema));
-        commands.add(new UcastMacsLocalRemoveCommand(key, updates, dbSchema));
         commands.add(new UcastMacsRemoteUpdateCommand(key, updates, dbSchema));
-        commands.add(new UcastMacsRemoteRemoveCommand(key, updates, dbSchema));
         commands.add(new McastMacsLocalUpdateCommand(key, updates, dbSchema));
-        commands.add(new McastMacsLocalRemoveCommand(key, updates, dbSchema));
         commands.add(new McastMacsRemoteUpdateCommand(key, updates, dbSchema));
-        commands.add(new McastMacsRemoteRemoveCommand(key, updates, dbSchema));
+        commands.add(new MacEntriesRemoveCommand(key, updates, dbSchema));
     }
 
     @Override
index bf061ce7aff2bfb4c4aada4030ad2c3f25699173..e1a559371409345d93facab7b7f6600bcdecd9e3 100644 (file)
@@ -63,7 +63,6 @@ public class LogicalSwitchUpdateCommand extends AbstractTransactionCommand {
         final InstanceIdentifier<Node> connectionIId = getOvsdbConnectionInstance().getInstanceIdentifier();
         Optional<Node> connection = HwvtepSouthboundUtil.readNode(transaction, connectionIId);
         if (connection.isPresent()) {
-            LOG.debug("Connection {} is present",connection);
             Node connectionNode = buildConnectionNode(lSwitch);
             transaction.merge(LogicalDatastoreType.OPERATIONAL, connectionIId, connectionNode);
 //            TODO: Delete entries that are no longer needed
@@ -77,7 +76,7 @@ public class LogicalSwitchUpdateCommand extends AbstractTransactionCommand {
         HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
         List<LogicalSwitches> lSwitches = new ArrayList<>();
         LogicalSwitchesBuilder lsBuilder = new LogicalSwitchesBuilder();
-        lsBuilder.setHwvtepLogicalSwitchExternalId(new Uuid(lSwitch.getUuid().toString()));
+        lsBuilder.setLogicalSwitchUuid(new Uuid(lSwitch.getUuid().toString()));
         lsBuilder.setHwvtepNodeDescription(lSwitch.getDescription());
         HwvtepNodeName hwvtepName = new HwvtepNodeName(lSwitch.getName());
         lsBuilder.setHwvtepNodeName(hwvtepName);
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/MacEntriesRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/MacEntriesRemoveCommand.java
new file mode 100644 (file)
index 0000000..a2039a5
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
+
+import java.util.Collection;
+
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
+import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
+import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
+import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsLocal;
+import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsRemote;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacsKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MacEntriesRemoveCommand extends AbstractTransactionCommand {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MacEntriesRemoveCommand.class);
+
+    public MacEntriesRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
+            DatabaseSchema dbSchema) {
+        super(key, updates, dbSchema);
+    }
+
+    @Override
+    public void execute(ReadWriteTransaction transaction) {
+        removeUcastMacsLocal(transaction);
+        removeUcastMacsRemote(transaction);
+        removeMcastMacsLocal(transaction);
+        removeMcastMacsRemote(transaction);
+    }
+
+    private void removeUcastMacsLocal(ReadWriteTransaction transaction) {
+        Collection<UcastMacsLocal> deletedLUMRows = TyperUtils.extractRowsRemoved(UcastMacsLocal.class, getUpdates(),getDbSchema()).values();
+        if(deletedLUMRows!=null && !deletedLUMRows.isEmpty()){
+               for (UcastMacsLocal lum : deletedLUMRows){
+                InstanceIdentifier<LocalUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+                           .augmentation(HwvtepGlobalAugmentation.class)
+                           .child(LocalUcastMacs.class, new LocalUcastMacsKey(new MacAddress(lum.getMac())));
+                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+               }
+            }
+    }
+
+    private void removeUcastMacsRemote(ReadWriteTransaction transaction) {
+        Collection<UcastMacsRemote> deletedUMRRows = TyperUtils.extractRowsRemoved(UcastMacsRemote.class, getUpdates(),getDbSchema()).values();
+        if(deletedUMRRows!=null && !deletedUMRRows.isEmpty()){
+               for (UcastMacsRemote lum : deletedUMRRows){
+                InstanceIdentifier<RemoteUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+                           .augmentation(HwvtepGlobalAugmentation.class)
+                           .child(RemoteUcastMacs.class, new RemoteUcastMacsKey(new MacAddress(lum.getMac())));
+                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+               }
+            }
+    }
+
+    private void removeMcastMacsLocal(ReadWriteTransaction transaction) {
+        Collection<McastMacsLocal> deletedLMMRows = TyperUtils.extractRowsRemoved(McastMacsLocal.class, getUpdates(),getDbSchema()).values();
+        if(deletedLMMRows!=null && !deletedLMMRows.isEmpty()){
+           for (McastMacsLocal lmm : deletedLMMRows){
+            InstanceIdentifier<LocalMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+                       .augmentation(HwvtepGlobalAugmentation.class)
+                       .child(LocalMcastMacs.class, new LocalMcastMacsKey(new MacAddress(lmm.getMac())));
+            transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+           }
+        }
+    }
+
+    private void removeMcastMacsRemote(ReadWriteTransaction transaction) {
+        Collection<McastMacsRemote> deletedMMRRows = TyperUtils.extractRowsRemoved(McastMacsRemote.class, getUpdates(),getDbSchema()).values();
+        if(deletedMMRRows!=null && !deletedMMRRows.isEmpty()){
+               for (McastMacsRemote lum : deletedMMRRows){
+                InstanceIdentifier<RemoteMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+                           .augmentation(HwvtepGlobalAugmentation.class)
+                           .child(RemoteMcastMacs.class, new RemoteMcastMacsKey(new MacAddress(lum.getMac())));
+                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+               }
+            }
+    }
+
+}
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsLocalRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsLocalRemoveCommand.java
deleted file mode 100644 (file)
index a0973cb..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class McastMacsLocalRemoveCommand extends AbstractTransactionCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(McastMacsLocalRemoveCommand.class);
-
-    public McastMacsLocalRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
-            DatabaseSchema dbSchema) {
-        super(key, updates, dbSchema);
-    }
-
-    @Override
-    public void execute(ReadWriteTransaction transaction) {
-        Collection<McastMacsLocal> deletedLMMRows = TyperUtils.extractRowsRemoved(McastMacsLocal.class, getUpdates(),getDbSchema()).values();
-            if(deletedLMMRows!=null && !deletedLMMRows.isEmpty()){
-               for (McastMacsLocal lmm : deletedLMMRows){
-                InstanceIdentifier<LocalMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
-                           .augmentation(HwvtepGlobalAugmentation.class)
-                           .child(LocalMcastMacs.class, new LocalMcastMacsKey(new MacAddress(lmm.getMac())));
-                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
-               }
-            }
-    }
-
-}
index e9d86d856fd3558fbdd1a35e59b6a961b456a6ab..7f80222e4df0fd81514c0586dab2352221ddbafb 100644 (file)
@@ -9,10 +9,12 @@
 package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
 
 import com.google.common.base.Optional;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
@@ -25,13 +27,17 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
 import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepLogicalSwitchRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorSetRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSetBuilder;
 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.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
@@ -44,6 +50,7 @@ public class McastMacsLocalUpdateCommand extends AbstractTransactionCommand {
     private static final Logger LOG = LoggerFactory.getLogger(McastMacsLocalUpdateCommand.class);
     private Map<UUID, McastMacsLocal> updatedMMacsLocalRows;
     private Map<UUID, McastMacsLocal> oldMMacsLocalRows;
+    private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
     private Map<UUID, PhysicalLocator> updatedPLocRows;
     private Map<UUID, LogicalSwitch> updatedLSRows;
 
@@ -52,6 +59,7 @@ public class McastMacsLocalUpdateCommand extends AbstractTransactionCommand {
         super(key, updates, dbSchema);
         updatedMMacsLocalRows = TyperUtils.extractRowsUpdated(McastMacsLocal.class, getUpdates(),getDbSchema());
         oldMMacsLocalRows = TyperUtils.extractRowsOld(McastMacsLocal.class, getUpdates(),getDbSchema());
+        updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
         updatedPLocRows = TyperUtils.extractRowsUpdated(PhysicalLocator.class, getUpdates(),getDbSchema());
         updatedLSRows = TyperUtils.extractRowsUpdated(LogicalSwitch.class, getUpdates(),getDbSchema());
     }
@@ -77,28 +85,15 @@ public class McastMacsLocalUpdateCommand extends AbstractTransactionCommand {
     }
 
     private Node buildConnectionNode(McastMacsLocal mMacLocal) {
-      //Update node with McastMacsLocal reference
         NodeBuilder connectionNode = new NodeBuilder();
         connectionNode.setNodeId(getOvsdbConnectionInstance().getNodeId());
-        InstanceIdentifier<Node> nodeIid = getOvsdbConnectionInstance().getInstanceIdentifier();
         HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
         LocalMcastMacsBuilder mMacLocalBuilder= new LocalMcastMacsBuilder();
         mMacLocalBuilder.setMacEntryKey(new MacAddress(mMacLocal.getMac()));
-        if(mMacLocal.getLocatorSetColumn() != null
-                && mMacLocal.getLocatorSetColumn().getData() != null){
-            UUID plocUUID = mMacLocal.getLocatorSetColumn().getData();
-            if(updatedPLocRows.get(plocUUID) != null ){
-                InstanceIdentifier<TerminationPoint> plIid = HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, updatedPLocRows.get(plocUUID));
-                mMacLocalBuilder.setLocatorSetRef(new HwvtepPhysicalLocatorSetRef(plIid));
-            }
-        }
-        if(mMacLocal.getLogicalSwitchColumn() != null
-                && mMacLocal.getLogicalSwitchColumn().getData() != null){
-            UUID lsUUID = mMacLocal.getLogicalSwitchColumn().getData();
-            if (updatedLSRows.get(lsUUID) != null) {
-                mMacLocalBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(updatedLSRows.get(lsUUID).getName()));
-            }
-        }
+        setIpAddress(mMacLocalBuilder, mMacLocal);
+        setLocatorSet(mMacLocalBuilder, mMacLocal);
+        setLogicalSwitch(mMacLocalBuilder, mMacLocal);
+
         List<LocalMcastMacs> mMacLocalList = new ArrayList<>();
         mMacLocalList.add(mMacLocalBuilder.build());
         hgAugmentationBuilder.setLocalMcastMacs(mMacLocalList);
@@ -106,4 +101,42 @@ public class McastMacsLocalUpdateCommand extends AbstractTransactionCommand {
         return connectionNode.build();
     }
 
+    private void setLogicalSwitch(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+        LogicalSwitch lSwitch = null;
+        if (mMacLocal.getLogicalSwitchColumn() != null && mMacLocal.getLogicalSwitchColumn().getData() != null) {
+            UUID lsUUID = mMacLocal.getLogicalSwitchColumn().getData();
+            if (updatedLSRows.get(lsUUID) != null) {
+                lSwitch = updatedLSRows.get(lsUUID);
+                mMacLocalBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(lSwitch.getName()));
+            }
+        }
+    }
+
+    private void setIpAddress(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+        if(mMacLocal.getIpAddr() != null && !mMacLocal.getIpAddr().isEmpty()) {
+            mMacLocalBuilder.setIpaddr(new IpAddress(mMacLocal.getIpAddr().toCharArray()));
+        }
+    }
+
+    private void setLocatorSet(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+        if (mMacLocal.getLocatorSetColumn() != null && mMacLocal.getLocatorSetColumn().getData() != null) {
+            UUID pLocSetUUID = mMacLocal.getLocatorSetColumn().getData();
+            if (updatedPLocSetRows.get(pLocSetUUID) != null) {
+                PhysicalLocatorSet plSet = updatedPLocSetRows.get(pLocSetUUID);
+                if (plSet.getLocatorsColumn() != null && plSet.getLocatorsColumn().getData() != null
+                                && !plSet.getLocatorsColumn().getData().isEmpty()) {
+                    List<LocatorSet> plsList = new ArrayList<>();
+                    for (UUID pLocUUID : plSet.getLocatorsColumn().getData()) {
+                        PhysicalLocator pLoc = updatedPLocRows.get(pLocUUID);
+                        InstanceIdentifier<TerminationPoint> tpIid = HwvtepSouthboundMapper.createInstanceIdentifier(
+                                        getOvsdbConnectionInstance().getInstanceIdentifier(), pLoc);
+                        plsList.add(new LocatorSetBuilder()
+                                    .setLocatorRef(new HwvtepPhysicalLocatorRef(tpIid)).build());
+                    }
+                    mMacLocalBuilder.setLocatorSet(plsList);
+                }
+            }
+        }
+    }
+
 }
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsRemoteRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/McastMacsRemoteRemoveCommand.java
deleted file mode 100644 (file)
index 7d0495b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class McastMacsRemoteRemoveCommand extends AbstractTransactionCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(McastMacsRemoteRemoveCommand.class);
-
-    public McastMacsRemoteRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
-            DatabaseSchema dbSchema) {
-        super(key, updates, dbSchema);
-    }
-
-    @Override
-    public void execute(ReadWriteTransaction transaction) {
-        Collection<McastMacsRemote> deletedMMRRows = TyperUtils.extractRowsRemoved(McastMacsRemote.class, getUpdates(),getDbSchema()).values();
-        if(deletedMMRRows!=null && !deletedMMRRows.isEmpty()){
-               for (McastMacsRemote lum : deletedMMRRows){
-                InstanceIdentifier<RemoteMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
-                           .augmentation(HwvtepGlobalAugmentation.class)
-                           .child(RemoteMcastMacs.class, new RemoteMcastMacsKey(new MacAddress(lum.getMac())));
-                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
-               }
-            }
-    }
-
-}
index 13fce1a5a955461fe30a77c0dafa7f246d69ec45..013f95ae3948ba8d6866766f68644c225af4a459 100644 (file)
@@ -9,10 +9,12 @@
 package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
 
 import com.google.common.base.Optional;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
@@ -25,13 +27,17 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
 import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepLogicalSwitchRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorSetRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSetBuilder;
 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.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
@@ -44,6 +50,7 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactionCommand {
     private static final Logger LOG = LoggerFactory.getLogger(McastMacsRemoteUpdateCommand.class);
     private Map<UUID, McastMacsRemote> updatedMMacsRemoteRows;
     private Map<UUID, McastMacsRemote> oldMMacsRemoteRows;
+    private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
     private Map<UUID, PhysicalLocator> updatedPLocRows;
     private Map<UUID, LogicalSwitch> updatedLSRows;
 
@@ -52,6 +59,7 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactionCommand {
         super(key, updates, dbSchema);
         updatedMMacsRemoteRows = TyperUtils.extractRowsUpdated(McastMacsRemote.class, getUpdates(),getDbSchema());
         oldMMacsRemoteRows = TyperUtils.extractRowsOld(McastMacsRemote.class, getUpdates(),getDbSchema());
+        updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
         updatedPLocRows = TyperUtils.extractRowsUpdated(PhysicalLocator.class, getUpdates(),getDbSchema());
         updatedLSRows = TyperUtils.extractRowsUpdated(LogicalSwitch.class, getUpdates(),getDbSchema());
     }
@@ -77,28 +85,15 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactionCommand {
     }
 
     private Node buildConnectionNode(McastMacsRemote mMacRemote) {
-      //Update node with McastMacsRemote reference
         NodeBuilder connectionNode = new NodeBuilder();
         connectionNode.setNodeId(getOvsdbConnectionInstance().getNodeId());
-        InstanceIdentifier<Node> nodeIid = getOvsdbConnectionInstance().getInstanceIdentifier();
         HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
         RemoteMcastMacsBuilder mMacRemoteBuilder= new RemoteMcastMacsBuilder();
         mMacRemoteBuilder.setMacEntryKey(new MacAddress(mMacRemote.getMac()));
-        if(mMacRemote.getLocatorSetColumn() != null
-                && mMacRemote.getLocatorSetColumn().getData() != null){
-            UUID plocUUID = mMacRemote.getLocatorSetColumn().getData();
-            if(updatedPLocRows.get(plocUUID) != null ){
-                InstanceIdentifier<TerminationPoint> plIid = HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, updatedPLocRows.get(plocUUID));
-                mMacRemoteBuilder.setLocatorSetRef(new HwvtepPhysicalLocatorSetRef(plIid));
-            }
-        }
-        if(mMacRemote.getLogicalSwitchColumn() != null
-                && mMacRemote.getLogicalSwitchColumn().getData() != null){
-            UUID lsUUID = mMacRemote.getLogicalSwitchColumn().getData();
-            if (updatedLSRows.get(lsUUID) != null) {
-                mMacRemoteBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(updatedLSRows.get(lsUUID).getName()));
-            }
-        }
+        setIpAddress(mMacRemoteBuilder, mMacRemote);
+        setLocatorSet(mMacRemoteBuilder, mMacRemote);
+        setLogicalSwitch(mMacRemoteBuilder, mMacRemote);
+
         List<RemoteMcastMacs> mMacRemoteList = new ArrayList<>();
         mMacRemoteList.add(mMacRemoteBuilder.build());
         hgAugmentationBuilder.setRemoteMcastMacs(mMacRemoteList);
@@ -106,4 +101,42 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactionCommand {
         return connectionNode.build();
     }
 
+    private void setLogicalSwitch(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+        LogicalSwitch lSwitch = null;
+        if (mMacRemote.getLogicalSwitchColumn() != null && mMacRemote.getLogicalSwitchColumn().getData() != null) {
+            UUID lsUUID = mMacRemote.getLogicalSwitchColumn().getData();
+            if (updatedLSRows.get(lsUUID) != null) {
+                lSwitch = updatedLSRows.get(lsUUID);
+                mMacRemoteBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(lSwitch.getName()));
+            }
+        }
+    }
+
+    private void setIpAddress(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+        if(mMacRemote.getIpAddr() != null && !mMacRemote.getIpAddr().isEmpty()) {
+            mMacRemoteBuilder.setIpaddr(new IpAddress(mMacRemote.getIpAddr().toCharArray()));
+        }
+    }
+
+    private void setLocatorSet(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+        if (mMacRemote.getLocatorSetColumn() != null && mMacRemote.getLocatorSetColumn().getData() != null) {
+            UUID pLocSetUUID = mMacRemote.getLocatorSetColumn().getData();
+            if (updatedPLocSetRows.get(pLocSetUUID) != null) {
+                PhysicalLocatorSet plSet = updatedPLocSetRows.get(pLocSetUUID);
+                if (plSet.getLocatorsColumn() != null && plSet.getLocatorsColumn().getData() != null
+                                && !plSet.getLocatorsColumn().getData().isEmpty()) {
+                    List<LocatorSet> plsList = new ArrayList<>();
+                    for (UUID pLocUUID : plSet.getLocatorsColumn().getData()) {
+                        PhysicalLocator pLoc = updatedPLocRows.get(pLocUUID);
+                        InstanceIdentifier<TerminationPoint> tpIid = HwvtepSouthboundMapper.createInstanceIdentifier(
+                                        getOvsdbConnectionInstance().getInstanceIdentifier(), pLoc);
+                        plsList.add(new LocatorSetBuilder()
+                                    .setLocatorRef(new HwvtepPhysicalLocatorRef(tpIid)).build());
+                    }
+                    mMacRemoteBuilder.setLocatorSet(plsList);
+                }
+            }
+        }
+    }
+
 }
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorRemoveCommand.java
new file mode 100644 (file)
index 0000000..b85632b
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundMapper;
+import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalPort;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalSwitch;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
+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.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PhysicalLocatorRemoveCommand extends AbstractTransactionCommand {
+
+    private static final Logger LOG = LoggerFactory.getLogger(PhysicalLocatorRemoveCommand.class);
+
+    public PhysicalLocatorRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
+            DatabaseSchema dbSchema) {
+        super(key, updates, dbSchema);
+    }
+
+    @Override
+    public void execute(ReadWriteTransaction transaction) {
+        Collection<PhysicalLocator> deletedPLRows = TyperUtils.extractRowsRemoved(PhysicalLocator.class, getUpdates(),getDbSchema()).values();
+        if(deletedPLRows != null && !deletedPLRows.isEmpty()) {
+            for (PhysicalLocator pLoc : deletedPLRows) {
+                final InstanceIdentifier<Node> connectionIId = getOvsdbConnectionInstance().getInstanceIdentifier();
+                final InstanceIdentifier<TerminationPoint> nodePath = HwvtepSouthboundMapper
+                        .createInstanceIdentifier(connectionIId, pLoc);
+                transaction.delete(LogicalDatastoreType.OPERATIONAL, nodePath);
+                //TODO: Check if any cleanup is required
+            }
+        }
+    }
+
+}
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorSetUpdateCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/PhysicalLocatorSetUpdateCommand.java
deleted file mode 100644 (file)
index 9be6116..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
-
-import java.util.Map;
-
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PhysicalLocatorSetUpdateCommand extends AbstractTransactionCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PhysicalLocatorSetUpdateCommand.class);
-    private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
-    private Map<UUID, PhysicalLocatorSet> oldPLocSetRows;
-
-    public PhysicalLocatorSetUpdateCommand(HwvtepConnectionInstance key, TableUpdates updates,
-            DatabaseSchema dbSchema) {
-        super(key, updates, dbSchema);
-        updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
-        oldPLocSetRows = TyperUtils.extractRowsOld(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
-    }
-
-    @Override
-    public void execute(ReadWriteTransaction transaction) {
-        // TODO Auto-generated method stub
-    }
-
-}
index a6364a815ae3048fdd35f1818f4714f7319734fc..79ba1f2560f791a75b3d903695b4117bb366a5fe 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
@@ -54,7 +55,6 @@ public class PhysicalLocatorUpdateCommand extends AbstractTransactionCommand {
                 || updatedPLocRows.isEmpty()) {
             return;
         }
-        LOG.trace("PhysicalLocatorTable updated: {}", updatedPLocRows);
         Optional<Node> node = HwvtepSouthboundUtil.readNode(transaction, connectionIId);
         if (node.isPresent()) {
             updateTerminationPoints(transaction, node.get());
@@ -74,6 +74,7 @@ public class PhysicalLocatorUpdateCommand extends AbstractTransactionCommand {
                         HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, pLoc);
                 HwvtepPhysicalLocatorAugmentationBuilder tpAugmentationBuilder =
                         new HwvtepPhysicalLocatorAugmentationBuilder();
+                tpAugmentationBuilder.setPhysicalLocatorUuid(new Uuid(pLoc.getUuid().toString()));
                 setEncapsType(tpAugmentationBuilder, pLoc);
                 setDstIp(tpAugmentationBuilder, pLoc);
                 tpBuilder.addAugmentation(HwvtepPhysicalLocatorAugmentation.class, tpAugmentationBuilder.build());
index d4d6c5cd62631678a393f05d116441aa405bf086..0745eb9baa320b77c33c153c939ed445b4897d6d 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalSwitch;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalRef;
@@ -96,6 +97,7 @@ public class PhysicalSwitchUpdateCommand extends AbstractTransactionCommand {
         NodeId psNodeId = getNodeId(pSwitch);
         psNodeBuilder.setNodeId(psNodeId);
         PhysicalSwitchAugmentationBuilder psAugmentationBuilder = new PhysicalSwitchAugmentationBuilder();
+        psAugmentationBuilder.setPhysicalSwitchUuid(new Uuid(pSwitch.getUuid().toString()));
         setManagedBy(psAugmentationBuilder, pSwitch);
         setPhysicalSwitchId(psAugmentationBuilder, pSwitch);
         setManagementIps(psAugmentationBuilder, pSwitch);
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsLocalRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsLocalRemoveCommand.java
deleted file mode 100644 (file)
index 601665e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsLocal;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UcastMacsLocalRemoveCommand extends AbstractTransactionCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(UcastMacsLocalRemoveCommand.class);
-
-    public UcastMacsLocalRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
-            DatabaseSchema dbSchema) {
-        super(key, updates, dbSchema);
-    }
-
-    @Override
-    public void execute(ReadWriteTransaction transaction) {
-        Collection<UcastMacsLocal> deletedLUMRows = TyperUtils.extractRowsRemoved(UcastMacsLocal.class, getUpdates(),getDbSchema()).values();
-        if(deletedLUMRows!=null && !deletedLUMRows.isEmpty()){
-               for (UcastMacsLocal lum : deletedLUMRows){
-                InstanceIdentifier<LocalUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
-                           .augmentation(HwvtepGlobalAugmentation.class)
-                           .child(LocalUcastMacs.class, new LocalUcastMacsKey(new MacAddress(lum.getMac())));
-                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
-               }
-            }
-    }
-
-}
diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsRemoteRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transactions/md/UcastMacsRemoteRemoveCommand.java
deleted file mode 100644 (file)
index abe43b3..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsRemote;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UcastMacsRemoteRemoveCommand extends AbstractTransactionCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(UcastMacsRemoteRemoveCommand.class);
-
-    public UcastMacsRemoteRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
-            DatabaseSchema dbSchema) {
-        super(key, updates, dbSchema);
-    }
-
-    @Override
-    public void execute(ReadWriteTransaction transaction) {
-        Collection<UcastMacsRemote> deletedUMRRows = TyperUtils.extractRowsRemoved(UcastMacsRemote.class, getUpdates(),getDbSchema()).values();
-        if(deletedUMRRows!=null && !deletedUMRRows.isEmpty()){
-               for (UcastMacsRemote lum : deletedUMRRows){
-                InstanceIdentifier<RemoteUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
-                           .augmentation(HwvtepGlobalAugmentation.class)
-                           .child(RemoteUcastMacs.class, new RemoteUcastMacsKey(new MacAddress(lum.getMac())));
-                transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
-               }
-            }
-    }
-
-}