2 * Copyright (c) 2015 Red Hat, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.ovsdb.openstack.netvirt.impl;
10 import com.google.common.collect.Sets;
11 import java.net.InetAddress;
12 import java.util.List;
14 import org.apache.felix.dm.Component;
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
16 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
19 import org.opendaylight.ovsdb.openstack.netvirt.MdsalUtils;
20 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
21 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
28 * MdsalConsumerImpl is the implementation for {@link OvsdbInventoryService}
30 * @author Sam Hague (shague@redhat.com)
32 public class OvsdbInventoryServiceImpl implements BindingAwareConsumer, OvsdbInventoryService {
33 private static final Logger LOG = LoggerFactory.getLogger(OvsdbInventoryServiceImpl.class);
34 private static DataBroker dataBroker = null;
36 private static Set<OvsdbInventoryListener> mdsalConsumerListeners = Sets.newCopyOnWriteArraySet();
37 private OvsdbDataChangeListener ovsdbDataChangeListener = null;
38 private static MdsalUtils mdsalUtils = null;
39 private volatile BindingAwareBroker broker; // dependency injection
40 private ConsumerContext consumerContext = null;
42 void init(Component c) {
43 LOG.info(">>>>> init OvsdbInventoryServiceImpl");
44 LOG.info(">>>>> Netvirt Provider Registered with MD-SAL");
45 broker.registerConsumer(this, c.getDependencyManager().getBundleContext());
49 LOG.info(">>>>> start OvsdbInventoryServiceImpl");
53 // Now lets close MDSAL session
54 if (this.consumerContext != null) {
55 //this.consumerContext.close();
56 this.dataBroker = null;
57 this.consumerContext = null;
61 public void onSessionInitialized (ConsumerContext consumerContext) {
62 this.consumerContext = consumerContext;
63 dataBroker = consumerContext.getSALService(DataBroker.class);
64 LOG.info("netvirt MdsalConsumer initialized");
65 ovsdbDataChangeListener = new OvsdbDataChangeListener(dataBroker);
66 mdsalUtils = new MdsalUtils(dataBroker);
70 public static DataBroker getDataBroker () {
74 private void listenerAdded(OvsdbInventoryListener listener) {
75 mdsalConsumerListeners.add(listener);
76 LOG.info("listenerAdded: {}", listener);
79 private void listenerRemoved(OvsdbInventoryListener listener) {
80 mdsalConsumerListeners.remove(listener);
81 LOG.info("listenerRemoved: {}", listener);
84 public InetAddress getTunnelEndPoint(Node node) {
88 public String getNodeUUID(Node node) {
93 public String getBridgeUUID(String bridgeName) {
97 public static Set<OvsdbInventoryListener> getMdsalConsumerListeners () {
98 return mdsalConsumerListeners;