From: Eric Multanen Date: Thu, 26 Feb 2015 15:49:15 +0000 (-0800) Subject: Add Data Change Listeners for Managed Nodes and Ports X-Git-Tag: release/lithium~347 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F06%2F15806%2F5;p=ovsdb.git Add Data Change Listeners for Managed Nodes and Ports Instantiate data change listeners in the OVSDB SoutboundProvider for the OVSDB Managed Node and Port Termination Point augmentations. v2 - updated against merged OVSDB Termination Point augmentation v3 - fixed log message in OvsdbTerminationPoint listener v4 - remove unused imports Change-Id: I699ed9522a5efef5d209c2361583bf0d248239bb Signed-off-by: Eric Multanen --- diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbTerminationPointDataChangeListener.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbTerminationPointDataChangeListener.java new file mode 100644 index 000000000..ec525da4e --- /dev/null +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbTerminationPointDataChangeListener.java @@ -0,0 +1,62 @@ +/* + * 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; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; +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.network.topology.Topology; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OvsdbTerminationPointDataChangeListener implements DataChangeListener, AutoCloseable { + + private ListenerRegistration registration; + private OvsdbConnectionManager cm; + private static final Logger LOG = LoggerFactory.getLogger(OvsdbTerminationPointDataChangeListener.class); + + OvsdbTerminationPointDataChangeListener(DataBroker db, OvsdbConnectionManager cm) { + LOG.info("Registering OvsdbTerminationPointDataChangeListener"); + this.cm = cm; + InstanceIdentifier path = InstanceIdentifier + .create(NetworkTopology.class) + .child(Topology.class, new TopologyKey(SouthboundConstants.OVSDB_TOPOLOGY_ID)) + .child(Node.class) + .child(TerminationPoint.class) + .augmentation(OvsdbTerminationPointAugmentation.class); + registration = db.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, path, this, DataChangeScope.ONE); + + } + + @Override + public void onDataChanged( + AsyncDataChangeEvent, DataObject> changes) { + LOG.info("Received change to ovsdbTerminationPoint: {}", changes); + + // TODO validate we have the correct kind of InstanceIdentifier + // TODO handle case of updates to ovsdb ports as needed + + // TODO handle case of deletes to ovsdb ports as needed + } + + @Override + public void close() throws Exception { + registration.close(); + } + +} diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java index 88713a4f2..9d9ea1d58 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java @@ -35,6 +35,8 @@ public class SouthboundProvider implements BindingAwareProvider, AutoCloseable { private DataBroker db; private OvsdbConnectionManager cm; private OvsdbNodeDataChangeListener ovsdbNodeListener; + private OvsdbManagedNodeDataChangeListener ovsdbManagedNodeListener; + private OvsdbTerminationPointDataChangeListener ovsdbTerminationPointListener; private TransactionInvoker txInvoker; @@ -45,6 +47,8 @@ public class SouthboundProvider implements BindingAwareProvider, AutoCloseable { this.txInvoker = new TransactionInvokerImpl(db); cm = new OvsdbConnectionManager(db,txInvoker); 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(); @@ -57,6 +61,8 @@ public class SouthboundProvider implements BindingAwareProvider, AutoCloseable { LOG.info("SouthboundProvider Closed"); cm.close(); ovsdbNodeListener.close(); + ovsdbManagedNodeListener.close(); + ovsdbTerminationPointListener.close(); } private void initializeOvsdbTopology(LogicalDatastoreType type) {