Replace rpc registration via blueprint with rpc-broker 79/50679/4
authorMichal Rehak <mirehak@cisco.com>
Fri, 7 Oct 2016 12:34:58 +0000 (14:34 +0200)
committerMichal Rehak <mirehak@cisco.com>
Tue, 24 Jan 2017 09:28:08 +0000 (10:28 +0100)
    - blueprint registers rpc equally per node where
      all instances are active at the same time and routing
      over cluster is not needed (local instance is always involved)
    - now rpc-broker is used to expose rpc and rpc lifecycle is managed
      by cluster-singleton-service
    - adapted also neutron-mapper and neutron-ovsdb (feature test blocker)

Change-Id: I55e75f6a9ade6a948487f5da2465e81c962f7c9b
Signed-off-by: Michal Rehak <mirehak@cisco.com>
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java
groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml
neutron-mapper/src/main/java/org/opendaylight/controller/config/yang/config/neutron_mapper/impl/NeutronMapperInstance.java
neutron-mapper/src/main/resources/org/opendaylight/blueprint/neutron-mapper.xml
neutron-ovsdb/src/main/java/org/opendaylight/controller/config/yang/config/neutron_ovsdb/impl/NeutronOvsdbInstance.java
neutron-ovsdb/src/main/resources/org/opendaylight/blueprint/neutron-ovsdb.xml

index 6034b415687e376f50da1567e22f3198f10376ae..02653c691eebe2949670b0bf11c975a466b8b32b 100644 (file)
@@ -8,11 +8,13 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import java.util.concurrent.Future;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
 import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
 import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry;
 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
@@ -39,16 +41,20 @@ public class DomainSpecificRegistryInstance implements ClusterSingletonService,
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private ClusterSingletonServiceProvider clusterSingletonService;
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private ClusterSingletonServiceProvider clusterSingletonService;
+    private final RpcProviderRegistry rpcProviderRegistry;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
     private NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
     private BaseEndpointServiceImpl baseEndpointServiceImpl;
     private RendererManager rendererManager;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl;
     private NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl;
     private BaseEndpointServiceImpl baseEndpointServiceImpl;
     private RendererManager rendererManager;
+    private BindingAwareBroker.RpcRegistration<BaseEndpointService> baseEndpointServiceRpcRegistration;
 
     public DomainSpecificRegistryInstance(final DataBroker dataBroker,
 
     public DomainSpecificRegistryInstance(final DataBroker dataBroker,
-                                          final ClusterSingletonServiceProvider clusterSingletonService) {
+                                          final ClusterSingletonServiceProvider clusterSingletonService,
+                                          final RpcProviderRegistry rpcProviderRegistry) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
+        this.rpcProviderRegistry = Preconditions.checkNotNull(rpcProviderRegistry);
     }
 
     @Override
     }
 
     @Override
@@ -83,13 +89,17 @@ public class DomainSpecificRegistryInstance implements ClusterSingletonService,
         netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl();
         baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataBroker, endpointAugmentorRegistryImpl);
         rendererManager = new RendererManager(dataBroker, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl);
         netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl();
         baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataBroker, endpointAugmentorRegistryImpl);
         rendererManager = new RendererManager(dataBroker, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl);
+
+        baseEndpointServiceRpcRegistration = rpcProviderRegistry.addRpcImplementation(BaseEndpointService.class, this);
     }
 
     @Override
     public ListenableFuture<Void> closeServiceInstance() {
         LOG.info("Instance {} closed", this.getClass().getSimpleName());
         baseEndpointServiceImpl.close();
     }
 
     @Override
     public ListenableFuture<Void> closeServiceInstance() {
         LOG.info("Instance {} closed", this.getClass().getSimpleName());
         baseEndpointServiceImpl.close();
+        baseEndpointServiceRpcRegistration.close();
         rendererManager.close();
         rendererManager.close();
+
         return Futures.immediateFuture(null);
     }
 
         return Futures.immediateFuture(null);
     }
 
index 3a5374c9fa52ebc9ccbd97f434d21c855bfadd58..c498ab37029ff96f9e28632e1e45170355ec691b 100644 (file)
@@ -8,11 +8,13 @@
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
 
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
-import java.util.concurrent.Future;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.Future;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
@@ -38,13 +40,17 @@ public class EpRendererAugmentationRegistryImplInstance implements ClusterSingle
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private ClusterSingletonServiceProvider clusterSingletonService;
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private ClusterSingletonServiceProvider clusterSingletonService;
+    private final RpcProviderRegistry rpcProviderRegistry;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private EndpointRpcRegistry endpointRpcRegistry;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private EndpointRpcRegistry endpointRpcRegistry;
+    private BindingAwareBroker.RpcRegistration<EndpointService> serviceRpcRegistration;
 
     public EpRendererAugmentationRegistryImplInstance(final DataBroker dataBroker,
 
     public EpRendererAugmentationRegistryImplInstance(final DataBroker dataBroker,
-                                                      final ClusterSingletonServiceProvider clusterSingletonService) {
+                                                      final ClusterSingletonServiceProvider clusterSingletonService,
+                                                      final RpcProviderRegistry rpcProviderRegistry) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
+        this.rpcProviderRegistry = rpcProviderRegistry;
     }
 
     @Override
     }
 
     @Override
@@ -91,12 +97,15 @@ public class EpRendererAugmentationRegistryImplInstance implements ClusterSingle
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
         endpointRpcRegistry = new EndpointRpcRegistry(dataBroker);
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
         endpointRpcRegistry = new EndpointRpcRegistry(dataBroker);
+
+        serviceRpcRegistration = rpcProviderRegistry.addRpcImplementation(EndpointService.class, this);
     }
 
     @Override
     public ListenableFuture<Void> closeServiceInstance() {
         LOG.info("Instance {} closed", this.getClass().getSimpleName());
         endpointRpcRegistry.close();
     }
 
     @Override
     public ListenableFuture<Void> closeServiceInstance() {
         LOG.info("Instance {} closed", this.getClass().getSimpleName());
         endpointRpcRegistry.close();
+        serviceRpcRegistration.close();
         return Futures.immediateFuture(null);
     }
 
         return Futures.immediateFuture(null);
     }
 
index c18645872991e24e26d9c3374935e9a496ffd041..45b657c43b4e344f9d4c89cd42c609183fbd56e0 100644 (file)
@@ -5,31 +5,34 @@
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
+    <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
 
     <!-- Modules /-->
     <bean id="groupbasedpolicy" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance"
 
     <!-- Modules /-->
     <bean id="groupbasedpolicy" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="policyValidatorRegistry"/>
         <argument ref="clusterSingletonService"/>
     </bean>
     <bean id="domainSpecificRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.DomainSpecificRegistryInstance"
         <argument ref="dataBroker"/>
         <argument ref="policyValidatorRegistry"/>
         <argument ref="clusterSingletonService"/>
     </bean>
     <bean id="domainSpecificRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.DomainSpecificRegistryInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
+        <argument ref="rpcRegistry"/>
     </bean>
     <bean id="epRendererAugmentationRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.EpRendererAugmentationRegistryImplInstance"
     </bean>
     <bean id="epRendererAugmentationRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.EpRendererAugmentationRegistryImplInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
+        <argument ref="rpcRegistry"/>
     </bean>
     <bean id="statisticsManagerImpl" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.StatisticsManagerImplInstance"
     </bean>
     <bean id="statisticsManagerImpl" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.StatisticsManagerImplInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
     </bean>
     <bean id="policyValidatorRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.PolicyValidatorRegistryInstance"
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
     </bean>
     <bean id="policyValidatorRegistry" class="org.opendaylight.controller.config.yang.config.groupbasedpolicy.PolicyValidatorRegistryInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
     </bean>
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonService"/>
     </bean>
@@ -40,7 +43,4 @@
     <service ref="policyValidatorRegistry" interface="org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry" odl:type="default"/>
     <service ref="statisticsManagerImpl" interface="org.opendaylight.groupbasedpolicy.api.StatisticsManager" odl:type="default"/>
 
     <service ref="policyValidatorRegistry" interface="org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry" odl:type="default"/>
     <service ref="statisticsManagerImpl" interface="org.opendaylight.groupbasedpolicy.api.StatisticsManager" odl:type="default"/>
 
-    <!-- RPC implementations -->
-    <odl:rpc-implementation ref="domainSpecificRegistry"/>
-    <odl:rpc-implementation ref="epRendererAugmentationRegistry"/>
 </blueprint>
\ No newline at end of file
 </blueprint>
\ No newline at end of file
index a220e5018fe14e0c899f4f3d1182dd4cbb88a6ef..9b25add6a9b3ee1a9712efb11a91d800bbcf90cb 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.NeutronMapper;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.NeutronMapper;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
@@ -30,19 +31,16 @@ public class NeutronMapperInstance implements ClusterSingletonService, AutoClose
     private static final ServiceGroupIdentifier IDENTIFIER =
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private static final ServiceGroupIdentifier IDENTIFIER =
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
-    private final EndpointService epService;
-    private final BaseEndpointService baseEndpointService;
     private final ClusterSingletonServiceProvider clusterSingletonService;
     private final ClusterSingletonServiceProvider clusterSingletonService;
+    private final RpcProviderRegistry rpcBroker;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private NeutronMapper mapper;
 
     public NeutronMapperInstance(final DataBroker dataBroker,
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private NeutronMapper mapper;
 
     public NeutronMapperInstance(final DataBroker dataBroker,
-                                 final EndpointService epService,
-                                 final BaseEndpointService baseEndpointService,
+                                 final RpcProviderRegistry rpcBroker,
                                  final ClusterSingletonServiceProvider clusterSingletonService) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
                                  final ClusterSingletonServiceProvider clusterSingletonService) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
-        this.epService = Preconditions.checkNotNull(epService);
-        this.baseEndpointService = Preconditions.checkNotNull(baseEndpointService);
+        this.rpcBroker = Preconditions.checkNotNull(rpcBroker);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
     }
 
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
     }
 
@@ -54,6 +52,8 @@ public class NeutronMapperInstance implements ClusterSingletonService, AutoClose
     @Override
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
     @Override
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
+        final EndpointService epService = rpcBroker.getRpcService(EndpointService.class);
+        final BaseEndpointService baseEndpointService = rpcBroker.getRpcService(BaseEndpointService.class);
         mapper = new NeutronMapper(dataBroker, epService, baseEndpointService);
     }
 
         mapper = new NeutronMapper(dataBroker, epService, baseEndpointService);
     }
 
index 305bcc51eaa5bb935494ca3c937ba8ec2936d9e5..e06639d7b5294816b0b3c45d7caaae9dc8c30fe1 100644 (file)
@@ -4,15 +4,13 @@
            odl:use-default-for-reference-types="true">
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
            odl:use-default-for-reference-types="true">
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
-    <odl:rpc-service id="epService" interface="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService"/>
-    <odl:rpc-service id="baseEpService" interface="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.BaseEndpointService"/>
+    <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
     <bean id="neutronMapper" class="org.opendaylight.controller.config.yang.config.neutron_mapper.impl.NeutronMapperInstance"
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
     <bean id="neutronMapper" class="org.opendaylight.controller.config.yang.config.neutron_mapper.impl.NeutronMapperInstance"
-        init-method="instantiate" destroy-method="close">
+          init-method="instantiate" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="dataBroker"/>
-        <argument ref="epService"/>
-        <argument ref="baseEpService"/>
-        <argument ref="clusterSingletonService" />
+        <argument ref="rpcRegistry"/>
+        <argument ref="clusterSingletonService"/>
     </bean>
 </blueprint>
\ No newline at end of file
     </bean>
 </blueprint>
\ No newline at end of file
index 66e2991463179121ecf9d4bbb892c4b595119223..07f3fb460f7a5c40b4a626ad919ef4b3b3c028d8 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyInstance;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.neutron.ovsdb.NeutronOvsdb;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.groupbasedpolicy.neutron.ovsdb.NeutronOvsdb;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
@@ -30,18 +31,18 @@ public class NeutronOvsdbInstance implements ClusterSingletonService, AutoClosea
     private static final ServiceGroupIdentifier IDENTIFIER =
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
     private static final ServiceGroupIdentifier IDENTIFIER =
             ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER);
     private final DataBroker dataBroker;
-    private final EndpointService epService;
     private final IntegrationBridgeSetting settings;
     private final ClusterSingletonServiceProvider clusterSingletonService;
     private final IntegrationBridgeSetting settings;
     private final ClusterSingletonServiceProvider clusterSingletonService;
+    private final RpcProviderRegistry rpcBroker;
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private NeutronOvsdb neutronOvsdb;
 
     public NeutronOvsdbInstance(final DataBroker dataBroker,
     private ClusterSingletonServiceRegistration singletonServiceRegistration;
     private NeutronOvsdb neutronOvsdb;
 
     public NeutronOvsdbInstance(final DataBroker dataBroker,
-                                final EndpointService epService,
+                                final RpcProviderRegistry rpcBroker,
                                 final IntegrationBridgeSetting settings,
                                 final ClusterSingletonServiceProvider clusterSingletonService) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
                                 final IntegrationBridgeSetting settings,
                                 final ClusterSingletonServiceProvider clusterSingletonService) {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
-        this.epService = Preconditions.checkNotNull(epService);
+        this.rpcBroker = Preconditions.checkNotNull(rpcBroker);
         this.settings = Preconditions.checkNotNull(settings);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
     }
         this.settings = Preconditions.checkNotNull(settings);
         this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService);
     }
@@ -54,6 +55,7 @@ public class NeutronOvsdbInstance implements ClusterSingletonService, AutoClosea
     @Override
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
     @Override
     public void instantiateServiceInstance() {
         LOG.info("Instantiating {}", this.getClass().getSimpleName());
+        final EndpointService epService = rpcBroker.getRpcService(EndpointService.class);
         neutronOvsdb = new NeutronOvsdb(dataBroker, epService, settings);
     }
 
         neutronOvsdb = new NeutronOvsdb(dataBroker, epService, settings);
     }
 
index 26e12bdb75e608600941a29ded31151010f389b0..277862ee69cb48e3d0b9ab759ce1d37dd5d3d1f6 100644 (file)
@@ -4,11 +4,11 @@
            odl:use-default-for-reference-types="true">
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
            odl:use-default-for-reference-types="true">
 
     <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
-    <odl:rpc-service id="epService" interface="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService"/>
+    <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
     <odl:clustered-app-config id="moduleConfig"
     <reference id="clusterSingletonService" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
     <odl:clustered-app-config id="moduleConfig"
-        binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting">
+                              binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting">
         <odl:default-config><![CDATA[
             <integration-bridge-setting xmlns="urn:opendaylight:groupbasedpolicy:neutron:ovsdb:params">
                 <name>br-int</name>
         <odl:default-config><![CDATA[
             <integration-bridge-setting xmlns="urn:opendaylight:groupbasedpolicy:neutron:ovsdb:params">
                 <name>br-int</name>
     </odl:clustered-app-config>
 
     <bean id="neutronOvsdb" class="org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.NeutronOvsdbInstance"
     </odl:clustered-app-config>
 
     <bean id="neutronOvsdb" class="org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.NeutronOvsdbInstance"
-        init-method="initialize" destroy-method="close">
+          init-method="initialize" destroy-method="close">
         <argument ref="dataBroker"/>
         <argument ref="dataBroker"/>
-        <argument ref="epService"/>
+        <argument ref="rpcRegistry"/>
         <argument ref="moduleConfig"/>
         <argument ref="moduleConfig"/>
-        <argument ref="clusterSingletonService" />
+        <argument ref="clusterSingletonService"/>
     </bean>
 </blueprint>
\ No newline at end of file
     </bean>
 </blueprint>
\ No newline at end of file