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;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
14 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
15 import org.opendaylight.ovsdb.openstack.netvirt.MdsalUtils;
16 import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
17 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
18 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
19 import org.osgi.framework.BundleContext;
20 import org.osgi.framework.ServiceReference;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
25 * MdsalConsumerImpl is the implementation for {@link OvsdbInventoryService}
27 * @author Sam Hague (shague@redhat.com)
29 public class OvsdbInventoryServiceImpl implements ConfigInterface, OvsdbInventoryService {
30 private static final Logger LOG = LoggerFactory.getLogger(OvsdbInventoryServiceImpl.class);
31 private static DataBroker dataBroker = null;
32 private static Set<OvsdbInventoryListener> mdsalConsumerListeners = Sets.newCopyOnWriteArraySet();
33 private OvsdbDataChangeListener ovsdbDataChangeListener = null;
34 private static MdsalUtils mdsalUtils = null;
35 private volatile BindingAwareBroker broker; // dependency injection
36 //private ConsumerContext consumerContext = null;
38 public OvsdbInventoryServiceImpl(ProviderContext providerContext) {
39 dataBroker = providerContext.getSALService(DataBroker.class);
40 LOG.info("netvirt MdsalConsumer initialized");
41 ovsdbDataChangeListener = new OvsdbDataChangeListener(dataBroker);
42 mdsalUtils = new MdsalUtils(dataBroker);
45 /*void init(Component c) {
46 LOG.info(">>>>> init OvsdbInventoryServiceImpl");
47 LOG.info(">>>>> Netvirt Provider Registered with MD-SAL");
48 broker.registerConsumer(this, c.getDependencyManager().getBundleContext());
52 LOG.info(">>>>> start OvsdbInventoryServiceImpl");
56 // Now lets close MDSAL session
57 if (this.consumerContext != null) {
58 //this.consumerContext.close();
59 this.dataBroker = null;
60 this.consumerContext = null;
64 public void onSessionInitialized (ConsumerContext consumerContext) {
65 this.consumerContext = consumerContext;
66 dataBroker = consumerContext.getSALService(DataBroker.class);
67 LOG.info("netvirt MdsalConsumer initialized");
68 ovsdbDataChangeListener = new OvsdbDataChangeListener(dataBroker);
69 mdsalUtils = new MdsalUtils(dataBroker);
73 /*public static DataBroker getDataBroker() {
78 public void listenerAdded(OvsdbInventoryListener listener) {
79 mdsalConsumerListeners.add(listener);
80 LOG.info("listenerAdded: {}", listener);
84 public void listenerRemoved(OvsdbInventoryListener listener) {
85 mdsalConsumerListeners.remove(listener);
86 LOG.info("listenerRemoved: {}", listener);
90 public void providersReady() {
91 ovsdbDataChangeListener.start();
94 public static Set<OvsdbInventoryListener> getMdsalConsumerListeners() {
95 return mdsalConsumerListeners;
99 public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {}
102 public void setDependencies(Object impl) {}