+/*
+ * 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.collect.Sets;
+import java.util.Collection;
import java.util.List;
-
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.ovsdb.lib.notation.Mutator;
-import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.lib.operations.Insert;
-import org.opendaylight.ovsdb.lib.operations.Operation;
import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
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.ovsdb.southbound.SouthboundMapper;
-
-import com.google.common.collect.Sets;
+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;
public class OpenVSwitchBridgeAddCommand implements TransactCommand {
@Override
- public void execute(TransactionBuilder transaction) {
- List<Operation> operations = transaction.getOperations();
- Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
- for (int count = 0;count < operations.size();count++) {
- Operation operation = operations.get(count);
- if (operation instanceof Insert && operation.getTableSchema().equals(bridge.getSchema())) {
- Insert insert = (Insert)operation;
- String uuidString = insert.getUuidName() != null
- ? insert.getUuidName() : SouthboundMapper.getRandomUUID();
- insert.setUuidName(uuidString);
+ public void execute(TransactionBuilder transaction, BridgeOperationalState state,
+ AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> events) {
+ execute(transaction);
+ }
- // OpenVSwitchPart
- UUID uuid = new UUID(uuidString);
- OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class);
- ovs.setBridges(Sets.newHashSet(uuid));
- transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(),
- Mutator.INSERT,
- ovs.getBridgesColumn().getData()));
- }
+ @Override
+ public void execute(TransactionBuilder transaction, BridgeOperationalState state,
+ Collection<DataTreeModification<Node>> modifications) {
+ execute(transaction);
+ }
+
+ 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()));
}
}
}