- 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.registerConnectionListener(cm);
- ovsdbConnection.startOvsdbManager(SouthboundConstants.DEFAULT_OVSDB_PORT);
+ cm = new OvsdbConnectionManager(db,txInvoker,entityOwnershipService, ovsdbConnection);
+ ovsdbDataTreeChangeListener = new OvsdbDataTreeChangeListener(db, cm);
+
+ //Register listener for entityOnwership changes
+ providerOwnershipChangeListener =
+ new SouthboundPluginInstanceEntityOwnershipListener(this,this.entityOwnershipService);
+ entityOwnershipService.registerListener(ENTITY_TYPE,providerOwnershipChangeListener);
+
+ //register instance entity to get the ownership of the provider
+ Entity instanceEntity = new Entity(ENTITY_TYPE, ENTITY_TYPE);
+ try {
+ Optional<EntityOwnershipState> ownershipStateOpt = entityOwnershipService.getOwnershipState(instanceEntity);
+ registration = entityOwnershipService.registerCandidate(instanceEntity);
+ if (ownershipStateOpt.isPresent()) {
+ EntityOwnershipState ownershipState = ownershipStateOpt.get();
+ if (ownershipState.hasOwner() && !ownershipState.isOwner()) {
+ ovsdbConnection.registerConnectionListener(cm);
+ ovsdbConnection.startOvsdbManager(SouthboundConstants.DEFAULT_OVSDB_PORT);
+ LOG.info("*This* instance of OVSDB southbound provider is set as a SLAVE instance");
+ }
+ }
+ } catch (CandidateAlreadyRegisteredException e) {
+ LOG.warn("OVSDB Southbound Provider instance entity {} was already "
+ + "registered for ownership", instanceEntity, e);
+ }