import org.opendaylight.ovsdb.lib.message.TableUpdate;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.message.UpdateNotification;
+import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import com.google.common.util.concurrent.ListenableFuture;
ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
ColumnSchema<GenericTableSchema, String> fail_mode = bridge.column("fail_mode", String.class);
+ /*
+ * Adding a Test around non-atomic columns, since Set/Map columns requires special
+ * serialization/deserailzation for OVSDB Bidirection JSON.
+ * TODO : Replace this with regular Set and hide the ugliness of OvsDBSet inside the API.
+ */
+ ColumnSchema<GenericTableSchema, OvsDBSet> flood_vlans = bridge.column("flood_vlans", OvsDBSet.class);
+ OvsDBSet vlans = new OvsDBSet();
+ vlans.addAll(Sets.newHashSet(100, 200));
ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
- .add(op.insert(bridge).value(name, "br-int"))
+ .add(op.insert(bridge)
+ .value(name, "br-int")
+ .value(flood_vlans, vlans))
.add(op.update(bridge)
.set(fail_mode, "secure")
.where(name.opEqual("br-int"))
MonitorRequestBuilder.builder(bridge)
.addColumn(bridge.column("name"))
.addColumn(bridge.column("fail_mode", String.class))
+ .addColumn(bridge.column("flood_vlans"))
.with(new MonitorSelect(true, true, true, true))
.build());