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;
15 import org.apache.felix.dm.Component;
16 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
17 //import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
19 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
20 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
21 import org.opendaylight.ovsdb.openstack.netvirt.api.Connection;
22 import org.opendaylight.ovsdb.openstack.netvirt.api.ConnectionConstants;
23 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbConnectionService;
24 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
25 import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
32 * MdsalConsumerImpl is the implementation for {@link OvsdbInventoryService}
34 * @author Sam Hague (shague@redhat.com)
36 public class OvsdbInventoryServiceImpl implements BindingAwareConsumer,
37 OvsdbConnectionService, OvsdbInventoryService {
38 private static final Logger LOG = LoggerFactory.getLogger(OvsdbInventoryServiceImpl.class);
39 private static DataBroker dataBroker = null;
41 private static Set<OvsdbInventoryListener> mdsalConsumerListeners = Sets.newCopyOnWriteArraySet();
42 private OvsdbDataChangeListener ovsdbDataChangeListener = null;
43 private static MdsalUtils mdsalUtils = null;
44 private volatile BindingAwareBroker broker; // dependency injection
45 private ConsumerContext consumerContext = null;
47 void init(Component c) {
48 LOG.info(">>>>> init OvsdbInventoryServiceImpl");
49 LOG.info(">>>>> Netvirt Provider Registered with MD-SAL");
50 broker.registerConsumer(this, c.getDependencyManager().getBundleContext());
54 LOG.info(">>>>> start OvsdbInventoryServiceImpl");
58 // Now lets close MDSAL session
59 if (this.consumerContext != null) {
60 //this.consumerContext.close();
61 this.dataBroker = null;
62 this.consumerContext = null;
66 public void onSessionInitialized (ConsumerContext consumerContext) {
67 this.consumerContext = consumerContext;
68 dataBroker = consumerContext.getSALService(DataBroker.class);
69 LOG.info("netvirt MdsalConsumer initialized");
70 ovsdbDataChangeListener = new OvsdbDataChangeListener(dataBroker);
71 mdsalUtils = new MdsalUtils(dataBroker);
75 public static DataBroker getDataBroker () {
79 private void listenerAdded(OvsdbInventoryListener listener) {
80 mdsalConsumerListeners.add(listener);
81 LOG.info("listenerAdded: {}", listener);
84 private void listenerRemoved(OvsdbInventoryListener listener) {
85 mdsalConsumerListeners.remove(listener);
86 LOG.info("listenerRemoved: {}", listener);
89 public InetAddress getTunnelEndPoint(Node node) {
93 public String getNodeUUID(Node node) {
98 public String getBridgeUUID(String bridgeName) {
102 public static Set<OvsdbInventoryListener> getMdsalConsumerListeners () {
103 return mdsalConsumerListeners;
107 public Connection getConnection(Node node) {
112 public List<Node> getNodes() {
117 public List<Node> getOvsdbNodes() {
122 public List<Node> getBridgeNodes() {
127 public Node getNode(String identifier) {
132 public Node connect(String identifier, Map<ConnectionConstants, String> params) {