description "Per Logical Switch tunnel key";
type string;
}
+ leaf replication-mode {
+ description "Per Logical Switch replication mode";
+ type string;
+ }
}
grouping hwvtep-physical-port-attributes {
package org.opendaylight.ovsdb.hwvtepsouthbound.transact;
+import static org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundUtil.schemaMismatchLog;
import static org.opendaylight.ovsdb.lib.operations.Operations.op;
import java.util.Collection;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.lib.error.SchemaVersionMismatchException;
import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
LogicalSwitch logicalSwitch = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), LogicalSwitch.class);
setDescription(logicalSwitch, lswitch);
setTunnelKey(logicalSwitch, lswitch);
+ setReplicationMode(logicalSwitch, lswitch);
if (!operationalSwitchOptional.isPresent()) {
setName(logicalSwitch, lswitch, operationalSwitchOptional);
LOG.trace("execute: creating LogicalSwitch entry: {}", logicalSwitch);
}
}
+ private void setReplicationMode(LogicalSwitch logicalSwitch, LogicalSwitches inputSwitch) {
+ if (inputSwitch.getReplicationMode() != null) {
+ Set<String> mode = new HashSet<>();
+ mode.add(inputSwitch.getReplicationMode());
+ try {
+ logicalSwitch.setReplicationMode(mode);
+ }
+ catch (SchemaVersionMismatchException e) {
+ schemaMismatchLog("replication_mode", "Logical_Switch", e);
+ }
+ }
+ }
+
@Override
protected List<LogicalSwitches> getData(HwvtepGlobalAugmentation augmentation) {
return augmentation.getLogicalSwitches();
hwvtepGlobalBuilder.setConnectionInfo(getConnectionInfo());
NodeBuilder nodeBuilder = new NodeBuilder();
nodeBuilder.setNodeId(getNodeId(hwvtepGlobal));
- nodeBuilder.addAugmentation(HwvtepGlobalAugmentation.class, hwvtepGlobalBuilder.build());
+ HwvtepGlobalAugmentation hwvtepGlobalAugmentation = hwvtepGlobalBuilder.build();
+ nodeBuilder.addAugmentation(HwvtepGlobalAugmentation.class, hwvtepGlobalAugmentation);
transaction.merge(LogicalDatastoreType.OPERATIONAL, nodePath, nodeBuilder.build());
+ getOvsdbConnectionInstance().setHwvtepGlobalAugmentation(hwvtepGlobalAugmentation);
}
}
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSchemaConstants;
import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundUtil;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.notation.Version;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import com.google.common.base.Optional;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class HwvtepLogicalSwitchUpdateCommand extends AbstractTransactionCommand {
private Map<UUID, LogicalSwitch> updatedLSRows;
+ private static final Logger LOG = LoggerFactory.getLogger(HwvtepLogicalSwitchUpdateCommand.class);
public HwvtepLogicalSwitchUpdateCommand(HwvtepConnectionInstance key, TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
LogicalSwitchesBuilder lsBuilder = new LogicalSwitchesBuilder();
lsBuilder.setLogicalSwitchUuid(new Uuid(lSwitch.getUuid().toString()));
lsBuilder.setHwvtepNodeDescription(lSwitch.getDescription());
+ HwvtepGlobalAugmentation hwvtepGlobalAugmentation = getOvsdbConnectionInstance().getHwvtepGlobalAugmentation();
+ if (hwvtepGlobalAugmentation != null) {
+ Version minVersion = Version.fromString("1.6.0");
+ Version dbVersion = Version.fromString(hwvtepGlobalAugmentation.getDbVersion());
+ if (dbVersion.compareTo(minVersion) >= 0) {
+ if (lSwitch.getReplicationModeColumn().getData() != null && !lSwitch.getReplicationModeColumn().getData().isEmpty()) {
+ lsBuilder.setReplicationMode(lSwitch.getReplicationModeColumn().getData().iterator().next());
+ }
+ LOG.debug("setReplicationMode to: {}", lSwitch.getReplicationModeColumn().getData().iterator().next());
+ }
+ }
HwvtepNodeName hwvtepName = new HwvtepNodeName(lSwitch.getName());
lsBuilder.setHwvtepNodeName(hwvtepName);
lsBuilder.setKey(new LogicalSwitchesKey(hwvtepName));