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;
13 import org.apache.felix.dm.Component;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 //import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
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.api.MdsalConsumer;
20 import org.opendaylight.ovsdb.openstack.netvirt.api.MdsalConsumerListener;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
27 * MdsalConsumerImpl is the implementation for {@link MdsalConsumer}
29 * @author Sam Hague (shague@redhat.com)
31 public class MdsalConsumerImpl implements BindingAwareConsumer, MdsalConsumer {
32 private static final Logger LOG = LoggerFactory.getLogger(MdsalConsumerImpl.class);
33 private static DataBroker dataBroker = null;
35 private static Set<MdsalConsumerListener> mdsalConsumerListeners = Sets.newCopyOnWriteArraySet();
36 private OvsdbDataChangeListener ovsdbDataChangeListener = null;
37 private static MdsalUtils mdsalUtils = null;
38 private volatile BindingAwareBroker broker; // dependency injection
39 private ConsumerContext consumerContext = null;
41 void init(Component c) {
42 LOG.info(">>>>> Netvirt Provider Registered with MD-SAL");
43 broker.registerConsumer(this, c.getDependencyManager().getBundleContext());
47 // Now lets close MDSAL session
48 if (this.consumerContext != null) {
49 //this.consumerContext.close();
50 this.dataBroker = null;
51 this.consumerContext = null;
55 public void onSessionInitialized (ConsumerContext consumerContext) {
56 this.consumerContext = consumerContext;
57 dataBroker = consumerContext.getSALService(DataBroker.class);
58 LOG.info("netvirt MdsalConsumer initialized");
59 ovsdbDataChangeListener = new OvsdbDataChangeListener(dataBroker);
60 mdsalUtils = new MdsalUtils(dataBroker);
64 public static DataBroker getDataBroker () {
68 private void listenerAdded(MdsalConsumerListener listener) {
69 this.mdsalConsumerListeners.add(listener);
70 LOG.info("listenerAdded: {}", listener);
73 private void listenerRemoved(MdsalConsumerListener listener) {
74 this.mdsalConsumerListeners.remove(listener);
75 LOG.info("listenerRemoved: {}", listener);
78 public InetAddress getTunnelEndPoint(Node node) {
82 public String getNodeUUID(Node node) {
87 public String getBridgeUUID(String bridgeName) {
91 // get vlan and network id
93 public static Set<MdsalConsumerListener> getMdsalConsumerListeners () {
94 return mdsalConsumerListeners;