port/interface-external-ids refactoring 58/17958/3
authorRyan Goulding <ryandgoulding@gmail.com>
Wed, 8 Apr 2015 18:02:51 +0000 (14:02 -0400)
committerRyan Goulding <ryandgoulding@gmail.com>
Thu, 9 Apr 2015 01:18:22 +0000 (21:18 -0400)
This change aggregates separate, appropriately named, list to store port
and interface related external_ids.  ovsdb.yang model changes were made to
rename the list and eliminate the more generic ovsdb-external-ids-attributes
grouping.  Java files were modified to compensate for the model changes.

Change-Id: Ieaa0ac82c8e0efe930cd837dab26fff4b0a572fe
Signed-off-by: Ryan Goulding <ryandgoulding@gmail.com>
southbound/southbound-api/src/main/yang/ovsdb.yang
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/TerminationPointCreateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortUpdateCommand.java

index 301f7b92dc1a39deb507e8ca0af30218ecc25e4d..19d8508b20c0e4df23bdb6d135e8236a08078408 100755 (executable)
@@ -378,11 +378,9 @@ module ovsdb {
                 }
             }
         }
-    }
 
-    grouping ovsdb-external-ids-attributes {
-        list external-ids {
-            description "Port/Interface external id";
+        list port-external-ids {
+            description "Port external ids";
             key "external-id-key";
             leaf external-id-key {
                 description "external-id name/key";
@@ -394,7 +392,22 @@ module ovsdb {
                 type string;
                 mandatory true;
             }
-         }
+        }
+
+        list interface-external-ids {
+            description "Interface external ids";
+            key "external-id-key";
+            leaf external-id-key {
+                description "external-id name/key";
+                type string;
+                mandatory true;
+            }
+            leaf external-id-value {
+                description "external-id value";
+                type string;
+                mandatory true;
+            }
+        }
     }
 
     grouping ovsdb-other-config-attributes {
@@ -422,7 +435,6 @@ module ovsdb {
         description "Augment topology node for an ovsdb node";
         ext:augment-identifier "ovsdb-node-augmentation";
         uses ovsdb-node-attributes;
-        uses ovsdb-external-ids-attributes;
         uses ovsdb-other-config-attributes;
     }
 
@@ -430,6 +442,5 @@ module ovsdb {
         description "Augment topology node termination-point for an ovsdb port/interface";
         ext:augment-identifier "ovsdb-termination-point-augmentation";
         uses ovsdb-port-interface-attributes;
-        uses ovsdb-external-ids-attributes;
     }
 }
index 0b27a738d0fa4c944980acb13d8d6c32448fe1af..38b9c71129ce1f7000c07bd2f2ce933ba54470df 100644 (file)
@@ -27,8 +27,9 @@ import org.opendaylight.ovsdb.schema.openvswitch.Port;
 import org.opendaylight.ovsdb.southbound.SouthboundMapper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 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.ovsdb.external.ids.attributes.ExternalIds;
+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.PortExternalIds;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Trunks;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -86,10 +87,11 @@ public class TerminationPointCreateCommand implements TransactCommand {
                     }
                 }
 
-                List<ExternalIds> externalIds = terminationPoint.getExternalIds();
-                if (externalIds != null && !externalIds.isEmpty()) {
+                List<InterfaceExternalIds> interfaceExternalIds =
+                        terminationPoint.getInterfaceExternalIds();
+                if (interfaceExternalIds != null && !interfaceExternalIds.isEmpty()) {
                     HashMap<String, String> externalIdsMap = new HashMap<String, String>();
-                    for (ExternalIds externalId: externalIds) {
+                    for (InterfaceExternalIds externalId: interfaceExternalIds) {
                         externalIdsMap.put(externalId.getExternalIdKey(), externalId.getExternalIdValue());
                     }
                     try {
@@ -120,6 +122,19 @@ public class TerminationPointCreateCommand implements TransactCommand {
                     }
                     port.setTrunks(portTrunks);
                 }
+
+                List<PortExternalIds> portExternalIds = terminationPoint.getPortExternalIds();
+                if (portExternalIds != null && !portExternalIds.isEmpty()) {
+                    HashMap<String, String> externalIdsMap = new HashMap<String, String>();
+                    for (PortExternalIds externalId: portExternalIds) {
+                        externalIdsMap.put(externalId.getExternalIdKey(), externalId.getExternalIdValue());
+                    }
+                    try {
+                        port.setExternalIds(ImmutableMap.copyOf(externalIdsMap));
+                    } catch (NullPointerException e) {
+                        LOG.warn("Incomplete OVSDB port external_ids");
+                    }
+                }
                 transaction.add(op.insert(port).withId(portUuid));
 
                 //Configure bridge with the above port details
index 5eb52cadc66c49c74328308f07698fca9535d3b6..8bbec331136980ce6b495ec9e8f06dd039d99df2 100644 (file)
@@ -35,11 +35,13 @@ 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.OvsdbBridgeName;
 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.external.ids.attributes.ExternalIds;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.external.ids.attributes.ExternalIdsBuilder;
+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.InterfaceExternalIdsBuilder;
 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.PortExternalIdsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Trunks;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.TrunksBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -122,6 +124,23 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
                                 }
                             }
                             ovsdbTerminationPointBuilder.setTrunks(modelTrunks);
+
+                            Map<String, String> portExternalIds = port.getExternalIdsColumn().getData();
+                            if (portExternalIds != null && !portExternalIds.isEmpty()) {
+                                Set<String> externalIdKeys = portExternalIds.keySet();
+                                List<PortExternalIds> externalIdsList = new ArrayList<PortExternalIds>();
+                                String externalIdValue;
+                                for (String externalIdKey : externalIdKeys) {
+                                    externalIdValue = portExternalIds.get(externalIdKey);
+                                    if (externalIdKey != null && externalIdValue != null) {
+                                        externalIdsList.add(new PortExternalIdsBuilder()
+                                                .setExternalIdKey(externalIdKey)
+                                                .setExternalIdValue(externalIdValue).build());
+                                    }
+                                }
+                                ovsdbTerminationPointBuilder.setPortExternalIds(externalIdsList);
+                            }
+
                             Column<GenericTableSchema, Set<UUID>> iface = port.getInterfacesColumn();
                             Set<UUID> ifUuid = iface.getData();
                             Collection<Interface> ifUpdateRows = TyperUtils.extractRowsUpdated(
@@ -161,20 +180,22 @@ public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
                                             }
                                         }
 
-                                        Map<String, String> externalIds = interfIter.getExternalIdsColumn().getData();
-                                        if (externalIds != null && !externalIds.isEmpty()) {
-                                            Set<String> externalIdKeys = externalIds.keySet();
-                                            ArrayList<ExternalIds> externalIdsList = new ArrayList<ExternalIds>();
+                                        Map<String, String> interfaceExternalIds =
+                                                interfIter.getExternalIdsColumn().getData();
+                                        if (interfaceExternalIds != null && !interfaceExternalIds.isEmpty()) {
+                                            Set<String> externalIdKeys = interfaceExternalIds.keySet();
+                                            List<InterfaceExternalIds> externalIdsList =
+                                                    new ArrayList<InterfaceExternalIds>();
                                             String externalIdValue;
                                             for (String externalIdKey : externalIdKeys) {
-                                                externalIdValue = externalIds.get(externalIdKey);
+                                                externalIdValue = interfaceExternalIds.get(externalIdKey);
                                                 if (externalIdKey != null && externalIdValue != null) {
-                                                    externalIdsList.add(new ExternalIdsBuilder()
+                                                    externalIdsList.add(new InterfaceExternalIdsBuilder()
                                                             .setExternalIdKey(externalIdKey)
                                                             .setExternalIdValue(externalIdValue).build());
                                                 }
                                             }
-                                            ovsdbTerminationPointBuilder.setExternalIds(externalIdsList);
+                                            ovsdbTerminationPointBuilder.setInterfaceExternalIds(externalIdsList);
                                         }
 
                                         Map<String, String> optionsMap = interfIter.getOptionsColumn().getData();