--- /dev/null
+/*
+ * 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();
+ }
+
+}
private DataBroker db;
private OvsdbConnectionManager cm;
private OvsdbNodeDataChangeListener ovsdbNodeListener;
+ private OvsdbManagedNodeDataChangeListener ovsdbManagedNodeListener;
+ private OvsdbTerminationPointDataChangeListener ovsdbTerminationPointListener;
private TransactionInvoker txInvoker;
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();
LOG.info("SouthboundProvider Closed");
cm.close();
ovsdbNodeListener.close();
+ ovsdbManagedNodeListener.close();
+ ovsdbTerminationPointListener.close();
}
private void initializeOvsdbTopology(LogicalDatastoreType type) {