1 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
3 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
8 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
9 import org.opendaylight.ovsdb.lib.notation.Mutator;
10 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
11 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
12 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
13 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
16 import org.opendaylight.yangtools.yang.binding.DataObject;
17 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
19 import com.google.common.base.Optional;
20 import com.google.common.collect.Sets;
22 public class ProtocolRemovedCommand extends AbstractTransactCommand {
24 private Set<InstanceIdentifier<ProtocolEntry>> removed;
25 private Map<InstanceIdentifier<ProtocolEntry>, ProtocolEntry> operationalProtocolEntries;
26 private Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> updatedBridges;
28 public ProtocolRemovedCommand(BridgeOperationalState state,
29 AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
30 super(state, changes);
31 removed = TransactUtils.extractRemoved(getChanges(),ProtocolEntry.class);
32 operationalProtocolEntries = TransactUtils.extractOriginal(getChanges(),ProtocolEntry.class);
33 updatedBridges = TransactUtils.extractCreatedOrUpdatedOrRemoved(getChanges(),OvsdbBridgeAugmentation.class);
37 public void execute(TransactionBuilder transaction) {
38 for (InstanceIdentifier<ProtocolEntry> protocolIid : removed) {
39 InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid =
40 protocolIid.firstIdentifierOf(OvsdbBridgeAugmentation.class);
41 OvsdbBridgeAugmentation ovsdbBridge = updatedBridges.get(bridgeIid);
42 Optional<ProtocolEntry> protocolEntryOptional = getOperationalState().getProtocolEntry(protocolIid);
43 if (ovsdbBridge != null
44 && protocolEntryOptional.isPresent()) {
45 ProtocolEntry protocolEntry = protocolEntryOptional.get();
46 if (protocolEntry != null && protocolEntry.getProtocol() != null) {
47 Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
48 String protocolString = SouthboundConstants.OVSDB_PROTOCOL_MAP.get(protocolEntry.getProtocol());
49 if (protocolString != null) {
50 bridge.setProtocols(Sets.newHashSet(protocolString));
51 transaction.add(op.mutate(bridge).addMutation(bridge.getProtocolsColumn().getSchema(),
52 Mutator.DELETE, bridge.getProtocolsColumn().getData()));