import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
import org.opendaylight.ovsdb.lib.OvsdbConnection;
import org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService;
+import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvoker;
+import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvokerImpl;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopologyBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
public class SouthboundProvider implements BindingAwareProvider, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(SouthboundProvider.class);
- private DataBroker db;
- private OvsdbConnectionManager cm;
- private OvsdbNodeDataChangeListener ovsdbNodeListener;
+ public static DataBroker getDb() {
+ return db;
+ }
+
+ //private DataBroker db;
+ private static DataBroker db;
+ private OvsdbConnectionManager cm;
+// private OvsdbNodeDataChangeListener ovsdbNodeListener;
+// private OvsdbManagedNodeDataChangeListener ovsdbManagedNodeListener;
+// private OvsdbTerminationPointDataChangeListener ovsdbTerminationPointListener;
+ private TransactionInvoker txInvoker;
+ private OvsdbDataChangeListener ovsdbDataChangeListener;
@Override
public void onSessionInitiated(ProviderContext session) {
LOG.info("SouthboundProvider Session Initiated");
db = session.getSALService(DataBroker.class);
- cm = new OvsdbConnectionManager(db);
- ovsdbNodeListener = new OvsdbNodeDataChangeListener(db, cm);
+ this.txInvoker = new TransactionInvokerImpl(db);
+ cm = new OvsdbConnectionManager(db,txInvoker);
+ ovsdbDataChangeListener = new OvsdbDataChangeListener(db,cm);
+// ovsdbNodeListener = new OvsdbNodeDataChangeListener(db, cm);
+// ovsdbManagedNodeListener = new OvsdbManagedNodeDataChangeListener(db, cm);
+// ovsdbTerminationPointListener = new OvsdbTerminationPointDataChangeListener(db, cm);
initializeOvsdbTopology(LogicalDatastoreType.OPERATIONAL);
initializeOvsdbTopology(LogicalDatastoreType.CONFIGURATION);
OvsdbConnection ovsdbConnection = new OvsdbConnectionService();
public void close() throws Exception {
LOG.info("SouthboundProvider Closed");
cm.close();
- ovsdbNodeListener.close();
+ ovsdbDataChangeListener.close();
+// ovsdbNodeListener.close();
+// ovsdbManagedNodeListener.close();
+// ovsdbTerminationPointListener.close();
}
private void initializeOvsdbTopology(LogicalDatastoreType type) {
initializeTopology(transaction,type);
CheckedFuture<Optional<Topology>, ReadFailedException> ovsdbTp = transaction.read(type, path);
try {
- if(!ovsdbTp.get().isPresent()) {
+ if (!ovsdbTp.get().isPresent()) {
TopologyBuilder tpb = new TopologyBuilder();
tpb.setTopologyId(SouthboundConstants.OVSDB_TOPOLOGY_ID);
transaction.put(type, path, tpb.build());
}
}
- private void initializeTopology(ReadWriteTransaction t, LogicalDatastoreType type) {
- InstanceIdentifier<NetworkTopology> path = InstanceIdentifier
- .create(NetworkTopology.class);
- CheckedFuture<Optional<NetworkTopology>, ReadFailedException> tp = t.read(type,path);
- try {
- if(!tp.get().isPresent()) {
- NetworkTopologyBuilder ntb = new NetworkTopologyBuilder();
- t.put(type,path,ntb.build());
- }
- } catch (Exception e) {
- LOG.error("Error initializing ovsdb topology {}",e);
- }
+ private void initializeTopology(ReadWriteTransaction transaction, LogicalDatastoreType type) {
+ InstanceIdentifier<NetworkTopology> path = InstanceIdentifier.create(NetworkTopology.class);
+ CheckedFuture<Optional<NetworkTopology>, ReadFailedException> topology = transaction.read(type,path);
+ try {
+ if (!topology.get().isPresent()) {
+ NetworkTopologyBuilder ntb = new NetworkTopologyBuilder();
+ transaction.put(type,path,ntb.build());
+ }
+ } catch (Exception e) {
+ LOG.error("Error initializing ovsdb topology {}",e);
+ }
}
}