import org.opendaylight.ovsdb.lib.jsonrpc.Params;
import org.opendaylight.ovsdb.lib.message.MonitorRequest;
import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
+import org.opendaylight.ovsdb.lib.message.TableUpdate;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.message.TransactBuilder;
import org.opendaylight.ovsdb.lib.message.UpdateNotification;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.TableSchema;
+import org.opendaylight.ovsdb.lib.table.Table;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
logger.info("callback received with context {}, but no known handler. Ignoring!", key);
return;
}
- monitorCallBack.update(upadateNotification.getUpdate());
+ _transformingCallback(upadateNotification.getUpdate(), monitorCallBack);
}
@Override
}
}
+ protected void _transformingCallback( org.opendaylight.ovsdb.lib.message.temp.TableUpdates oldUpdate, MonitorCallBack monitorCallBack) {
+ //todo(ashwin) : temp kludge to get stuff working while deprecating old stuff
+ Map<String, TableUpdate> updateMap = Maps.newHashMap();
+ for (Map.Entry<Table.Name, TableUpdate> temp : oldUpdate.map.entrySet()) {
+ updateMap.put(temp.getKey().getName(), temp.getValue());
+ }
+
+ monitorCallBack.update(new TableUpdates(updateMap));
+ }
+
@Override
public ListenableFuture<List<OperationResult>> transact(List<Operation> operations) {
final MonitorHandle monitorHandle = new MonitorHandle(UUID.randomUUID().toString());
registerCallback(monitorHandle, callback);
- ListenableFuture<TableUpdates> monitor = rpc.monitor(new Params() {
+ ListenableFuture<org.opendaylight.ovsdb.lib.message.temp.TableUpdates> monitor = rpc.monitor(new Params() {
@Override
public List<Object> params() {
return Lists.<Object>newArrayList(dbSchema.getName(), monitorHandle.getId(), reqMap);
}
});
- Futures.addCallback(monitor, new FutureCallback<TableUpdates>() {
+ Futures.addCallback(monitor, new FutureCallback<org.opendaylight.ovsdb.lib.message.temp.TableUpdates>() {
@Override
- public void onSuccess(TableUpdates result) {
- callback.update(result);
+ public void onSuccess(org.opendaylight.ovsdb.lib.message.temp.TableUpdates result) {
+ _transformingCallback(result, callback);
}
@Override
import java.util.List;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import com.fasterxml.jackson.databind.JsonNode;
/*
- * Copyright (C) 2013 EBay Software Foundation
*
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
+ * * Copyright (C) 2014 EBay Software Foundation
+ * *
+ * * This program and the accompanying materials are made available under the
+ * * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * * and is available at http://www.eclipse.org/legal/epl-v10.html
+ * *
+ * * Authors : Ashwin Raveendran
*
- * Authors : Ashwin Raveendran, Madhu Venugopal
*/
package org.opendaylight.ovsdb.lib.message;
-import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Maps;
-
import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
-import org.opendaylight.ovsdb.lib.table.Bridge;
-import org.opendaylight.ovsdb.lib.table.Capability;
-import org.opendaylight.ovsdb.lib.table.Interface;
-import org.opendaylight.ovsdb.lib.table.Port;
-import org.opendaylight.ovsdb.lib.table.Controller;
-import org.opendaylight.ovsdb.lib.table.Manager;
-import org.opendaylight.ovsdb.lib.table.Mirror;
-import org.opendaylight.ovsdb.lib.table.NetFlow;
-import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
-import org.opendaylight.ovsdb.lib.table.Qos;
-import org.opendaylight.ovsdb.lib.table.Queue;
-import org.opendaylight.ovsdb.lib.table.SFlow;
-import org.opendaylight.ovsdb.lib.table.SSL;
-import org.opendaylight.ovsdb.lib.table.Flow_Sample_Collector_Set;
-import org.opendaylight.ovsdb.lib.table.Flow_Table;
-import org.opendaylight.ovsdb.lib.table.IPFIX;
-import org.opendaylight.ovsdb.lib.table.Table;
import java.util.Map;
-import java.util.Set;
public class TableUpdates extends Response {
- Map<Table.Name, TableUpdate> map = Maps.newHashMap();
-
- public Set<Table.Name> availableUpdates() {
- return map.keySet();
- }
-
- @SuppressWarnings("unchecked")
- public <T extends Table> TableUpdate<T> getUpdate(Table.Name<T> name) {
- return map.get(name);
- }
-
- private <T extends Table> void put(Table.Name<T> name, TableUpdate<T> update) {
- map.put(name, update);
- }
-
- @JsonProperty("Interface")
- public TableUpdate<Interface> getInterfaceUpdate() {
- return getUpdate(Interface.NAME);
- }
-
- public void setInterfaceUpdate(TableUpdate<Interface> interfaceUpdate) {
- put(Interface.NAME, interfaceUpdate);
- }
-
- @JsonProperty("Bridge")
- TableUpdate<Bridge> getBridgeUpdate() {
- return getUpdate(Bridge.NAME);
- }
-
- public void setBridgeUpdate(TableUpdate<Bridge> bridgeUpdate) {
- put(Bridge.NAME, bridgeUpdate);
- }
-
- @JsonProperty("Port")
- TableUpdate<Port> getPortUpdate() {
- return getUpdate(Port.NAME);
- }
-
- void setPortUpdate(TableUpdate<Port> portUpdate) {
- put(Port.NAME, portUpdate);
- }
-
- @JsonProperty("Capability")
- public TableUpdate<Capability> getCapabilityUpdate() {
- return getUpdate(Capability.NAME);
- }
-
- public void setCapabilityUpdate(TableUpdate<Capability> capabilityUpdate) {
- put(Capability.NAME, capabilityUpdate);
- }
-
- @JsonProperty("Controller")
- public TableUpdate<Controller> getControllerUpdate() {
- return getUpdate(Controller.NAME);
- }
-
- public void setControllerUpdate(TableUpdate<Controller> controllerUpdate) {
- put(Controller.NAME, controllerUpdate);
- }
-
- @JsonProperty("Manager")
- public TableUpdate<Manager> getManagerUpdate() {
- return getUpdate(Manager.NAME);
- }
-
- public void setManagerUpdate(TableUpdate<Manager> managerUpdate) {
- put(Manager.NAME, managerUpdate);
- }
-
- @JsonProperty("Mirror")
- public TableUpdate<Mirror> getMirrorUpdate() {
- return getUpdate(Mirror.NAME);
- }
-
- public void setMirrorUpdate(TableUpdate<Mirror> mirrorUpdate) {
- put(Mirror.NAME, mirrorUpdate);
- }
-
- @JsonProperty("NetFlow")
- public TableUpdate<NetFlow> getNetFlowUpdate() {
- return getUpdate(NetFlow.NAME);
- }
-
- public void setNetFlowUpdate(TableUpdate<NetFlow> netFlowUpdate) {
- put(NetFlow.NAME, netFlowUpdate);
- }
-
- @JsonProperty("Open_vSwitch")
- public TableUpdate<Open_vSwitch> getOpen_vSwitchUpdate() {
- return getUpdate(Open_vSwitch.NAME);
- }
-
- public void setOpen_vSwitchUpdate(TableUpdate<Open_vSwitch> openVSwitchUpdate) {
- put(Open_vSwitch.NAME, openVSwitchUpdate);
- }
-
- @JsonProperty("QoS")
- public TableUpdate<Qos> getQosUpdate() {
- return getUpdate(Qos.NAME);
- }
-
- public void setQosUpdate(TableUpdate<Qos> qosUpdate) {
- put(Qos.NAME, qosUpdate);
- }
-
- @JsonProperty("Queue")
- public TableUpdate<Queue> getQueueUpdate() {
- return getUpdate(Queue.NAME);
- }
-
- public void setQueueUpdate(TableUpdate<Queue> queueUpdate) {
- put(Queue.NAME, queueUpdate);
- }
-
- @JsonProperty("sFlow")
- public TableUpdate<SFlow> getSFlowUpdate() {
- return getUpdate(SFlow.NAME);
- }
-
- public void setSFlowUpdate(TableUpdate<SFlow> sFlowUpdate) {
- put(SFlow.NAME, sFlowUpdate);
- }
-
- @JsonProperty("SSL")
- public TableUpdate<SSL> getSSLUpdate() {
- return getUpdate(SSL.NAME);
- }
-
- public void setSSLUpdate(TableUpdate<SSL> sslUpdate) {
- put(SSL.NAME, sslUpdate);
- }
-
- @JsonProperty("Flow_Table")
- public TableUpdate<Flow_Table> getFlow_TableUpdate() {
- return getUpdate(Flow_Table.NAME);
- }
-
- public void setFlow_TableUpdate(TableUpdate<Flow_Table> Flow_TableUpdate) {
- put(Flow_Table.NAME, Flow_TableUpdate);
- }
-
- @JsonProperty("Flow_Sample_Collector_Set")
- public TableUpdate<Flow_Sample_Collector_Set> getFlow_Sample_Collector_SetUpdate() {
- return getUpdate(Flow_Sample_Collector_Set.NAME);
- }
-
- public void setFlow_Sample_Collector_SetUpdate(TableUpdate<Flow_Sample_Collector_Set> Flow_Sample_Collector_SetUpdate) {
- put(Flow_Sample_Collector_Set.NAME, Flow_Sample_Collector_SetUpdate);
- }
+ Map<String, TableUpdate> map = Maps.newHashMap();
- @JsonProperty("IPFIX")
- public TableUpdate<IPFIX> getIPFIXUpdate() {
- return getUpdate(IPFIX.NAME);
+ public TableUpdates() {
+ this(Maps.<String, TableUpdate>newHashMap());
}
- public void setIPFIXUpdate(TableUpdate<IPFIX> IPFIXUpdate) {
- put(IPFIX.NAME, IPFIXUpdate);
+ public TableUpdates(Map<String, TableUpdate> map) {
+ this.map = map;
}
public TableUpdate getUpdate(GenericTableSchema table) {
//todo Horrible just for time being, before this whole thing is refactored.
- for (Map.Entry<Table.Name, TableUpdate> s : this.map.entrySet()) {
- if (table.getName().equals(s.getKey().getName())) {
+ for (Map.Entry<String, TableUpdate> s : this.map.entrySet()) {
+ if (table.getName().equals(s.getKey())) {
return s.getValue();
}
}
*/
package org.opendaylight.ovsdb.lib.message;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.notation.json.Converter.UpdateNotificationConverter;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
--- /dev/null
+/*
+ * Copyright (C) 2013 EBay Software Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Authors : Ashwin Raveendran, Madhu Venugopal
+ */
+package org.opendaylight.ovsdb.lib.message.temp;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.Maps;
+
+import org.opendaylight.ovsdb.lib.message.Response;
+import org.opendaylight.ovsdb.lib.message.TableUpdate;
+import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
+import org.opendaylight.ovsdb.lib.table.Bridge;
+import org.opendaylight.ovsdb.lib.table.Capability;
+import org.opendaylight.ovsdb.lib.table.Interface;
+import org.opendaylight.ovsdb.lib.table.Port;
+import org.opendaylight.ovsdb.lib.table.Controller;
+import org.opendaylight.ovsdb.lib.table.Manager;
+import org.opendaylight.ovsdb.lib.table.Mirror;
+import org.opendaylight.ovsdb.lib.table.NetFlow;
+import org.opendaylight.ovsdb.lib.table.Open_vSwitch;
+import org.opendaylight.ovsdb.lib.table.Qos;
+import org.opendaylight.ovsdb.lib.table.Queue;
+import org.opendaylight.ovsdb.lib.table.SFlow;
+import org.opendaylight.ovsdb.lib.table.SSL;
+import org.opendaylight.ovsdb.lib.table.Flow_Sample_Collector_Set;
+import org.opendaylight.ovsdb.lib.table.Flow_Table;
+import org.opendaylight.ovsdb.lib.table.IPFIX;
+import org.opendaylight.ovsdb.lib.table.Table;
+
+import java.util.Map;
+import java.util.Set;
+
+
+public class TableUpdates extends Response {
+
+ public Map<Table.Name, TableUpdate> map = Maps.newHashMap();
+
+ public Set<Table.Name> availableUpdates() {
+ return map.keySet();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Table> TableUpdate<T> getUpdate(Table.Name<T> name) {
+ return map.get(name);
+ }
+
+ private <T extends Table> void put(Table.Name<T> name, TableUpdate<T> update) {
+ map.put(name, update);
+ }
+
+ @JsonProperty("Interface")
+ public TableUpdate<Interface> getInterfaceUpdate() {
+ return getUpdate(Interface.NAME);
+ }
+
+ public void setInterfaceUpdate(TableUpdate<Interface> interfaceUpdate) {
+ put(Interface.NAME, interfaceUpdate);
+ }
+
+ @JsonProperty("Bridge")
+ TableUpdate<Bridge> getBridgeUpdate() {
+ return getUpdate(Bridge.NAME);
+ }
+
+ public void setBridgeUpdate(TableUpdate<Bridge> bridgeUpdate) {
+ put(Bridge.NAME, bridgeUpdate);
+ }
+
+ @JsonProperty("Port")
+ TableUpdate<Port> getPortUpdate() {
+ return getUpdate(Port.NAME);
+ }
+
+ void setPortUpdate(TableUpdate<Port> portUpdate) {
+ put(Port.NAME, portUpdate);
+ }
+
+ @JsonProperty("Capability")
+ public TableUpdate<Capability> getCapabilityUpdate() {
+ return getUpdate(Capability.NAME);
+ }
+
+ public void setCapabilityUpdate(TableUpdate<Capability> capabilityUpdate) {
+ put(Capability.NAME, capabilityUpdate);
+ }
+
+ @JsonProperty("Controller")
+ public TableUpdate<Controller> getControllerUpdate() {
+ return getUpdate(Controller.NAME);
+ }
+
+ public void setControllerUpdate(TableUpdate<Controller> controllerUpdate) {
+ put(Controller.NAME, controllerUpdate);
+ }
+
+ @JsonProperty("Manager")
+ public TableUpdate<Manager> getManagerUpdate() {
+ return getUpdate(Manager.NAME);
+ }
+
+ public void setManagerUpdate(TableUpdate<Manager> managerUpdate) {
+ put(Manager.NAME, managerUpdate);
+ }
+
+ @JsonProperty("Mirror")
+ public TableUpdate<Mirror> getMirrorUpdate() {
+ return getUpdate(Mirror.NAME);
+ }
+
+ public void setMirrorUpdate(TableUpdate<Mirror> mirrorUpdate) {
+ put(Mirror.NAME, mirrorUpdate);
+ }
+
+ @JsonProperty("NetFlow")
+ public TableUpdate<NetFlow> getNetFlowUpdate() {
+ return getUpdate(NetFlow.NAME);
+ }
+
+ public void setNetFlowUpdate(TableUpdate<NetFlow> netFlowUpdate) {
+ put(NetFlow.NAME, netFlowUpdate);
+ }
+
+ @JsonProperty("Open_vSwitch")
+ public TableUpdate<Open_vSwitch> getOpen_vSwitchUpdate() {
+ return getUpdate(Open_vSwitch.NAME);
+ }
+
+ public void setOpen_vSwitchUpdate(TableUpdate<Open_vSwitch> openVSwitchUpdate) {
+ put(Open_vSwitch.NAME, openVSwitchUpdate);
+ }
+
+ @JsonProperty("QoS")
+ public TableUpdate<Qos> getQosUpdate() {
+ return getUpdate(Qos.NAME);
+ }
+
+ public void setQosUpdate(TableUpdate<Qos> qosUpdate) {
+ put(Qos.NAME, qosUpdate);
+ }
+
+ @JsonProperty("Queue")
+ public TableUpdate<Queue> getQueueUpdate() {
+ return getUpdate(Queue.NAME);
+ }
+
+ public void setQueueUpdate(TableUpdate<Queue> queueUpdate) {
+ put(Queue.NAME, queueUpdate);
+ }
+
+ @JsonProperty("sFlow")
+ public TableUpdate<SFlow> getSFlowUpdate() {
+ return getUpdate(SFlow.NAME);
+ }
+
+ public void setSFlowUpdate(TableUpdate<SFlow> sFlowUpdate) {
+ put(SFlow.NAME, sFlowUpdate);
+ }
+
+ @JsonProperty("SSL")
+ public TableUpdate<SSL> getSSLUpdate() {
+ return getUpdate(SSL.NAME);
+ }
+
+ public void setSSLUpdate(TableUpdate<SSL> sslUpdate) {
+ put(SSL.NAME, sslUpdate);
+ }
+
+ @JsonProperty("Flow_Table")
+ public TableUpdate<Flow_Table> getFlow_TableUpdate() {
+ return getUpdate(Flow_Table.NAME);
+ }
+
+ public void setFlow_TableUpdate(TableUpdate<Flow_Table> Flow_TableUpdate) {
+ put(Flow_Table.NAME, Flow_TableUpdate);
+ }
+
+ @JsonProperty("Flow_Sample_Collector_Set")
+ public TableUpdate<Flow_Sample_Collector_Set> getFlow_Sample_Collector_SetUpdate() {
+ return getUpdate(Flow_Sample_Collector_Set.NAME);
+ }
+
+ public void setFlow_Sample_Collector_SetUpdate(TableUpdate<Flow_Sample_Collector_Set> Flow_Sample_Collector_SetUpdate) {
+ put(Flow_Sample_Collector_Set.NAME, Flow_Sample_Collector_SetUpdate);
+ }
+
+ @JsonProperty("IPFIX")
+ public TableUpdate<IPFIX> getIPFIXUpdate() {
+ return getUpdate(IPFIX.NAME);
+ }
+
+ public void setIPFIXUpdate(TableUpdate<IPFIX> IPFIXUpdate) {
+ put(IPFIX.NAME, IPFIXUpdate);
+ }
+
+ public TableUpdate getUpdate(GenericTableSchema table) {
+ //todo Horrible just for time being, before this whole thing is refactored.
+ for (Map.Entry<Table.Name, TableUpdate> s : this.map.entrySet()) {
+ if (table.getName().equals(s.getKey().getName())) {
+ return s.getValue();
+ }
+ }
+ return null;
+ }
+}
@JsonSerialize(using = OvsDBSetSerializer.class)
public class OvsDBSet<T> extends ForwardingSet<T> {
- Set<T> target = Sets.newHashSet();
+ Set<T> target = null;
+
+ public OvsDBSet() {
+ this(Sets.<T>newHashSet());
+ }
+
+ public OvsDBSet(Set<T> backing) {
+ this.target = backing;
+ }
@Override
public Set<T> delegate() {
return target;
}
+
+ public static<D> OvsDBSet<D> fromSet(Set<D> value) {
+ return new OvsDBSet<>(value);
+ }
}
*/
package org.opendaylight.ovsdb.lib.notation.json;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.message.UpdateNotification;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
package org.opendaylight.ovsdb.lib.operations;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
+import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
import org.opendaylight.ovsdb.lib.schema.TableSchema;
import java.util.Map;
+import java.util.Set;
public class Insert<E extends TableSchema<E>> extends Operation<E> {
}
public <D, C extends TableSchema<C>> Insert<E> value(ColumnSchema<C, D> columnSchema, D value) {
- row.put(columnSchema.getName(), value);
+ Object tval = null;
+ if (columnSchema.getType().isMultiValued()) {
+ Preconditions.checkArgument((value instanceof Set),"expected a set for multivalued item") ;
+ tval = OvsDBSet.fromSet((Set) value);
+ }
+ row.put(columnSchema.getName(), tval);
return this;
}
public abstract class ColumnType {
BaseType baseType;
- int min = 0;
- int max = 0;
+ long min = 0;
+ long max = 0;
+
+ public long getMin() {
+ return min;
+ }
+
+ void setMin(long min) {
+ this.min = min;
+ }
+
+ public long getMax() {
+ return max;
+ }
+
+ void setMax(long max) {
+ this.max = max;
+ }
private static ColumnType columns[] = new ColumnType[]{
new AtomicColumnType(),
*/
protected abstract ColumnType fromJsonNode(JsonNode json);
+ public boolean isMultiValued() {
+ //todo check if this is the right logic
+ return this.min != this.max && this.min != 1;
+ }
+
public static class AtomicColumnType extends ColumnType {
public AtomicColumnType() {
}
BaseType baseType = BaseType.fromJson(json, "key");
- return baseType != null ? new AtomicColumnType(baseType) : null;
+ if (baseType != null) {
+
+ AtomicColumnType atomicColumnType = new AtomicColumnType(baseType);
+
+ JsonNode node = null;
+ if ((node = json.get("min")) != null) {
+ atomicColumnType.setMin(node.asLong());
+ }
+ if ((node = json.get("max")) != null) {
+ atomicColumnType.setMax(node.asLong());
+ }
+
+ return atomicColumnType;
+ }
+
+ return null;
}
}
return new Insert<>(this);
}
+ public <D> ColumnSchema<E, Set<D>> multiValuedColumn(String column, Class<D> type) {
+ //todo exception handling
+
+ ColumnSchema columnSchema = columns.get(column);
+ columnSchema.validateType(type);
+ return columnSchema;
+ }
+
public <D> ColumnSchema<E, D> column(String column, Class<D> type) {
//todo exception handling
*/
package org.opendaylight.ovsdb.lib;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import com.google.common.util.concurrent.ListenableFuture;
import static org.opendaylight.ovsdb.lib.operations.Operations.op;
import java.io.IOException;
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.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Set;
public class OvsDBClientTestIT extends OvsdbTestBase {
ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
ColumnSchema<GenericTableSchema, String> fail_mode = bridge.column("fail_mode", String.class);
+ ColumnSchema<GenericTableSchema, Set<Integer>> flood_vlans = bridge.multiValuedColumn("flood_vlans", Integer.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")
- .value(flood_vlans, vlans))
+ .value(name, "br-int")
+ .value(flood_vlans, Sets.newHashSet(100, 101, 4001))
+ )
.add(op.update(bridge)
.set(fail_mode, "secure")
.where(name.opEqual("br-int"))
- //.and(name.opEqual("br-int"))
.operation())
.add(op.select(bridge)
.column(name)
MonitorRequestBuilder.builder(bridge)
.addColumn(bridge.column("name"))
.addColumn(bridge.column("fail_mode", String.class))
- .addColumn(bridge.column("flood_vlans"))
+ .addColumn(bridge.multiValuedColumn("flood_vlans", Integer.class))
.with(new MonitorSelect(true, true, true, true))
.build());
}
});
- //for (int i = 0; i < 5 && results.isEmpty(); i++) { //wait 5 seconds to get a result
for (int i = 0; i < 5 ; i++) { //wait 5 seconds to get a result
System.out.println("waiting");
Thread.sleep(1000);
import junit.framework.TestCase;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.notation.OvsDBMap;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcServiceBinderHandler;
import org.opendaylight.ovsdb.lib.message.MonitorRequestBuilder;
import org.opendaylight.ovsdb.lib.message.OvsdbRPC;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.message.UpdateNotification;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
import org.opendaylight.ovsdb.lib.message.TableUpdate;
import org.opendaylight.ovsdb.lib.message.TableUpdate.Row;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.notation.OvsDBSet;
import org.opendaylight.ovsdb.lib.table.Bridge;
import org.opendaylight.ovsdb.lib.table.Table;
import org.opendaylight.controller.sal.core.UpdateType;
import org.opendaylight.controller.sal.inventory.IPluginInInventoryService;
import org.opendaylight.ovsdb.lib.database.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.message.temp.TableUpdates;
import org.opendaylight.ovsdb.lib.table.Table;
public interface InventoryServiceInternal extends IPluginInInventoryService {