Squashed commit of the following:
[ovsdb.git] / openstack / net-virt-providers / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / providers / openflow13 / MdsalConsumerImpl.java
1 /*
2  * Copyright (C) 2013 Red Hat, Inc.
3  *
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
7  *
8  * Authors : Madhu Venugopal
9  */
10
11 package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
12
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.ConsumerContext;
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
19 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
20 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
21 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
22 import org.osgi.framework.BundleContext;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25 public class MdsalConsumerImpl implements BindingAwareConsumer, MdsalConsumer, BindingAwareProvider {
26
27     private BundleContext ctx = null;
28     private volatile BindingAwareBroker broker;
29     private ConsumerContext consumerContext = null;
30     private DataBroker dataBroker;
31     private NotificationProviderService notificationService;
32
33     static final Logger logger = LoggerFactory.getLogger(MdsalConsumerImpl.class);
34
35     void init(Component c) {
36         this.ctx = c.getDependencyManager().getBundleContext();
37         logger.info("Open vSwitch OpenFlow 1.3 Neutron Networking Provider Registered with MD-SAL");
38         broker.registerConsumer(this, this.ctx);
39         broker.registerProvider(this, this.ctx);
40     }
41
42     void destroy() {
43         // Now lets close MDSAL session
44         if (this.consumerContext != null) {
45             //this.consumerContext.close();
46             this.dataBroker = null;
47             this.consumerContext = null;
48         }
49     }
50
51     @Override
52     public void onSessionInitialized(ConsumerContext session) {
53         this.consumerContext = session;
54         dataBroker = session.getSALService(DataBroker.class);
55         logger.info("OVSDB Neutron Session Initialized with CONSUMER CONTEXT {}", session.toString());
56     }
57
58     @Override
59     public ConsumerContext getConsumerContext() {
60         return consumerContext;
61     }
62     @Override
63     public DataBroker getDataBroker() {
64         return dataBroker;
65     }
66     @Override
67     public NotificationProviderService getNotificationService() {
68         return notificationService;
69     }
70
71     @Override
72     public void onSessionInitiated(ProviderContext session) {
73         notificationService = session.getSALService(NotificationProviderService.class);
74     }
75 }