static String testBridgeName = "br_test";
static UUID testBridgeUuid = null;
- private void createTypedBridge() throws IOException, InterruptedException, ExecutionException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
+ private void createTypedBridge(DatabaseSchema dbSchema) throws IOException, InterruptedException, ExecutionException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Bridge bridge = client.createTypedRowWrapper(Bridge.class);
bridge.setName(testBridgeName);
bridge.setStatus(ImmutableMap.of("key","value"));
int insertOperationIndex = 0;
- TransactionBuilder transactionBuilder = client.transactBuilder()
+ TransactionBuilder transactionBuilder = client.transactBuilder(dbSchema)
.add(op.insert(bridge.getSchema())
.withId(testBridgeName)
.value(bridge.getNameColumn()))
" with Tables : " + dbSchema.getTables());
// A simple Typed Test to make sure a Typed wrapper bundle can coexist in an OSGi environment
- createTypedBridge();
+ createTypedBridge(dbSchema);
}
if (isSchemaSupported(HARDWARE_VTEP)) {
public void tearDown() throws InterruptedException, ExecutionException {
Bridge bridge = client.getTypedRowWrapper(Bridge.class, null);
OpenVSwitch openVSwitch = client.getTypedRowWrapper(OpenVSwitch.class, null);
-
- ListenableFuture<List<OperationResult>> results = client.transactBuilder()
+ DatabaseSchema dbSchema = client.getSchema(OPEN_VSWITCH_SCHEMA).get();
+ ListenableFuture<List<OperationResult>> results = client.transactBuilder(dbSchema)
.add(op.delete(bridge.getSchema())
.where(bridge.getNameColumn().getSchema().opEqual(testBridgeName))
.build())
* Allows for a mini DSL way of collecting the transactions to be executed against the ovsdb instance.
* @return TransactionBuilder
*/
- TransactionBuilder transactBuilder();
+ TransactionBuilder transactBuilder(DatabaseSchema dbSchema);
/**
* Execute the list of operations in a single Transactions. Similar to the transactBuilder() method
* cancel on the Future would cause OVSDB cancel operation to be fired against
* the device.
*/
- ListenableFuture<List<OperationResult>> transact(List<Operation> operations);
+ ListenableFuture<List<OperationResult>> transact(DatabaseSchema dbSchema, List<Operation> operations);
/**
*/
package org.opendaylight.ovsdb.lib.impl;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import io.netty.channel.Channel;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+
import org.opendaylight.ovsdb.lib.EchoServiceCallbackFilters;
import org.opendaylight.ovsdb.lib.LockAquisitionCallback;
import org.opendaylight.ovsdb.lib.LockStolenCallback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.UUID;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
public class OvsdbClientImpl implements OvsdbClient {
}
@Override
- public ListenableFuture<List<OperationResult>> transact(List<Operation> operations) {
+ public ListenableFuture<List<OperationResult>> transact(DatabaseSchema dbSchema, List<Operation> operations) {
//todo, we may not need transactionbuilder if we can have JSON objects
- TransactBuilder builder = new TransactBuilder();
+ TransactBuilder builder = new TransactBuilder(dbSchema);
for (Operation o : operations) {
builder.addOperation(o);
}
}
@Override
- public TransactionBuilder transactBuilder() {
- return new TransactionBuilder(this);
+ public TransactionBuilder transactBuilder(DatabaseSchema dbSchema) {
+ return new TransactionBuilder(this, dbSchema);
}
*/
package org.opendaylight.ovsdb.lib.message;
-import com.google.common.collect.Lists;
+import java.util.List;
import org.opendaylight.ovsdb.lib.jsonrpc.Params;
import org.opendaylight.ovsdb.lib.operations.Operation;
-import java.util.List;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+
+import com.google.common.collect.Lists;
public class TransactBuilder implements Params {
List<Operation> requests = Lists.newArrayList();
+ DatabaseSchema dbSchema;
+ public TransactBuilder (DatabaseSchema dbSchema) {
+ this.dbSchema = dbSchema;
+ }
public List<Operation> getRequests() {
return requests;
@Override
public List<Object> params() {
- List<Object> lists = Lists.newArrayList((Object)"Open_vSwitch");
+ List<Object> lists = Lists.newArrayList((Object)dbSchema.getName());
lists.addAll(requests);
return lists;
}
OvsdbClientImpl ovs;
ArrayList<Operation> operations = Lists.newArrayList();
- public TransactionBuilder(OvsdbClientImpl ovs) {
+ public TransactionBuilder(OvsdbClientImpl ovs, DatabaseSchema schema) {
this.ovs = ovs;
- }
-
- public TransactionBuilder(DatabaseSchema eDatabaseSchema) {
- this.eDatabaseSchema = eDatabaseSchema;
+ eDatabaseSchema = schema;
}
public ArrayList<Operation> getOperations() {
}
public ListenableFuture<List<OperationResult>> execute() {
- return ovs.transact(operations);
+ return ovs.transact(eDatabaseSchema, operations);
}
}
import org.opendaylight.ovsdb.lib.error.ParsingException;
import org.opendaylight.ovsdb.lib.notation.Version;
-import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return this.getTables().contains(table);
}
- public TransactionBuilder beginTransaction() {
- return new TransactionBuilder(this);
- }
-
public <E extends TableSchema<E>> E table(String tableName, Class<E> clazz) {
TableSchema<E> table = tables.get(tableName);
List<MonitorRequest<GenericTableSchema>> monitorRequests = Lists.newArrayList();
ColumnSchema<GenericTableSchema, UUID> _uuid = ovsTable.column("_uuid", UUID.class);
- List<OperationResult> results = ovs.transactBuilder()
+ List<OperationResult> results = ovs.transactBuilder(dbSchema)
.add(op.select(ovsTable)
.column(_uuid))
.execute()
String namedUuid = "br_test";
int insertOperationIndex = 0;
UUID parentTable = selectOpenVSwitchTableUuid();
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(dbSchema)
/*
* Make sure that the position of insert operation matches the insertOperationIndex.
* This will be used later when the Results are processed.
* Adding a separate Assert operation in a transaction. Lets not mix this with other
* valid transactions as above.
*/
- ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder(dbSchema)
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
* Adding a separate Abort operation in a transaction. Lets not mix this with other
* valid transactions as above.
*/
- ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder(dbSchema)
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
ColumnSchema<GenericTableSchema, UUID> _uuid = ovsTable.column("_uuid", UUID.class);
UUID parentTable = selectOpenVSwitchTableUuid();
- ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder(dbSchema)
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
String namedUuid = "br_test";
int insertOperationIndex = 0;
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(dbSchema)
.add(op.insert(rBridge)
.withId(namedUuid))
.add(op.mutate(ovsTable)
GenericTableSchema ovsTable = dbSchema.table("Open_vSwitch", GenericTableSchema.class);
ColumnSchema<GenericTableSchema, Set<UUID>> bridges = ovsTable.multiValuedColumn("bridges", UUID.class);
- ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder(dbSchema)
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
logger.debug("insertRow Connection : {} Table : {} ParentTable : {} Parent Column: {} Parent UUID : {} Row : {}",
client.getConnectionInfo(), tableName, parentColumn[0], parentColumn[1], parentUuid, row);
- TransactionBuilder transactionBuilder = client.transactBuilder();
+ DatabaseSchema dbSchema = client.getDatabaseSchema(OvsVswitchdSchemaConstants.DATABASE_NAME);
+ TransactionBuilder transactionBuilder = client.transactBuilder(dbSchema);
String namedUuid = "Transaction_"+ tableName;
this.processInsertTransaction(client, OvsVswitchdSchemaConstants.DATABASE_NAME, tableName,
logger.debug("updateRow : Connection : {} databaseName : {} tableName : {} rowUUID : {} row : {}",
client.getConnectionInfo(), databaseName, tableName, rowUUID, row.toString());
try{
- TransactionBuilder transactionBuilder = client.transactBuilder();
DatabaseSchema dbSchema = client.getDatabaseSchema(databaseName);
+ TransactionBuilder transactionBuilder = client.transactBuilder(dbSchema);
TableSchema<GenericTableSchema> tableSchema = dbSchema.table(tableName, GenericTableSchema.class);
ColumnSchema<GenericTableSchema, UUID> _uuid = tableSchema.column("_uuid", UUID.class);
transactionBuilder.add(op.update(tableSchema, row)
logger.debug("deleteRow : Connection : {} databaseName : {} tableName : {} Uuid : {} ParentTable : {} ParentColumn : {}",
client.getConnectionInfo(), databaseName, tableName, uuid, parentColumn[0], parentColumn[1]);
- TransactionBuilder transactionBuilder = client.transactBuilder();
+ DatabaseSchema dbSchema = client.getDatabaseSchema(databaseName);
+ TransactionBuilder transactionBuilder = client.transactBuilder(dbSchema);
this.processDeleteTransaction(client, OvsVswitchdSchemaConstants.DATABASE_NAME, tableName,
parentColumn[0], parentColumn[1], uuid, transactionBuilder);
int insertOperationIndex = 0;
- TransactionBuilder transactionBuilder = this.ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = this.ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(bridge.getSchema())
.withId(TEST_BRIDGE_NAME)
.value(bridge.getNameColumn()))
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
String transactionUuidStr = "controller";
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(controller1.getSchema())
.withId(transactionUuidStr)
.value(controller1.getTargetColumn()))
Bridge monitoredBridge = ovs.getTypedRowWrapper(Bridge.class, bridgeRow);
Assert.assertEquals(1, monitoredBridge.getControllerColumn().getData().size());
- transactionBuilder = ovs.transactBuilder()
+ transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(controller2.getSchema())
.withId(transactionUuidStr)
.value(controller2.getTargetColumn()))
flowSampleCollectorSet.setExternalIds(ImmutableMap.of("<3", "ovs"));
flowSampleCollectorSet.setBridge(OpenVswitchSchemaSuiteIT.getTestBridgeUuid());
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(flowSampleCollectorSet.getSchema())
.value(flowSampleCollectorSet.getIdColumn())
.value(flowSampleCollectorSet.getExternalIdsColumn())
}
flowTable.setFlowLimit(ImmutableSet.of(flowLimit));
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(flowTable)
.withId(flowTableUuidStr))
.add(op.mutate(bridge.getSchema())
ipfix.setSampling(ImmutableSet.of(sampling));
ipfix.setExternalIds(ImmutableMap.of("<3", "ovs"));
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(ipfix)
.withId(ipfixUuidStr))
.add(op.mutate(bridge.getSchema())
manager.setExternalIds(externalIds);
int insertSslOperationIndex = 0;
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(manager.getSchema())
.withId(mgrUuidStr)
.value(manager.getTargetColumn())
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
int insertMirrorOperationIndex = 0;
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(mirror.getSchema())
.withId(mirrorUuidStr)
.value(mirror.getNameColumn())
public class MonitorTestCases extends OpenVswitchSchemaTestBase {
Logger logger = LoggerFactory.getLogger(PortAndInterfaceTestCases.class);
- DatabaseSchema dbSchema = null;
@Override
@Before
public void setUp() throws ExecutionException, InterruptedException, TimeoutException, IOException {
super.setUp();
- dbSchema = this.ovs.getSchema(OPEN_VSWITCH_SCHEMA).get();
+ OpenVswitchSchemaSuiteIT.dbSchema = this.ovs.getSchema(OPEN_VSWITCH_SCHEMA).get();
}
@Test
public void monitorTables() throws ExecutionException, InterruptedException, IOException {
- Assert.assertNotNull(dbSchema);
+ Assert.assertNotNull(OpenVswitchSchemaSuiteIT.dbSchema);
List<MonitorRequest<GenericTableSchema>> monitorRequests = Lists.newArrayList();
monitorRequests.add(this.getAllColumnsMonitorRequest(Bridge.class));
monitorRequests.add(this.getAllColumnsMonitorRequest(OpenVSwitch.class));
- TableUpdates updates = ovs.monitor(dbSchema, monitorRequests, new UpdateMonitor());
+ TableUpdates updates = ovs.monitor(OpenVswitchSchemaSuiteIT.dbSchema, monitorRequests, new UpdateMonitor());
Assert.assertNotNull(updates);
this.updateTableCache(updates);
}
netFlow.setActivityTimeout(ImmutableSet.of(activityTimeout));
netFlow.setExternalIds(ImmutableMap.of("big", "baby"));
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(netFlow.getSchema())
.withId(netFlowUuidStr)
.value(netFlow.getTargetsColumn())
*/
package org.opendaylight.ovsdb.schema.openvswitch;
+import java.util.HashMap;
+import java.util.Map;
+
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.opendaylight.ovsdb.lib.OvsdbClient;
import org.opendaylight.ovsdb.lib.notation.Row;
import org.opendaylight.ovsdb.lib.notation.UUID;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
@RunWith(Suite.class)
@Suite.SuiteClasses({
public class OpenVswitchSchemaSuiteIT {
// Keep this data between test runs
+ static DatabaseSchema dbSchema;
static OvsdbClient ovsdbClient;
static UUID testBridgeUuid;
static UUID testSslUuid;
package org.opendaylight.ovsdb.schema.openvswitch;
-import com.google.common.util.concurrent.ListenableFuture;
-import junit.framework.Assert;
-import org.junit.Before;
-import org.opendaylight.ovsdb.lib.OvsdbClient;
-import org.opendaylight.ovsdb.lib.OvsdbConnection;
-import org.opendaylight.ovsdb.lib.OvsdbConnectionListener;
-import org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService;
-import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
-import org.opendaylight.ovsdb.lib.notation.Row;
-import org.opendaylight.ovsdb.lib.notation.UUID;
-
import java.io.IOException;
import java.net.InetAddress;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import junit.framework.Assert;
+
+import org.junit.Before;
+import org.opendaylight.ovsdb.lib.OvsdbClient;
+import org.opendaylight.ovsdb.lib.OvsdbConnection;
+import org.opendaylight.ovsdb.lib.OvsdbConnectionListener;
+import org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService;
+import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.notation.Row;
+import org.opendaylight.ovsdb.lib.notation.UUID;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
public abstract class OpenVswitchSchemaTestBase implements OvsdbRPC.Callback{
private final static String SERVER_IPADDRESS = "ovsdbserver.ipaddress";
private final static String SERVER_PORT = "ovsdbserver.port";
intf.setExternalIds(ImmutableMap.of("vm-id", "12345abcedf78910"));
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(port.getSchema())
.withId(portUuidStr)
.value(port.getNameColumn())
int insertQosOperationIndex = 2;
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(port.getSchema())
.withId(portUuidStr)
.value(port.getNameColumn()))
// The transaction index for the Queue insert is used to store the Queue UUID
int insertQueueOperationIndex = 0;
// Reference the Port row to insert the Queue with UID or Port name
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(queue.getSchema())
.withId(queueUuidStr)
.value(queue.getDscpColumn())
sFlow.setSampling(ImmutableSet.of(sampling));
sFlow.setExternalIds(ImmutableMap.of("kit", "tah"));
Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(sFlow.getSchema())
.withId(sFlowUuidStr)
.value(sFlow.getTargetsColumn())
OpenVSwitch openVSwitch = ovs.getTypedRowWrapper(OpenVSwitch.class, null);
// The transaction index for the SSL insert is used to store the SSL UUID
int insertSslOperationIndex = 0;
- TransactionBuilder transactionBuilder = ovs.transactBuilder()
+ TransactionBuilder transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
.add(op.insert(ssl.getSchema())
.withId(sslUuidStr)
.value(ssl.getCertificateColumn())
Queue queue = this.ovs.getTypedRowWrapper(Queue.class, null);
Manager manager = this.ovs.getTypedRowWrapper(Manager.class, null);
- TransactionBuilder transactionBuilder = this.ovs.transactBuilder();
+ TransactionBuilder transactionBuilder = this.ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema);
if (schemaVersion.compareTo(flowSampleCollectorSetFromVersion) >= 0) {
FlowSampleCollectorSet flowSampleCollectorSet = this.ovs.getTypedRowWrapper(FlowSampleCollectorSet.class, null);