BUG 7310: Add configurable option to skip columns
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / SouthboundConstants.java
index 49e0d917e2d07a205206d6d2d129f6c593ae814f..7e4db86d40b7a9700e62e7f3b6a9264520df6a83 100755 (executable)
@@ -8,7 +8,15 @@
 package org.opendaylight.ovsdb.southbound;
 
 import com.google.common.collect.ImmutableBiMap;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import com.google.common.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeNetdev;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
@@ -50,6 +58,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
 
 public class SouthboundConstants {
+
+    private SouthboundConstants() { }
+
     public static final String OPEN_V_SWITCH = "Open_vSwitch";
     public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1"));
     public static final String OVSDB_URI_PREFIX = "ovsdb";
@@ -126,9 +137,37 @@ public class SouthboundConstants {
             .put(DatapathTypeSystem.class,"system")
             .put(DatapathTypeNetdev.class,"netdev")
             .build();
+
     public static final String IID_EXTERNAL_ID_KEY = "opendaylight-iid";
+    public static final String QOS_ID_EXTERNAL_ID_KEY = "opendaylight-qos-id";
+    public static final String QUEUE_ID_EXTERNAL_ID_KEY = "opendaylight-queue-id";
     public static final String AUTOATTACH_ID_EXTERNAL_ID_KEY = "opendaylight-autoattach-id";
 
+    static final ImmutableCollection<String> SKIP_OVSDB_TABLE = new ImmutableSet.Builder<String>()
+            .add("Flow_Table")
+            .add("Mirror")
+            .add("NetFlow")
+            .add("sFlow")
+            .add("IPFIX")
+            .add("Flow_Sample_Collector_Set")
+            .build();
+
+    //Note: _version is an internal column of ovsdb schema, that gets updated
+    //with every change in the row of the table.
+    // The "Manager" entry needs to be a modifiable list, SouthboundProvider::setSkipManagerStatus() modifies it
+    static final ImmutableMap<String,List<String>> SKIP_COLUMN_FROM_TABLE
+            = new ImmutableMap.Builder<String,List<String>>()
+            .put("Open_vSwitch", Arrays.asList("statistics","_version"))
+            .put("Port", Arrays.asList("statistics","_version"))
+            .put("Manager", new ArrayList<>(Collections.singletonList("_version")))
+            .put("SSL", Collections.singletonList("_version"))
+            .put("QoS", Collections.singletonList("_version"))
+            .put("Queue", Collections.singletonList("_version"))
+            .put("Bridge", Collections.singletonList("_version"))
+            .put("Interface", Arrays.asList("statistics","_version"))
+            .put("Controller", Arrays.asList("status","_version"))
+            .build();
+
     public enum VlanModes {
         ACCESS("access"),
         NATIVE_TAGGED("native-tagged"),