Add blueprint wiring for openstack/net-virt
[netvirt.git] / openstack / net-virt / src / main / java / org / opendaylight / netvirt / openstack / netvirt / NetvirtProvider.java
index 797109466fa98fd4d61a082c83532cf3cab53a52..099e750ae7d9fd75fb6c0b36f3c34b66ed741bfb 100644 (file)
@@ -9,34 +9,40 @@
 package org.opendaylight.netvirt.openstack.netvirt;
 
 import com.google.common.base.Optional;
-import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipState;
-import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.clustering.Entity;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipState;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * @author Sam Hague (shague@redhat.com)
  */
-public class NetvirtProvider implements BindingAwareProvider, AutoCloseable {
+public class NetvirtProvider implements AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtProvider.class);
-    private BundleContext bundleContext = null;
-    private static DataBroker dataBroker = null;
+    private final BundleContext bundleContext;
+    private final DataBroker dataBroker;
     private ConfigActivator activator;
     private static EntityOwnershipService entityOwnershipService;
     private static final Entity ownerInstanceEntity = new Entity(
             Constants.NETVIRT_OWNER_ENTITY_TYPE, Constants.NETVIRT_OWNER_ENTITY_TYPE);
-    private boolean conntrackEnabled = false;
+    private boolean conntrackEnabled;
+    private boolean intBridgeGenMac;
 
-    public NetvirtProvider(BundleContext bundleContext, EntityOwnershipService eos) {
-        LOG.info("NetvirtProvider: bundleContext: {}", bundleContext);
-        this.bundleContext = bundleContext;
-        entityOwnershipService = eos;
+    public NetvirtProvider(final DataBroker dataBroker,
+                           final EntityOwnershipService eos,
+                           final boolean conntrackEnabled,
+                           final boolean intBridgeGenMac) {
+        LOG.info("NetvirtProvider started");
+        this.dataBroker = dataBroker;
+        NetvirtProvider.entityOwnershipService = eos;
+        this.conntrackEnabled = conntrackEnabled;
+        this.intBridgeGenMac = intBridgeGenMac;
+        this.bundleContext = FrameworkUtil.getBundle(NetvirtProvider.class).getBundleContext();
     }
 
     public static boolean isMasterProviderInstance() {
@@ -58,16 +64,17 @@ public class NetvirtProvider implements BindingAwareProvider, AutoCloseable {
     @Override
     public void close() throws Exception {
         LOG.info("NetvirtProvider closed");
-        activator.stop(bundleContext);
+        if (activator != null) {
+            activator.stop(bundleContext);
+        }
     }
 
-    @Override
-    public void onSessionInitiated(ProviderContext providerContext) {
-        dataBroker = providerContext.getSALService(DataBroker.class);
+    public void start() {
         LOG.info("NetvirtProvider: onSessionInitiated dataBroker: {}", dataBroker);
         LOG.info("NetvirtProvider: onSessionInitiated isConntrackEnabled: {}", this.conntrackEnabled);
-        this.activator = new ConfigActivator(providerContext);
+        this.activator = new ConfigActivator(dataBroker);
         activator.setConntrackEnabled(this.conntrackEnabled);
+        activator.setIntBridgeGenMac(this.intBridgeGenMac);
         try {
             activator.start(bundleContext);
         } catch (Exception e) {
@@ -82,4 +89,12 @@ public class NetvirtProvider implements BindingAwareProvider, AutoCloseable {
     public void setConntrackEnabled(boolean conntackEnabled) {
         this.conntrackEnabled = conntackEnabled;
     }
+
+    public boolean getIntBridgeGenMac() {
+        return intBridgeGenMac;
+    }
+
+    public void setIntBridgeGenMac(boolean intBridgeGenMac) {
+        this.intBridgeGenMac = intBridgeGenMac;
+    }
 }