Add blueprint wiring for openstack/net-virt-providers 08/39008/21
authorAlexis de Talhouët <adetalhouet@inocybe.com>
Tue, 17 May 2016 19:56:46 +0000 (15:56 -0400)
committerAlexis de Talhouët <adetalhouet@inocybe.com>
Thu, 30 Jun 2016 17:46:22 +0000 (17:46 +0000)
Change-Id: If0d6691d9cd77666c65c2c4a2751acfbae660572
Signed-off-by: Alexis de Talhouët <adetalhouet@inocybe.com>
14 files changed:
features/pom.xml
features/src/main/features/features.xml
openstack/net-virt-providers/src/main/config/default-config.xml [deleted file]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/ConfigActivator.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersProvider.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/AbstractServiceInstance.java
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/GatewayMacResolverService.java
openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModule.java [deleted file]
openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModuleFactory.java [deleted file]
openstack/net-virt-providers/src/main/resources/org/opendaylight/blueprint/netvirt-provider.xml [new file with mode: 0644]
openstack/net-virt-providers/src/main/yang/netvirt-providers-config.yang
openstack/net-virt-providers/src/main/yang/netvirt-providers-impl.yang [deleted file]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersProviderTest.java
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestratorImplTest.java

index 8964c53740c580ff14fbf963c0680fc6f0286dc9..899593b5407591fc4bd5e6232dee825bcdea136a 100644 (file)
@@ -175,13 +175,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>openstack.net-virt-providers</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-providers</artifactId>
-      <version>${project.version}</version>
-      <type>xml</type>
-      <classifier>config</classifier>
-    </dependency>
     <dependency>
       <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>schema.openvswitch</artifactId>
index c2f3a3f210d316e6c0fd6828f246b8f0078cd3b8..187238100db320b45984e2648500b2105afaea53 100644 (file)
@@ -29,7 +29,6 @@
     <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt/{{VERSION}}</bundle>
     <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}</bundle>
     <bundle>mvn:commons-net/commons-net/{{VERSION}}</bundle>
-    <configfile finalname="etc/opendaylight/karaf/netvirt-providers-impl-default-config.xml">mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}/xml/config</configfile>
   </feature>
 
   <feature name="odl-ovsdb-openstack-it" description="OpenDaylight :: OVSDB :: OpenStack Network Virtualization IT"
diff --git a/openstack/net-virt-providers/src/main/config/default-config.xml b/openstack/net-virt-providers/src/main/config/default-config.xml
deleted file mode 100644 (file)
index 692e6da..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<snapshot>
-  <required-capabilities>
-    <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
-    <capability>urn:opendaylight:params:xml:ns:yang:netvirt:impl?module=netvirt-impl&amp;revision=2015-05-13</capability>
-    <capability>urn:opendaylight:params:xml:ns:yang:netvirt:providers:impl?module=netvirt-providers-impl&amp;revision=2015-05-13</capability>
-  </required-capabilities>
-  <configuration>
-    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-        <module>
-          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:netvirt:providers:impl">prefix:netvirt-providers-impl</type>
-          <name>netvirt-providers-default</name>
-          <table-offset>0</table-offset>
-          <broker>
-            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
-            <name>binding-osgi-broker</name>
-          </broker>
-          <clustering-entity-ownership-service>
-            <type xmlns:ns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:entity-ownership-service">ns:entity-ownership-service</type>
-            <name>entity-ownership-service</name>
-          </clustering-entity-ownership-service>
-        </module>
-      </modules>
-    </data>
-  </configuration>
-</snapshot>
index 1d83566e2bfb611afc3b42971458369ba42c3853..ba44198f15f8ecca8025084d987b89db3aa1f859 100644 (file)
@@ -8,14 +8,20 @@
 
 package org.opendaylight.netvirt.openstack.netvirt.providers;
 
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.List;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
 import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.ClassifierProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
 import org.opendaylight.netvirt.openstack.netvirt.api.IcmpEchoProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.L2ForwardingProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.L2RewriteProvider;
@@ -23,12 +29,14 @@ import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
 import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
 import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
 import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.OF13Provider;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.ArpResponderService;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.ClassifierService;
@@ -43,11 +51,8 @@ import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.OutboundNatService;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.RoutingService;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp.GatewayMacResolverService;
-import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
-import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
-import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -56,18 +61,23 @@ import org.osgi.util.tracker.ServiceTracker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.List;
-
 public class ConfigActivator implements BundleActivator {
     private static final Logger LOG = LoggerFactory.getLogger(ConfigActivator.class);
     private List<ServiceRegistration<?>> registrations = new ArrayList<>();
-    private ProviderContext providerContext;
 
-    public ConfigActivator(ProviderContext providerContext) {
-        this.providerContext = providerContext;
+    private final DataBroker dataBroker;
+    private final NotificationProviderService notificationProviderService;
+    private final PacketProcessingService packetProcessingService;
+    private final SalFlowService salFlowService;
+
+    public ConfigActivator(final DataBroker dataBroker,
+                           final NotificationProviderService notificationProviderService,
+                           final PacketProcessingService packetProcessingService,
+                           final SalFlowService salFlowService) {
+        this.dataBroker = dataBroker;
+        this.notificationProviderService = notificationProviderService;
+        this.packetProcessingService = packetProcessingService;
+        this.salFlowService = salFlowService;
     }
 
     @Override
@@ -75,7 +85,7 @@ public class ConfigActivator implements BundleActivator {
         LOG.info("ConfigActivator start:");
 
         NetvirtProvidersConfigImpl netvirtProvidersConfig =
-                new NetvirtProvidersConfigImpl(providerContext.getSALService(DataBroker.class),
+                new NetvirtProvidersConfigImpl(dataBroker,
                         NetvirtProvidersProvider.getTableOffset());
         registerService(context,
                 new String[] {NetvirtProvidersConfigImpl.class.getName()},
@@ -138,10 +148,10 @@ public class ConfigActivator implements BundleActivator {
         registerService(context, OutboundNatProvider.class.getName(),
                 outboundNatService, Service.OUTBOUND_NAT);
 
-        final GatewayMacResolverService gatewayMacResolverService = new GatewayMacResolverService();
+        final GatewayMacResolverService gatewayMacResolverService = new GatewayMacResolverService(packetProcessingService, salFlowService);
         registerService(context, GatewayMacResolver.class.getName(),
                 gatewayMacResolverService, Service.GATEWAY_RESOLVER);
-        getNotificationProviderService().registerNotificationListener(gatewayMacResolverService);
+        notificationProviderService.registerNotificationListener(gatewayMacResolverService);
 
         IcmpEchoResponderService icmpEchoResponderService = new IcmpEchoResponderService();
         registerService(context, IcmpEchoProvider.class.getName(),
@@ -238,8 +248,4 @@ public class ConfigActivator implements BundleActivator {
                 new String[] {AbstractServiceInstance.class.getName(), interfaceClassName},
                 properties, impl);
     }
-
-    private NotificationProviderService getNotificationProviderService(){
-        return this.providerContext.getSALService(NotificationProviderService.class);
-    }
-}
+}
\ No newline at end of file
index da044665030de3f7b36e99696ef72e8a09305234..28ea4a663c8c039a9f9f694747c0c82e6f6cab1e 100644 (file)
@@ -8,57 +8,59 @@
 
 package org.opendaylight.netvirt.openstack.netvirt.providers;
 
-import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
-
+import java.util.concurrent.atomic.AtomicBoolean;
 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.CandidateAlreadyRegisteredException;
+import org.opendaylight.controller.md.sal.common.api.clustering.Entity;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipCandidateRegistration;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipChange;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListener;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListenerRegistration;
 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.sal.binding.api.NotificationProviderService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.concurrent.atomic.AtomicBoolean;
-
 /**
  * @author Sam Hague (shague@redhat.com)
  */
-public class NetvirtProvidersProvider implements BindingAwareProvider, AutoCloseable {
+public class NetvirtProvidersProvider implements AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtProvidersProvider.class);
 
-    private BundleContext bundleContext = null;
-    private static DataBroker dataBroker = null;
+    private final BundleContext bundleContext;
+    private static DataBroker dataBroker;
     private ConfigActivator activator;
-    private static ProviderContext providerContext = null;
-    private static EntityOwnershipService entityOwnershipService;
+    private final EntityOwnershipService entityOwnershipService;
     private ProviderEntityListener providerEntityListener = null;
     private static AtomicBoolean hasProviderEntityOwnership = new AtomicBoolean(false);
     private static short tableOffset;
-    private NetvirtProvidersConfigImpl netvirtProvidersConfig = null;
-
-    public NetvirtProvidersProvider(BundleContext bundleContext, EntityOwnershipService eos, short tableOffset) {
-        LOG.info("NetvirtProvidersProvider: bundleContext: {}", bundleContext);
-        this.bundleContext = bundleContext;
-            entityOwnershipService = eos;
+    private final NotificationProviderService notificationProviderService;
+    private final PacketProcessingService packetProcessingService;
+    private final SalFlowService salFlowService;
+
+    public NetvirtProvidersProvider(final DataBroker dataBroker,
+                                    final EntityOwnershipService eos,
+                                    final NotificationProviderService notificationProviderService,
+                                    final PacketProcessingService packetProcessingService,
+                                    final SalFlowService salFlowService,
+                                    final short tableOffset) {
+        LOG.info("NetvirtProvidersProvider");
+        NetvirtProvidersProvider.dataBroker = dataBroker;
+        this.notificationProviderService = notificationProviderService;
+        this.entityOwnershipService = eos;
+        this.bundleContext = FrameworkUtil.getBundle(NetvirtProvidersProvider.class).getBundleContext();
+        this.salFlowService = salFlowService;
+        this.packetProcessingService = packetProcessingService;
         setTableOffset(tableOffset);
     }
 
-    public static DataBroker getDataBroker() {
-        return dataBroker;
-    }
-
-    public static ProviderContext getProviderContext() {
-        return providerContext;
-    }
-
     public static boolean isMasterProviderInstance() {
         return hasProviderEntityOwnership.get();
     }
@@ -87,13 +89,10 @@ public class NetvirtProvidersProvider implements BindingAwareProvider, AutoClose
         providerEntityListener.close();
     }
 
-    @Override
-    public void onSessionInitiated(ProviderContext providerContextRef) {
-        dataBroker = providerContextRef.getSALService(DataBroker.class);
-        providerContext = providerContextRef;
+    public void start() {
         LOG.info("NetvirtProvidersProvider: onSessionInitiated dataBroker: {}", dataBroker);
         providerEntityListener = new ProviderEntityListener(this, entityOwnershipService);
-        this.activator = new ConfigActivator(providerContextRef);
+        this.activator = new ConfigActivator(dataBroker, notificationProviderService, packetProcessingService, salFlowService);
         try {
             activator.start(bundleContext);
         } catch (Exception e) {
@@ -143,4 +142,8 @@ public class NetvirtProvidersProvider implements BindingAwareProvider, AutoClose
             provider.handleOwnershipChange(ownershipChange);
         }
     }
+
+    public static DataBroker getDataBroker() {
+        return dataBroker;
+    }
 }
index 2d23a4cea31429c5428f86f79cfbb4eebbcff624..7b0565efe3195bca63dbe9fd785b5829c6082028 100644 (file)
@@ -8,13 +8,18 @@
 
 package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.CheckedFuture;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
 import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
 import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
 import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
 import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
@@ -36,14 +41,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.CheckedFuture;
-
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 8409fbc017f127345171ada8872abe2f6ccba62f..a10e8e6429ccaa4828a34ea6f133e216a496fb23 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.FutureCallback;
@@ -16,16 +18,28 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.openflowplugin.api.OFConstants;
+import java.math.BigInteger;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
 import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
 import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
 import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolverListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
 import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
 import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
@@ -69,23 +83,6 @@ import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.math.BigInteger;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.ThreadFactory;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
 /**
  *
  * @author Anil Vishnoi (avishnoi@Brocade.com)
@@ -99,7 +96,7 @@ public class GatewayMacResolverService extends AbstractServiceInstance
     private static final int ARP_REPLY_TO_CONTROLLER_FLOW_PRIORITY = 10000;
     private static final Instruction SEND_TO_CONTROLLER_INSTRUCTION;
     private ArpSender arpSender;
-    private SalFlowService flowService;
+    private final SalFlowService flowService;
     private final AtomicLong flowCookie = new AtomicLong();
     private final ConcurrentMap<Ipv4Address, ArpResolverMetadata> gatewayToArpMetadataMap =
             new ConcurrentHashMap<>();
@@ -123,6 +120,8 @@ public class GatewayMacResolverService extends AbstractServiceInstance
     private volatile ConfigurationService configurationService;
     private volatile NodeCacheManager nodeCacheManager;
 
+    private final PacketProcessingService packetProcessingService;
+
     static {
         ApplyActions applyActions = new ApplyActionsBuilder().setAction(
                 ImmutableList.of(ArpFlowFactory.createSendToControllerAction(0))).build();
@@ -131,20 +130,19 @@ public class GatewayMacResolverService extends AbstractServiceInstance
             .build();
     }
 
-    public GatewayMacResolverService(){
-        super(Service.GATEWAY_RESOLVER);
+    public GatewayMacResolverService(final PacketProcessingService packetProcessingService, final SalFlowService salFlowService) {
+        this(Service.GATEWAY_RESOLVER, packetProcessingService, salFlowService);
     }
 
-    public GatewayMacResolverService(Service service){
+    public GatewayMacResolverService(Service service, final PacketProcessingService packetProcessingService, final SalFlowService salFlowService) {
         super(service);
+        this.packetProcessingService = packetProcessingService;
+        this.flowService = salFlowService;
     }
 
     private void init(){
         if(!initializationDone.get()){
             initializationDone.set(true);
-            ProviderContext providerContext = NetvirtProvidersProvider.getProviderContext();
-            checkNotNull(providerContext);
-            PacketProcessingService packetProcessingService = providerContext.getRpcService(PacketProcessingService.class);
             if (packetProcessingService != null) {
                 LOG.debug("{} was found.", PacketProcessingService.class.getSimpleName());
                 this.arpSender = new ArpSender(packetProcessingService);
@@ -152,7 +150,6 @@ public class GatewayMacResolverService extends AbstractServiceInstance
                 LOG.error("Missing service {}", PacketProcessingService.class.getSimpleName());
                 this.arpSender = null;
             }
-            flowService = providerContext.getRpcService(SalFlowService.class);
             refreshRequester.scheduleWithFixedDelay(new Runnable(){
 
                 @Override
diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModule.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModule.java
deleted file mode 100644 (file)
index e5d9732..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513;
-
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.osgi.framework.BundleContext;
-
-public class NetvirtProvidersImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513.AbstractNetvirtProvidersImplModule {
-    private BundleContext bundleContext = null;
-
-    public NetvirtProvidersImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public NetvirtProvidersImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513.NetvirtProvidersImplModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    public void customValidation() {
-        // add custom validation form module attributes here.
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        NetvirtProvidersProvider provider = new NetvirtProvidersProvider(bundleContext,
-                getClusteringEntityOwnershipServiceDependency(), getTableOffset());
-        BindingAwareBroker localBroker = getBrokerDependency();
-        localBroker.registerProvider(provider);
-        return provider;
-    }
-
-    public void setBundleContext(BundleContext bundleContext) {
-        this.bundleContext = bundleContext;
-    }
-}
diff --git a/openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModuleFactory.java b/openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModuleFactory.java
deleted file mode 100644 (file)
index 3fdd06d..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* Generated file
-*
-* Generated from: yang module name: netvirt-providers-impl yang module local name: netvirt-providers-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Wed May 20 16:57:59 EDT 2015
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513;
-
-import org.opendaylight.controller.config.api.DependencyResolver;
-import org.opendaylight.controller.config.api.DynamicMBeanWithInstance;
-import org.opendaylight.controller.config.spi.Module;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NetvirtProvidersImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513.AbstractNetvirtProvidersImplModuleFactory {
-    private static final Logger LOG = LoggerFactory.getLogger(NetvirtProvidersImplModuleFactory.class);
-
-    @Override
-    public Module createModule(String instanceName,
-                               DependencyResolver dependencyResolver,
-                               DynamicMBeanWithInstance old, BundleContext bundleContext)
-            throws Exception {
-        Module module =  super.createModule(instanceName, dependencyResolver, old, bundleContext);
-        setModuleBundleContext(bundleContext, module);
-        return module;
-    }
-
-    @Override
-    public Module createModule(String instanceName,
-                               DependencyResolver dependencyResolver, BundleContext bundleContext) {
-        Module module = super.createModule(instanceName, dependencyResolver, bundleContext);
-        setModuleBundleContext(bundleContext, module);
-        return module;
-    }
-
-    private void setModuleBundleContext(BundleContext bundleContext,
-                                        Module module) {
-        if (module instanceof NetvirtProvidersImplModule) {
-            ((NetvirtProvidersImplModule)module).setBundleContext(bundleContext);
-        } else {
-            LOG.warn("Module is of type {} expected type {}",
-                    module.getClass(), NetvirtProvidersImplModule.class);
-        }
-    }
-}
diff --git a/openstack/net-virt-providers/src/main/resources/org/opendaylight/blueprint/netvirt-provider.xml b/openstack/net-virt-providers/src/main/resources/org/opendaylight/blueprint/netvirt-provider.xml
new file mode 100644 (file)
index 0000000..0845e79
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+  xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+  odl:use-default-for-reference-types="true">
+
+  <reference id="dataBroker"
+    interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" />
+  <reference id="entityOwnershipService"
+    interface="org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService" />
+  <reference id="notificationService"
+    interface="org.opendaylight.controller.sal.binding.api.NotificationProviderService" />
+  <reference id="rpcRegistry"
+    interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" />
+
+  <odl:clustered-app-config id="netvirtProviderConfig"
+    binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.NetvirtProvidersConfig">
+  </odl:clustered-app-config>
+
+  <odl:rpc-service id="salFlowService"
+    interface="org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService" />
+  <odl:rpc-service id="packetProcessingService"
+    interface="org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService" />
+
+  <bean id="netvirtProviders"
+    class="org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider"
+    init-method="start" destroy-method="close">
+    <argument ref="dataBroker" />
+    <argument ref="entityOwnershipService" />
+    <argument ref="notificationService" />
+    <argument ref="packetProcessingService" />
+    <argument ref="salFlowService" />
+    <argument>
+      <bean factory-ref="netvirtProviderConfig" factory-method="getTableOffset" />
+    </argument>
+  </bean>
+
+</blueprint>
index 780b0204e97aad4762c41e9f665453d047e3d7cb..97a3c8fab4cbda8fc78bbf790c4ec2349f3ee67e 100644 (file)
@@ -15,6 +15,7 @@ module netvirt-providers-config {
         leaf table-offset {
             description "The table-offset is used to set the starting table for the netvirt pipeline";
             type uint8;
+            default 0;
         }
     }
 }
diff --git a/openstack/net-virt-providers/src/main/yang/netvirt-providers-impl.yang b/openstack/net-virt-providers/src/main/yang/netvirt-providers-impl.yang
deleted file mode 100644 (file)
index b02b37e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module netvirt-providers-impl {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:netvirt:providers:impl";
-    prefix "netvirt-providers-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
-    import opendaylight-entity-ownership-service {prefix eos; revision-date 2015-08-10;}
-
-    description
-        "Service definition for netvirt providers project";
-
-    revision "2015-05-13" {
-        description
-            "Initial revision";
-    }
-
-    identity netvirt-providers-impl {
-        base config:module-type;
-        config:java-name-prefix NetvirtProvidersImpl;
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case netvirtproviders-impl {
-            when "/config:modules/config:module/config:type = 'netvirt-providers-impl'";
-            container broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity md-sal-binding:binding-broker-osgi-registry;
-                    }
-                }
-            }
-
-            container clustering-entity-ownership-service {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity eos:entity-ownership-service;
-                    }
-                }
-            }
-
-            leaf table-offset {
-                description "The table-offset is used to set the starting table for the netvirt pipeline";
-                type uint8;
-            }
-        }
-    }
-}
index b65d82de3a2a3fcf2c63c1efe65d11909efc47f5..cac5cd92296e885f51d46064076fff8d7ec63d74 100644 (file)
@@ -24,7 +24,7 @@ public class NetvirtProvidersProviderTest {
     @Test
     public void testGetTableOffset() {
         short tableOffset = 10;
-        NetvirtProvidersProvider netvirtProvidersProvider = new NetvirtProvidersProvider(null, null, tableOffset);
+        NetvirtProvidersProvider.setTableOffset(tableOffset);
         assertEquals("Table offset was not set", tableOffset, NetvirtProvidersProvider.getTableOffset());
     }
 
@@ -35,7 +35,6 @@ public class NetvirtProvidersProviderTest {
     public void testSetTableOffset() {
         // verify a good value can be set
         short tableOffset = 0;
-        NetvirtProvidersProvider netvirtProvidersProvider = new NetvirtProvidersProvider(null, null, tableOffset);
 
         tableOffset = 10;
         NetvirtProvidersProvider.setTableOffset(tableOffset);
@@ -49,8 +48,7 @@ public class NetvirtProvidersProviderTest {
     public void testTableOffsetNegative() {
         // verify an out of range value is not set
         short tableOffset = 0;
-        NetvirtProvidersProvider netvirtProvidersProvider = new NetvirtProvidersProvider(null, null, tableOffset);
-
+        NetvirtProvidersProvider.setTableOffset(tableOffset);
         short tableOffsetBad = (short)(256 - Service.L2_FORWARDING.getTable());
         NetvirtProvidersProvider.setTableOffset(tableOffsetBad);
         assertEquals("tableOffset should not be set", 0, NetvirtProvidersProvider.getTableOffset());
index 7fd1132486e00e363c5e155f8477bfd1203e4b10..5ee314ff4be2d9650ae1ee8e5410a7056932de0b 100644 (file)
@@ -24,6 +24,7 @@ import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
 import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
 import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -44,6 +45,7 @@ public class PipelineOrchestratorImplTest {
     @Test
     public void testGetTableOffset() {
         short tableOffset = 0;
+        NetvirtProvidersProvider.setTableOffset(tableOffset);
         assertEquals("tableOffset was not set", tableOffset, orchestrator.getTableOffset());
     }
 
@@ -52,6 +54,8 @@ public class PipelineOrchestratorImplTest {
      */
     @Test
     public void testGetTableOffsetWithService() {
+        short tableOffset = 0;
+        NetvirtProvidersProvider.setTableOffset(tableOffset);
         assertEquals("tableOffset was not set", Service.CLASSIFIER.getTable(),
                 orchestrator.getTable(Service.CLASSIFIER));
     }