MdsalUtils#getOtherConfig() & MdsalUtils#getExternalIds(). 04/19904/7
authorAlexis de Talhouët <adetalhouet@inocybe.com>
Fri, 8 May 2015 15:15:27 +0000 (11:15 -0400)
committerAlexis de Talhouët <adetalhouet@inocybe.com>
Fri, 8 May 2015 17:22:38 +0000 (17:22 +0000)
Patch Set 1: useless formatting
Patch Set 2: remove trailing space
Patch Set 3&4: MdsalUtils#getOtherConfig()
Patch Set 5: remove trailing space
Patch Set 6: MdsalUtils#getExternalIds()

Change-Id: Ie5db49990f413f12052cdb44f82a0b4a0b3ea51b
Signed-off-by: Alexis de Talhouët <adetalhouet@inocybe.com>
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/MdsalUtils.java

index 721eee403c20cf0e262eb7abef01d8ace80cb32c..c9f8093ed147813a7384ea6285d5ba8903b93dc1 100644 (file)
@@ -7,10 +7,6 @@
  */
 package org.opendaylight.ovsdb.openstack.netvirt;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.util.concurrent.CheckedFuture;
-
 import java.math.BigInteger;
 import java.security.InvalidParameterException;
 import java.util.ArrayList;
@@ -37,16 +33,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re
 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.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeExternalIds;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntryBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchExternalIds;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchOtherConfigs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIds;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.PortExternalIds;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.PortOtherConfigs;
 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;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
@@ -59,6 +60,10 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableBiMap;
+import com.google.common.util.concurrent.CheckedFuture;
+
 /**
  * Utility class to wrap mdsal transactions.
  *
@@ -348,6 +353,10 @@ public class MdsalUtils {
         return null;
     }
 
+    public static OvsdbNodeAugmentation extractOvsdbNodeAugmentation(Node node) {
+        return node.getAugmentation(OvsdbNodeAugmentation.class);
+    }
+
     /**
      * Method read ports from bridge node. Method will check if the provided node
      * has the ports details, if not, it will read from Operational data store.
@@ -470,11 +479,65 @@ public class MdsalUtils {
     }
 
     public static String getExternalId(Node node, OvsdbTables table, String key) {
-        return null;
+        switch (table) {
+        case BRIDGE:
+            for (BridgeExternalIds bridgeExternaIds :extractBridgeAugmentation(node).getBridgeExternalIds()) {
+                if (bridgeExternaIds.getBridgeExternalIdKey().equals(key)) {
+                    return bridgeExternaIds.getBridgeExternalIdValue();
+                }
+            }
+        case CONTROLLER:
+            LOG.debug("There is no external_id for OvsdbTables: ", table);
+            return null;
+        case OPENVSWITCH:
+            for ( OpenvswitchExternalIds openvswitchExternalIds :extractOvsdbNodeAugmentation(node).getOpenvswitchExternalIds()) {
+                if (openvswitchExternalIds.getExternalIdKey().equals(key)) {
+                    return openvswitchExternalIds.getExternalIdValue();
+                }
+            }
+        case PORT:
+            for (OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation :extractTerminationPointAugmentations(node)) {
+                for (PortExternalIds portExternalIds :ovsdbTerminationPointAugmentation.getPortExternalIds()) {
+                    if (portExternalIds.getExternalIdKey().equals(key)) {
+                        return portExternalIds.getExternalIdValue();
+                    }
+                }
+            }
+        default:
+            LOG.debug("Couldn't find the specified OvsdbTables: ", table);
+            return null;
+        }
     }
 
     public static String getOtherConfig(Node node, OvsdbTables table, String key) {
-        return null;
+        switch (table) {
+            case BRIDGE:
+                for (BridgeOtherConfigs bridgeOtherConfigs :extractBridgeAugmentation(node).getBridgeOtherConfigs()) {
+                    if (bridgeOtherConfigs.getBridgeOtherConfigKey().equals(key)) {
+                        return bridgeOtherConfigs.getBridgeOtherConfigValue();
+                    }
+                }
+            case CONTROLLER:
+                LOG.debug("There is no other_config for OvsdbTables: ", table);
+                return null;
+            case OPENVSWITCH:
+                for ( OpenvswitchOtherConfigs openvswitchOtherConfigs :extractOvsdbNodeAugmentation(node).getOpenvswitchOtherConfigs()) {
+                    if (openvswitchOtherConfigs.getOtherConfigKey().equals(key)) {
+                        return openvswitchOtherConfigs.getOtherConfigValue();
+                    }
+                }
+            case PORT:
+                for (OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation :extractTerminationPointAugmentations(node)) {
+                    for (PortOtherConfigs portOtherConfigs :ovsdbTerminationPointAugmentation.getPortOtherConfigs()) {
+                        if (portOtherConfigs.getOtherConfigKey().equals(key)) {
+                            return portOtherConfigs.getOtherConfigValue();
+                        }
+                    }
+                }
+            default:
+                LOG.debug("Couldn't find the specified OvsdbTables: ", table);
+                return null;
+        }
     }
 
     public static boolean addVlanToTp(long vlan) {