Add Data Change Listeners for Managed Nodes and Ports 06/15806/5
authorEric Multanen <eric.w.multanen@intel.com>
Thu, 26 Feb 2015 15:49:15 +0000 (07:49 -0800)
committerEric Multanen <eric.w.multanen@intel.com>
Fri, 27 Feb 2015 16:02:42 +0000 (08:02 -0800)
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 <eric.w.multanen@intel.com>
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbTerminationPointDataChangeListener.java [new file with mode: 0644]
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java

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 (file)
index 0000000..ec525da
--- /dev/null
@@ -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<DataChangeListener> 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<OvsdbTerminationPointAugmentation> 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<InstanceIdentifier<?>, 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();
+    }
+
+}
index 88713a4f22066cf1ea1b6080ed9fd49eb4fc42a4..9d9ea1d58ee9cfb4b2c9e866116778efa47f7dbf 100644 (file)
@@ -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) {