X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=southbound%2Fsouthbound-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fovsdb%2Fsouthbound%2Fovsdb%2Ftransact%2FBridgeRemovedCommand.java;h=6f1c383d31bdd35cdf0d9d779f50bda1bf5fbeb6;hb=50e7f939993fa9da3c80a1c8d166629a4868af9c;hp=eddc4ff0f3fa380fb4251b58ddabe75c64488477;hpb=5388a7dfb731ef7eb38d979b35221eb17135d0e1;p=ovsdb.git diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeRemovedCommand.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeRemovedCommand.java index eddc4ff0f..6f1c383d3 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeRemovedCommand.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeRemovedCommand.java @@ -1,16 +1,22 @@ +/* + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + package org.opendaylight.ovsdb.southbound.ovsdb.transact; import static org.opendaylight.ovsdb.lib.operations.Operations.op; +import com.google.common.base.Optional; +import com.google.common.collect.Sets; +import java.util.Collection; import java.util.Map; import java.util.Set; -import java.util.concurrent.ExecutionException; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; +import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.ovsdb.lib.notation.Mutator; import org.opendaylight.ovsdb.lib.notation.UUID; import org.opendaylight.ovsdb.lib.operations.TransactionBuilder; @@ -18,39 +24,40 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils; import org.opendaylight.ovsdb.schema.openvswitch.Bridge; import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Optional; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.CheckedFuture; - public class BridgeRemovedCommand implements TransactCommand { private static final Logger LOG = LoggerFactory.getLogger(BridgeRemovedCommand.class); - private AsyncDataChangeEvent, DataObject> changes; - private DataBroker db; - public BridgeRemovedCommand(DataBroker db, AsyncDataChangeEvent, - DataObject> changes) { - this.db = db; - this.changes = changes; + @Override + public void execute(TransactionBuilder transaction, BridgeOperationalState state, + AsyncDataChangeEvent, DataObject> events) { + execute(transaction, state, TransactUtils.extractRemoved(events, OvsdbBridgeAugmentation.class), + TransactUtils.extractOriginal(events, OvsdbBridgeAugmentation.class)); } @Override - public void execute(TransactionBuilder transaction) { - Set> removed = - TransactUtils.extractRemoved(changes,OvsdbBridgeAugmentation.class); - Map, OvsdbBridgeAugmentation> originals - = TransactUtils.extractOriginal(changes,OvsdbBridgeAugmentation.class); + public void execute(TransactionBuilder transaction, BridgeOperationalState state, + Collection> modifications) { + execute(transaction, state, TransactUtils.extractRemoved(modifications, OvsdbBridgeAugmentation.class), + TransactUtils.extractOriginal(modifications, OvsdbBridgeAugmentation.class)); + } + + private void execute(TransactionBuilder transaction, BridgeOperationalState state, + Set> removed, + Map, OvsdbBridgeAugmentation> originals) { for (InstanceIdentifier ovsdbManagedNodeIid: removed) { LOG.info("Received request to delete ovsdb node {}",ovsdbManagedNodeIid); OvsdbBridgeAugmentation original = originals.get(ovsdbManagedNodeIid); Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class,null); - Optional bridgeUuidOptional = getBridgeUUID(ovsdbManagedNodeIid); - if (bridgeUuidOptional.isPresent()) { - UUID bridgeUuid = bridgeUuidOptional.get(); + Optional 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()) @@ -67,28 +74,4 @@ public class BridgeRemovedCommand implements TransactCommand { } } - - private Optional getBridgeUUID(InstanceIdentifier ovsdbManagedNodeIid) { - Optional result = Optional.absent(); - ReadOnlyTransaction transaction = db.newReadOnlyTransaction(); - CheckedFuture, ReadFailedException> future - = transaction.read(LogicalDatastoreType.OPERATIONAL, ovsdbManagedNodeIid); - Optional optional; - try { - optional = future.get(); - if (optional.isPresent()) { - OvsdbBridgeAugmentation bridge = (OvsdbBridgeAugmentation) optional.get(); - if (bridge != null && bridge.getBridgeUuid() != null) { - result = Optional.of(new UUID(bridge.getBridgeUuid().getValue())); - } - } - } catch (InterruptedException e) { - LOG.warn("Unable to retrieve bridge from operational store",e); - } catch (ExecutionException e) { - LOG.warn("Unable to retrieve bridge from operational store",e); - } - transaction.close(); - return result; - } - }