this.db = db;
this.txInvoker = txInvoker;
this.entityOwnershipService = entityOwnershipService;
- this.hwvtepDeviceEntityOwnershipListener = new HwvtepDeviceEntityOwnershipListener(this,entityOwnershipService);
- this.reconciliationManager = new ReconciliationManager(db);
- this.hwvtepOperGlobalListener = new HwvtepOperGlobalListener(db, this);
+ hwvtepDeviceEntityOwnershipListener = new HwvtepDeviceEntityOwnershipListener(this,entityOwnershipService);
+ reconciliationManager = new ReconciliationManager(db);
+ hwvtepOperGlobalListener = new HwvtepOperGlobalListener(db, this);
this.ovsdbConnectionService = ovsdbConnectionService;
}
@Override
- public void close() throws Exception {
+ public void close() {
if (hwvtepDeviceEntityOwnershipListener != null) {
hwvtepDeviceEntityOwnershipListener.close();
}
hwvtepOperGlobalListener.close();
}
- for (HwvtepConnectionInstance client: clients.values()) {
+ for (HwvtepConnectionInstance client : clients.values()) {
client.disconnect();
}
DependencyQueue.close();
}
public void reconcileConnection(final InstanceIdentifier<Node> iid, final HwvtepGlobalAugmentation hwvtepNode) {
- this.retryConnection(iid, hwvtepNode,
+ retryConnection(iid, hwvtepNode,
ConnectionReconciliationTriggers.ON_CONTROLLER_INITIATED_CONNECTION_FAILURE);
}
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
-import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
-public class HwvtepSouthboundProvider
+@Component(service = HwvtepSouthboundProviderInfo.class)
+public final class HwvtepSouthboundProvider
implements HwvtepSouthboundProviderInfo, ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundProvider.class);
private ListenerRegistration<HwvtepSouthboundProvider> operTopologyRegistration;
@Inject
- public HwvtepSouthboundProvider(final DataBroker dataBroker, final EntityOwnershipService entityOwnership,
- final OvsdbConnection ovsdbConnection, final DOMSchemaService schemaService,
- final BindingNormalizedNodeSerializer serializer) {
+ @Activate
+ public HwvtepSouthboundProvider(@Reference final DataBroker dataBroker,
+ @Reference final EntityOwnershipService entityOwnership,
+ @Reference final OvsdbConnection ovsdbConnection, @Reference final DOMSchemaService schemaService,
+ @Reference final BindingNormalizedNodeSerializer serializer) {
this.dataBroker = dataBroker;
entityOwnershipService = entityOwnership;
registration = null;
// FIXME: eliminate this static wiring
HwvtepSouthboundUtil.setInstanceIdentifierCodec(new InstanceIdentifierCodec(schemaService, serializer));
LOG.info("HwvtepSouthboundProvider ovsdbConnectionService: {}", ovsdbConnection);
- }
-
- /**
- * Used by blueprint when starting the container.
- */
- @PostConstruct
- public void init() {
- LOG.info("HwvtepSouthboundProvider Session Initiated");
txInvoker = new TransactionInvokerImpl(dataBroker);
cm = new HwvtepConnectionManager(dataBroker, txInvoker, entityOwnershipService, ovsdbConnection);
hwvtepDTListener = new HwvtepDataChangeListener(dataBroker, cm);
LOG.error("Timed out to get eos notification opening the port now");
}
}, HwvtepSouthboundConstants.PORT_OPEN_MAX_DELAY_IN_MINS, TimeUnit.MINUTES);
+
+ LOG.info("HwvtepSouthboundProvider Session Initiated");
}
- @Override
@PreDestroy
- @SuppressWarnings("checkstyle:IllegalCatch")
- public void close() throws Exception {
- LOG.info("HwvtepSouthboundProvider Closed");
+ @Deactivate
+ @Override
+ public void close() {
if (txInvoker != null) {
- try {
- txInvoker.close();
- txInvoker = null;
- } catch (Exception e) {
- LOG.error("HWVTEP Southbound Provider failed to close TransactionInvoker", e);
- }
+ txInvoker.close();
+ txInvoker = null;
}
if (cm != null) {
cm.close();
operTopologyRegistration.close();
operTopologyRegistration = null;
}
+ LOG.info("HwvtepSouthboundProvider Closed");
}
private void initializeHwvtepTopology(final LogicalDatastoreType type) {
}
}
-
-
private void openOvsdbPort() {
if (!registered.getAndSet(true)) {
LOG.info("Starting the ovsdb port");
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
- <!-- FIXME: Auto-generated, to be migrated -->
- <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
- <reference id="bindingNormalizedNodeSerializer" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer"/>
- <reference id="dOMSchemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService"/>
- <reference id="entityOwnershipService" interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService"/>
- <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection"/>
- <bean id="hwvtepSouthboundProvider" class="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider" init-method="init" destroy-method="close">
- <argument ref="dataBroker"/>
- <argument ref="entityOwnershipService"/>
- <argument ref="ovsdbConnection"/>
- <argument ref="dOMSchemaService"/>
- <argument ref="bindingNormalizedNodeSerializer"/>
- </bean>
- <service ref="hwvtepSouthboundProvider" interface="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProviderInfo"/>
-</blueprint>