public static <T extends TableSchema<T>> Mutate<T> stampInstanceIdentifierMutation(TransactionBuilder transaction, InstanceIdentifier<?> iid, TableSchema<T> tableSchema, ColumnSchema<T, Map<String,String>> columnSchema) { Map<String,String> externalIdsMap = ImmutableMap.of(SouthboundConstants.IID_EXTERNAL_ID_KEY, SouthboundUtil.serializeInstanceIdentifier(iid)); Mutate<T> mutate = op.mutate(tableSchema) .addMutation(columnSchema, Mutator.INSERT, externalIdsMap); Mutation deleteIidMutation = new Mutation(columnSchema.getName(), Mutator.DELETE, OvsdbSet.fromSet(Sets.newHashSet(SouthboundConstants.IID_EXTERNAL_ID_KEY))); List<Mutation> mutations = Lists.newArrayList(Sets.newHashSet(deleteIidMutation)); mutations.addAll(mutate.getMutations()); mutate.setMutations(mutations); return mutate; }
public <E extends TableSchema<E>> Mutate<E> mutate(TableSchema<E> schema) { return new Mutate<>(schema); }
public Mutate on(TableSchema schema) { this.setTableSchema(schema); return this; }
try { bridge.setProtocols(Sets.newHashSet(protocolString)); transaction.add(op.mutate(bridge).addMutation(bridge.getProtocolsColumn().getSchema(), Mutator.INSERT,bridge.getProtocolsColumn().getData()) .where(bridge.getNameColumn().getSchema().opEqual(bridge.getNameColumn().getData())) .build()); LOG.info("Updated ProtocolEntry : {} for OVSDB Bridge : {} ",
private void execute(TransactionBuilder transaction, BridgeOperationalState state, Set<InstanceIdentifier<ControllerEntry>> removedControllers, Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> modifiedBridges) { for (InstanceIdentifier<ControllerEntry> controllerIid : removedControllers) { LOG.debug("Removing Registered...ODL controller : {} ", controllerIid); InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid = controllerIid.firstIdentifierOf(OvsdbBridgeAugmentation.class); OvsdbBridgeAugmentation ovsdbBridge = modifiedBridges.get(bridgeIid); Optional<ControllerEntry> controllerEntryOptional = state.getControllerEntry(controllerIid); if (ovsdbBridge != null && controllerEntryOptional.isPresent()) { ControllerEntry controllerEntry = controllerEntryOptional.get(); Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class); bridge.setController(Sets.newHashSet(new UUID(controllerEntry.getControllerUuid().getValue()))); transaction.add(op.mutate(bridge).addMutation(bridge.getControllerColumn().getSchema(), Mutator.DELETE, bridge.getControllerColumn().getData())); } } }
public static void stampInstanceIdentifier(TransactionBuilder transaction, InstanceIdentifier <OvsdbTerminationPointAugmentation> iid, String interfaceName) { Port port = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Port.class); port.setName(interfaceName); port.setExternalIds(Collections.<String,String>emptyMap()); Mutate mutate = TransactUtils.stampInstanceIdentifierMutation(transaction, iid, port.getSchema(), port.getExternalIdsColumn().getSchema()); transaction.add(mutate .where(port.getNameColumn().getSchema().opEqual(interfaceName)) .build()); }
controller.getTargetColumn(), bridge.getName()); transaction.add(op.mutate(bridge) .addMutation(bridge.getControllerColumn().getSchema(), Mutator.INSERT, bridge.getControllerColumn().getData()) .where(bridge.getNameColumn().getSchema().opEqual(bridge.getNameColumn().getData())) .build());
private void execute(TransactionBuilder transaction, BridgeOperationalState state, Set<InstanceIdentifier<ProtocolEntry>> removed, Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> updatedBridges) { for (InstanceIdentifier<ProtocolEntry> protocolIid : removed) { InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid = protocolIid.firstIdentifierOf(OvsdbBridgeAugmentation.class); OvsdbBridgeAugmentation ovsdbBridge = updatedBridges.get(bridgeIid); Optional<ProtocolEntry> protocolEntryOptional = state.getProtocolEntry(protocolIid); if (ovsdbBridge != null && protocolEntryOptional.isPresent()) { ProtocolEntry protocolEntry = protocolEntryOptional.get(); if (protocolEntry != null && protocolEntry.getProtocol() != null) { Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class); String protocolString = SouthboundConstants.OVSDB_PROTOCOL_MAP.get(protocolEntry.getProtocol()); if (protocolString != null) { bridge.setProtocols(Sets.newHashSet(protocolString)); try { transaction.add(op.mutate(bridge).addMutation(bridge.getProtocolsColumn().getSchema(), Mutator.DELETE,bridge.getProtocolsColumn().getData())); LOG.info("Removed ProtocolEntry : {} for OVSDB Bridge : {} ", protocolString, bridge.getName()); } catch (SchemaVersionMismatchException e) { schemaMismatchLog("protocols", "Bridge", e); } } } } } }
private void stampInstanceIdentifier(TransactionBuilder transaction,InstanceIdentifier<Node> iid, String bridgeName) { Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class); bridge.setName(bridgeName); bridge.setExternalIds(Collections.<String,String>emptyMap()); Mutate mutate = TransactUtils.stampInstanceIdentifierMutation(transaction, iid, bridge.getSchema(), bridge.getExternalIdsColumn().getSchema()); transaction.add(mutate .where(bridge.getNameColumn().getSchema().opEqual(bridgeName)) .build()); }
private void processInsertTransaction(OvsdbClient client, String databaseName, String childTable, String parentTable, UUID parentUuid, String parentColumn, String namedUuid, Row<GenericTableSchema> row, TransactionBuilder transactionBuilder) { // Insert the row as the first transaction entry DatabaseSchema dbSchema = client.getDatabaseSchema(databaseName); TableSchema<GenericTableSchema> childTableSchema = dbSchema.table(childTable, GenericTableSchema.class); transactionBuilder.add(op.insert(childTableSchema, row) .withId(namedUuid)); // Followed by the Mutation if (parentColumn != null) { TableSchema<GenericTableSchema> parentTableSchema = dbSchema.table(parentTable, GenericTableSchema.class); ColumnSchema<GenericTableSchema, UUID> parentColumnSchema = parentTableSchema.column(parentColumn, UUID.class); ColumnSchema<GenericTableSchema, UUID> _uuid = parentTableSchema.column("_uuid", UUID.class); transactionBuilder .add(op.mutate(parentTableSchema) .addMutation(parentColumnSchema, Mutator.INSERT, new UUID(namedUuid)) .where(_uuid.opEqual(parentUuid)) .build()); } }
OpenvswitchExternalIds::getExternalIdKey, OpenvswitchExternalIds::getExternalIdValue)); Mutate<GenericTableSchema> mutate = op.mutate(ovs) .addMutation(ovs.getExternalIdsColumn().getSchema(), Mutator.INSERT, ovs.getExternalIdsColumn().getData()); ovs.setOtherConfig(YangUtils.convertYangKeyValueListToMap(otherConfigs, OpenvswitchOtherConfigs::getOtherConfigKey, OpenvswitchOtherConfigs::getOtherConfigValue)); transaction.add(op.mutate(ovs).addMutation(ovs.getOtherConfigColumn().getSchema(), Mutator.INSERT, ovs.getOtherConfigColumn().getData()));
public <E extends TableSchema<E>> Mutate<E> mutate(TypedBaseTable<E> typedTable) { return new Mutate<>(typedTable.getSchema()); }
private void processDeleteTransaction(OvsdbClient client, String databaseName, String childTable, String parentTable, String parentColumn, String uuid, TransactionBuilder transactionBuilder) { DatabaseSchema dbSchema = client.getDatabaseSchema(databaseName); TableSchema<GenericTableSchema> childTableSchema = dbSchema.table(childTable, GenericTableSchema.class); if (parentColumn != null) { TableSchema<GenericTableSchema> parentTableSchema = dbSchema.table(parentTable, GenericTableSchema.class); ColumnSchema<GenericTableSchema, UUID> parentColumnSchema = parentTableSchema.column(parentColumn, UUID.class); transactionBuilder .add(op.mutate(parentTableSchema) .addMutation(parentColumnSchema, Mutator.DELETE, new UUID(uuid)) .where(parentColumnSchema.opIncludes(new UUID(uuid))) .build()); } ColumnSchema<GenericTableSchema, UUID> _uuid = childTableSchema.column("_uuid", UUID.class); transactionBuilder.add(op.delete(childTableSchema) .where(_uuid.opEqual(new UUID(uuid))) .build()); }
private void execute(TransactionBuilder transaction, BridgeOperationalState state, Set<InstanceIdentifier<OvsdbBridgeAugmentation>> removed, Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> originals) { for (InstanceIdentifier<OvsdbBridgeAugmentation> ovsdbManagedNodeIid: removed) { LOG.debug("Received request to delete ovsdb node : {}", ovsdbManagedNodeIid); OvsdbBridgeAugmentation original = originals.get(ovsdbManagedNodeIid); Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class,null); Optional<OvsdbBridgeAugmentation> ovsdbAugmentationOptional = state .getOvsdbBridgeAugmentation(ovsdbManagedNodeIid); if (ovsdbAugmentationOptional.isPresent() && ovsdbAugmentationOptional.get().getBridgeUuid() != null) { UUID bridgeUuid = new UUID(ovsdbAugmentationOptional.get().getBridgeUuid().getValue()); OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class,null); transaction.add(op.delete(bridge.getSchema()) .where(bridge.getUuidColumn().getSchema().opEqual(bridgeUuid)).build()); transaction.add(op.comment("Bridge: Deleting " + original.getBridgeName())); transaction.add(op.mutate(ovs.getSchema()) .addMutation(ovs.getBridgesColumn().getSchema(), Mutator.DELETE, Sets.newHashSet(bridgeUuid))); transaction.add(op.comment("Open_vSwitch: Mutating " + original.getBridgeName() + " " + bridgeUuid)); LOG.info("Bridge Deleted: {}", ovsdbManagedNodeIid); } else { LOG.warn("Unable to delete bridge {} because it was not found in the operational store, " + "and thus we cannot retrieve its UUID", ovsdbManagedNodeIid); } } } }
.addMutation(bridge.getPortsColumn().getSchema(), Mutator.DELETE, Sets.newHashSet(portUuid)) .where(bridge.getNameColumn().getSchema().opEqual(bridgeName)).build());
private void execute(TransactionBuilder transaction) { Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class); List<Insert> inserts = TransactUtils.extractInsert(transaction, bridge.getSchema()); for (Insert insert : inserts) { OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class); ovs.setBridges(Sets.newHashSet(TransactUtils.extractNamedUuid(insert))); transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(), Mutator.INSERT, ovs.getBridgesColumn().getData())); } } }
.addMutation(bridge.getPortsColumn().getSchema(), Mutator.INSERT, bridge.getPortsColumn().getData()) .where(bridge.getNameColumn().getSchema() .opEqual(bridge.getNameColumn().getData())).build());
OpenvswitchExternalIds::getExternalIdValue)); Mutate<GenericTableSchema> mutate = op.mutate(ovs) .addMutation(ovs.getExternalIdsColumn().getSchema(), Mutator.INSERT, ovs.getExternalIdsColumn().getData()); OpenvswitchOtherConfigs::getOtherConfigKey, OpenvswitchOtherConfigs::getOtherConfigValue)); transaction.add(op.mutate(ovs).addMutation(ovs.getOtherConfigColumn().getSchema(), Mutator.INSERT, ovs.getOtherConfigColumn().getData()));
private void deleteAutoAttach(TransactionBuilder transaction, InstanceIdentifier<OvsdbNodeAugmentation> ovsdbNodeIid, Uuid autoattachUuid) { LOG.debug("Received request to delete Autoattach entry {}", autoattachUuid); final OvsdbBridgeAugmentation bridgeAugmentation = getBridge(ovsdbNodeIid, autoattachUuid); if (autoattachUuid != null && bridgeAugmentation != null) { final UUID uuid = new UUID(autoattachUuid.getValue()); final AutoAttach autoattach = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), AutoAttach.class, null); transaction.add(op.delete(autoattach.getSchema()) .where(autoattach.getUuidColumn().getSchema().opEqual(uuid)) .build()); transaction.add(op.comment("AutoAttach: Deleting {} " + uuid + " attached to " + bridgeAugmentation.getBridgeName().getValue())); final Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class,null); transaction.add(op.mutate(bridge.getSchema()) .addMutation(bridge.getAutoAttachColumn().getSchema(), Mutator.DELETE, Sets.newHashSet(uuid)) .where(bridge.getNameColumn().getSchema() .opEqual(bridgeAugmentation.getBridgeName().getValue())).build()); transaction.add(op.comment("Bridge: Mutating " + bridgeAugmentation.getBridgeName().getValue() + " to remove autoattach column " + uuid)); } else { LOG.debug("Unable to delete AutoAttach {} for node {} because it was not found in the operational store, " + "and thus we cannot retrieve its UUID", autoattachUuid, ovsdbNodeIid); } }