LOG.debug("HwvtepSouthbound monitoring table {} in {}", tableName, dbSchema.getName());
GenericTableSchema tableSchema = dbSchema.table(tableName, GenericTableSchema.class);
Set<String> columns = tableSchema.getColumns();
- MonitorRequestBuilder<GenericTableSchema> monitorBuilder = MonitorRequestBuilder.builder(tableSchema);
- for (String column : columns) {
- monitorBuilder.addColumn(column);
- }
- monitorRequests.add(monitorBuilder.with(new MonitorSelect(true, true, true, true)).build());
+ monitorRequests.add(new MonitorRequestBuilder<>(tableSchema)
+ .addColumns(columns)
+ .with(new MonitorSelect(true, true, true, true)).build());
}
this.callback.update(monitor(dbSchema, monitorRequests, callback),dbSchema);
} else {
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.google.common.collect.Sets;
import java.util.Set;
/**
public void setColumns(Set<String> columns) {
this.columns = columns;
}
-
- public void addColumn(String column) {
- if (columns == null) {
- columns = Sets.newHashSet();
- }
- columns.add(column);
- }
}
package org.opendaylight.ovsdb.lib.message;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import org.opendaylight.ovsdb.lib.schema.ColumnSchema;
import org.opendaylight.ovsdb.lib.schema.TableSchema;
public class MonitorRequestBuilder<E extends TableSchema<E>> {
- E tableSchema;
- MonitorRequest monitorRequest;
+ private final E tableSchema;
+ private final Collection<String> columns = new HashSet<>();
+ private MonitorSelect select;
- MonitorRequestBuilder(E tableSchema) {
+ public MonitorRequestBuilder(E tableSchema) {
this.tableSchema = tableSchema;
}
- public static <T extends TableSchema<T>> MonitorRequestBuilder<T> builder(T tableSchema) {
- return new MonitorRequestBuilder<>(tableSchema);
- }
-
- MonitorRequest getMonitorRequest() {
- if (monitorRequest == null) {
- monitorRequest = new MonitorRequest();
- }
- return monitorRequest;
- }
-
public MonitorRequestBuilder<E> addColumn(String column) {
- getMonitorRequest().addColumn(column);
+ this.columns.add(column);
return this;
}
return this;
}
+ public MonitorRequestBuilder<E> addColumns(Collection<String> columns) {
+ this.columns.addAll(columns);
+ return this;
+ }
+
public MonitorRequestBuilder<E> addColumns(List<ColumnSchema<E, ?>> columns) {
for (ColumnSchema<E, ?> schema : columns) {
this.addColumn(schema);
return this;
}
- public Set<String> getColumns() {
- return getMonitorRequest().getColumns();
+ public Collection<String> getColumns() {
+ return this.columns;
}
public MonitorRequestBuilder<E> with(MonitorSelect select) {
- getMonitorRequest().setSelect(select);
+ this.select = select;
return this;
}
public MonitorRequest build() {
- MonitorRequest newBuiltMonitorRequest = getMonitorRequest();
- if (newBuiltMonitorRequest.getSelect() == null) {
- newBuiltMonitorRequest.setSelect(new MonitorSelect());
- }
- newBuiltMonitorRequest.setTableName(tableSchema.getName());
- return newBuiltMonitorRequest;
+ MonitorRequest request = new MonitorRequest(tableSchema.getName(), new HashSet<>(this.columns));
+ request.setSelect(select == null ? new MonitorSelect() : select);
+ return request;
}
}
ColumnSchema<GenericTableSchema, Set<Integer>> flood_vlans = bridge.multiValuedColumn("flood_vlans", Integer.class);
ColumnSchema<GenericTableSchema, Map<String, String>> externalIds = bridge.multiValuedColumn("external_ids", String.class, String.class);
ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
- MonitorRequestBuilder<GenericTableSchema> builder = MonitorRequestBuilder.builder(bridge);
+ MonitorRequestBuilder<GenericTableSchema> builder = new MonitorRequestBuilder<>(bridge);
if (filter) {
builder.addColumn(bridge.column("name"))
.addColumn(bridge.column("fail_mode", String.class))
TypedBaseTable<GenericTableSchema> table = getClient().createTypedRowWrapper(klazz);
GenericTableSchema tableSchema = table.getSchema();
Set<String> columns = tableSchema.getColumns();
- MonitorRequestBuilder<GenericTableSchema> bridgeBuilder = MonitorRequestBuilder.builder(table.getSchema());
+ MonitorRequestBuilder<GenericTableSchema> bridgeBuilder = new MonitorRequestBuilder<>(table.getSchema());
for (String column : columns) {
bridgeBuilder.addColumn(column);
}
public <T extends TableSchema<T>> MonitorRequest getAllColumnsMonitorRequest (T tableSchema) {
Set<String> columns = tableSchema.getColumns();
- MonitorRequestBuilder<T> monitorBuilder = MonitorRequestBuilder.builder(tableSchema);
+ MonitorRequestBuilder<T> monitorBuilder = new MonitorRequestBuilder<>(tableSchema);
for (String column : columns) {
monitorBuilder.addColumn(column);
}
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
if (!SouthboundConstants.SKIP_OVSDB_TABLE.contains(tableName)) {
LOG.info("Southbound monitoring OVSDB schema table {}", tableName);
GenericTableSchema tableSchema = dbSchema.table(tableName, GenericTableSchema.class);
- Set<String> columns = tableSchema.getColumns();
- MonitorRequestBuilder<GenericTableSchema> monitorBuilder
- = MonitorRequestBuilder.builder(tableSchema);
+ // We copy the columns so we can clean the set up later
+ Set<String> columns = new HashSet<>(tableSchema.getColumns());
List<String> skipColumns = SouthboundConstants.SKIP_COLUMN_FROM_TABLE.get(tableName);
- for (String column : columns) {
- if ( skipColumns == null || !skipColumns.contains(column)) {
- monitorBuilder.addColumn(column);
- } else {
- LOG.info("Southbound NOT monitoring column {} in table {}", column, tableName);
- }
+ if (skipColumns != null) {
+ LOG.info("Southbound NOT monitoring columns {} in table {}", skipColumns, tableName);
+ columns.removeAll(skipColumns);
}
- monitorRequests.add(monitorBuilder.with(new MonitorSelect(true, true, true, true)).build());
+ monitorRequests.add(new MonitorRequestBuilder<>(tableSchema)
+ .addColumns(columns)
+ .with(new MonitorSelect(true, true, true, true)).build());
}
}
this.callback.update(monitor(dbSchema, monitorRequests, callback), dbSchema);
import org.opendaylight.ovsdb.lib.MonitorHandle;
import org.opendaylight.ovsdb.lib.OvsdbClient;
import org.opendaylight.ovsdb.lib.OvsdbConnectionInfo;
-import org.opendaylight.ovsdb.lib.message.MonitorRequest;
import org.opendaylight.ovsdb.lib.message.MonitorRequestBuilder;
-import org.opendaylight.ovsdb.lib.message.MonitorSelect;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.operations.OperationResult;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
columns.add("_version");
columns.add("statistics");
when(tableSchema.getColumns()).thenReturn(columns);
- MonitorRequestBuilder<GenericTableSchema> monitorBuilder = mock(MonitorRequestBuilder.class);
- PowerMockito.mockStatic(MonitorRequestBuilder.class);
- when(MonitorRequestBuilder.builder(any(GenericTableSchema.class))).thenReturn(monitorBuilder);
- when(monitorBuilder.addColumn(anyString())).thenReturn(monitorBuilder);
- MonitorRequest monitorReq = mock(MonitorRequest.class);
- when(monitorBuilder.with(any(MonitorSelect.class))).thenReturn(monitorBuilder);
- when(monitorBuilder.build()).thenReturn(monitorReq);
suppress(MemberMatcher.method(OvsdbConnectionInstance.class, "monitor", DatabaseSchema.class, List.class,
MonitorCallBack.class));
Whitebox.invokeMethod(ovsdbConnectionInstance, "monitorTables", "database", dbSchema);
PowerMockito.verifyPrivate(ovsdbConnectionInstance, times(1)).invoke("monitorTables", anyString(),
any(DatabaseSchema.class));
-
- verify(monitorBuilder, times(4)).addColumn(anyString());
}
@SuppressWarnings({ "unchecked" })