import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
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.bridge.attributes.ControllerEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryKey;
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;
return Optional.absent();
}
+ public Optional<ControllerEntry> getControllerEntry(InstanceIdentifier<?> iid) {
+ Optional<OvsdbBridgeAugmentation> ovsdbBridgeOptional = getOvsdbBridgeAugmentation(iid);
+ if (ovsdbBridgeOptional.isPresent()) {
+ ControllerEntryKey key = iid.firstKeyOf(ControllerEntry.class, ControllerEntryKey.class);
+ if (key != null) {
+ for (ControllerEntry entry: ovsdbBridgeOptional.get().getControllerEntry()) {
+ if (entry.getKey().equals(key)) {
+ return Optional.of(entry);
+ }
+ }
+ }
+ }
+ return Optional.absent();
+ }
+
}
import java.util.List;
import org.opendaylight.ovsdb.lib.notation.Mutator;
-import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.operations.Insert;
import org.opendaylight.ovsdb.lib.operations.Operation;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
-import org.opendaylight.ovsdb.southbound.SouthboundMapper;
import com.google.common.collect.Sets;
public void execute(TransactionBuilder transaction) {
List<Operation> operations = transaction.getOperations();
Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
- for (int count = 0;count < operations.size();count++) {
- Operation operation = operations.get(count);
- if (operation instanceof Insert && operation.getTableSchema().equals(bridge.getSchema())) {
- Insert insert = (Insert)operation;
- String uuidString = insert.getUuidName() != null
- ? insert.getUuidName() : SouthboundMapper.getRandomUUID();
- insert.setUuidName(uuidString);
-
- // OpenVSwitchPart
- UUID uuid = new UUID(uuidString);
- OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class);
- ovs.setBridges(Sets.newHashSet(uuid));
- transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(),
- Mutator.INSERT,
- ovs.getBridgesColumn().getData()));
- }
+ List<Insert> inserts = TransactUtils.extractInsert(transaction, bridge.getSchema());
+ for (Insert insert:inserts) {
+ OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class);
+ ovs.setBridges(Sets.newHashSet(TransactUtils.extractNamedUuid(insert)));
+ transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(),
+ Mutator.INSERT,
+ ovs.getBridgesColumn().getData()));
}
}
}
*/
package org.opendaylight.ovsdb.southbound.ovsdb.transact;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.operations.Insert;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
+import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
+import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
}
return result;
}
+
+ public static List<Insert> extractInsert(TransactionBuilder transaction, GenericTableSchema schema) {
+ List<Operation> operations = transaction.getOperations();
+ List<Insert> inserts = new ArrayList<Insert>();
+ for (int count = 0;count < operations.size();count++) {
+ Operation operation = operations.get(count);
+ if (operation instanceof Insert && operation.getTableSchema().equals(schema)) {
+ Insert insert = (Insert)operation;
+ inserts.add(insert);
+ }
+ }
+ return inserts;
+ }
+
+ /**
+ * Extract the NamedUuid from the Insert.
+ * If the Insert does not have a NamedUuid set, a random one will be
+ * generated, set, and returned.
+ *
+ * @param insert - Insert from which to extract the NamedUuid
+ * @return UUID - NamedUUID of the Insert
+ */
+ public static UUID extractNamedUuid(Insert insert) {
+ String uuidString = insert.getUuidName() != null
+ ? insert.getUuidName() : SouthboundMapper.getRandomUUID();
+ insert.setUuidName(uuidString);
+ UUID uuid = new UUID(uuidString);
+ return uuid;
+ }
}