public static final String QOS_URI_PREFIX = "qos";
public static final String QUEUE_URI_PREFIX = "queue";
public static final String AUTOATTACH_URI_PREFIX = "autoattach";
+ public static final String AUTOATTACH_SUPPORTED_OVS_SCHEMA_VERSION = "7.11.2";
public static final Integer DEFAULT_OVSDB_PORT = 6640;
public static final String DEFAULT_OPENFLOW_PORT = "6653";
public static final String OPENFLOW_CONNECTION_PROTOCOL = "tcp";
public OvsdbAutoAttachRemovedCommand(OvsdbConnectionInstance key,
TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
- try {
- removedAutoAttachRows = TyperUtils.extractRowsRemoved(AutoAttach.class, getUpdates(), getDbSchema());
- } catch (final IllegalArgumentException e) {
- LOG.info("UNSUPPORTED FUNCTIONALITY: AutoAttach not supported on this OVS", e.getMessage());
- }
+ removedAutoAttachRows = TyperUtils.extractRowsRemoved(AutoAttach.class, getUpdates(), getDbSchema());
}
@Override
public OvsdbAutoAttachUpdateCommand(OvsdbConnectionInstance key,
TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
- try {
- updatedAutoAttachRows = TyperUtils.extractRowsUpdated(AutoAttach.class, getUpdates(), getDbSchema());
- oldAutoAttachRows = TyperUtils.extractRowsOld(AutoAttach.class, getUpdates(), getDbSchema());
- } catch (final IllegalArgumentException e) {
- LOG.info("UNSUPPORTED FUNCTIONALITY: AutoAttach not supported on this OVS", e.getMessage());
- }
+ updatedAutoAttachRows = TyperUtils.extractRowsUpdated(AutoAttach.class, getUpdates(), getDbSchema());
+ oldAutoAttachRows = TyperUtils.extractRowsOld(AutoAttach.class, getUpdates(), getDbSchema());
}
@Override
currentAutoattach = optionalAutoattach.get();
}
} catch (final Exception e) {
- LOG.warn("AutoAttach table entries not found in operational datastore, need to create it.", e);
+ LOG.debug("AutoAttach table entries not found in operational datastore, need to create it.", e);
}
final AutoattachBuilder autoAttachBuilder = (currentAutoattach != null) ? new AutoattachBuilder(currentAutoattach)
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.notation.Version;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.southbound.OvsdbConnectionInstance;
+import org.opendaylight.ovsdb.southbound.SouthboundConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class OvsdbOperationalCommandAggregator implements TransactionCommand {
-
+ private static final Logger LOG = LoggerFactory.getLogger(OvsdbOperationalCommandAggregator.class);
private List<TransactionCommand> commands = new ArrayList<>();
public OvsdbOperationalCommandAggregator(OvsdbConnectionInstance key,TableUpdates updates,
commands.add(new OvsdbControllerRemovedCommand(key, updates, dbSchema));
commands.add(new OvsdbPortUpdateCommand(key, updates, dbSchema));
commands.add(new OvsdbPortRemoveCommand(key, updates, dbSchema));
- commands.add(new OvsdbAutoAttachUpdateCommand(key, updates, dbSchema));
- commands.add(new OvsdbAutoAttachRemovedCommand(key, updates, dbSchema));
+
+ if(dbSchema.getVersion().compareTo(Version.fromString(SouthboundConstants.AUTOATTACH_SUPPORTED_OVS_SCHEMA_VERSION)) >= 0) {
+ commands.add(new OvsdbAutoAttachUpdateCommand(key, updates, dbSchema));
+ commands.add(new OvsdbAutoAttachRemovedCommand(key, updates, dbSchema));
+ } else {
+ LOG.debug("UNSUPPORTED FUNCTIONALITY: AutoAttach not supported in OVS schema version {}", dbSchema.getVersion().toString());
+ }
}
@Override
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.notation.Version;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.southbound.transactions.md.OvsdbOperationalCommandAggregator;
import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvoker;
@Test
public void testUpdate() {
- ovsdbMonitorCallback.update(mock(TableUpdates.class), mock(DatabaseSchema.class));
+ DatabaseSchema dbSchema = mock(DatabaseSchema.class);
+ when(dbSchema.getVersion()).thenReturn(Version.fromString(SouthboundConstants.AUTOATTACH_SUPPORTED_OVS_SCHEMA_VERSION));
+ ovsdbMonitorCallback.update(mock(TableUpdates.class), dbSchema);
verify(txInvoker).invoke(any(OvsdbOperationalCommandAggregator.class));
}
import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.notation.Version;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.southbound.OvsdbConnectionInstance;
+import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.api.support.membermodification.MemberModifier;
import org.powermock.core.classloader.annotations.PrepareForTest;
OvsdbConnectionInstance key = mock(OvsdbConnectionInstance.class);
TableUpdates updates = mock(TableUpdates.class);
DatabaseSchema dbSchema = mock(DatabaseSchema.class);
+ when(dbSchema.getVersion()).thenReturn(Version.fromString(SouthboundConstants.AUTOATTACH_SUPPORTED_OVS_SCHEMA_VERSION));
OvsdbOperationalCommandAggregator ovsdbOperationalCommandAggregator1 = new OvsdbOperationalCommandAggregator(key, updates, dbSchema);
List<TransactionCommand> testCommands = Whitebox.getInternalState(ovsdbOperationalCommandAggregator1, "commands");
assertEquals(NUMBER_OF_COMMANDS, testCommands.size());