From: Vladimir Lavor Date: Wed, 10 Aug 2016 10:02:56 +0000 (+0200) Subject: Bug 6396: Integrate groupbasedpolicy-ise-adapter with clustering singleton service X-Git-Tag: release/carbon~121^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=3118e8559425e5fa2a9b695f1329e4ed7dff1794;p=groupbasedpolicy.git Bug 6396: Integrate groupbasedpolicy-ise-adapter with clustering singleton service Change-Id: I188d537068e68cbbed2ae7db5417e0fdf3c3f4fe Signed-off-by: Vladimir Lavor --- diff --git a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GbpIseAdapterProviderInstance.java b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GbpIseAdapterProviderInstance.java index c1af9058e..5d49a09fc 100644 --- a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GbpIseAdapterProviderInstance.java +++ b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GbpIseAdapterProviderInstance.java @@ -8,21 +8,73 @@ package org.opendaylight.controller.config.yang.config.groupbasedpolicy.gbp_ise_adapter; +import com.google.common.base.Preconditions; +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 org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.groupbasedpolicy.gbp_ise_adapter.impl.GbpIseAdapterProvider; +import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; +import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; +import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration; +import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -public class GbpIseAdapterProviderInstance implements AutoCloseable{ +public class GbpIseAdapterProviderInstance implements ClusterSingletonService, AutoCloseable { + private static final Logger LOG = LoggerFactory.getLogger(GbpIseAdapterProviderInstance.class); + + private static final ServiceGroupIdentifier IDENTIFIER = + ServiceGroupIdentifier.create(GroupbasedpolicyInstance.GBP_SERVICE_GROUP_IDENTIFIER); + private final DataBroker dataBroker; + private final BindingAwareBroker bindingAwareBroker; + private final ClusterSingletonServiceProvider clusterSingletonService; + private ClusterSingletonServiceRegistration singletonServiceRegistration; private GbpIseAdapterProvider iseAdapterProvider; - public GbpIseAdapterProviderInstance(DataBroker dataBroker, BindingAwareBroker broker) { - iseAdapterProvider = new GbpIseAdapterProvider(dataBroker, broker); + public GbpIseAdapterProviderInstance(final DataBroker dataBroker, + final BindingAwareBroker bindingAwareBroker, + final ClusterSingletonServiceProvider clusterSingletonService) { + this.dataBroker = Preconditions.checkNotNull(dataBroker); + this.bindingAwareBroker = Preconditions.checkNotNull(bindingAwareBroker); + this.clusterSingletonService = Preconditions.checkNotNull(clusterSingletonService); + } + + public void initialize() { + LOG.info("Clustering session initiated for {}", this.getClass().getSimpleName()); + singletonServiceRegistration = clusterSingletonService.registerClusterSingletonService(this); } @Override - public void close() throws Exception { + public void instantiateServiceInstance() { + LOG.info("Instantiating {}", this.getClass().getSimpleName()); + iseAdapterProvider = new GbpIseAdapterProvider(dataBroker, bindingAwareBroker); + } + + @Override + public ListenableFuture closeServiceInstance() { + LOG.info("Instance {} closed", this.getClass().getSimpleName()); iseAdapterProvider.close(); + return Futures.immediateFuture(null); } + @Override + public void close() throws Exception { + LOG.info("Clustering provider closed for {}", this.getClass().getSimpleName()); + if (singletonServiceRegistration != null) { + try { + singletonServiceRegistration.close(); + } catch (Exception e) { + LOG.warn("{} closed unexpectedly. Cause: {}", e.getMessage()); + } + singletonServiceRegistration = null; + } + } + + @Override + public ServiceGroupIdentifier getIdentifier() { + return IDENTIFIER; + } } diff --git a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModule.java b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModule.java index c5373c98e..9aa51ebfe 100644 --- a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModule.java +++ b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModule.java @@ -13,6 +13,7 @@ import org.opendaylight.controller.sal.common.util.NoopAutoCloseable; /** * gbp-ise-adapter impl module */ +@Deprecated public class GpbIseAdapterProviderModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.gbp_ise_adapter.AbstractGpbIseAdapterProviderModule { public GpbIseAdapterProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); diff --git a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModuleFactory.java b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModuleFactory.java index 4c154475c..5f102ad22 100644 --- a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModuleFactory.java +++ b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/gbp_ise_adapter/GpbIseAdapterProviderModuleFactory.java @@ -16,6 +16,7 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy.gbp_ise_adapter; +@Deprecated public class GpbIseAdapterProviderModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.gbp_ise_adapter.AbstractGpbIseAdapterProviderModuleFactory { } diff --git a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/gbp_ise_adapter/impl/GbpIseAdapterProvider.java b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/gbp_ise_adapter/impl/GbpIseAdapterProvider.java index b29509726..d05afdfad 100644 --- a/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/gbp_ise_adapter/impl/GbpIseAdapterProvider.java +++ b/groupbasedpolicy-ise-adapter/src/main/java/org/opendaylight/groupbasedpolicy/gbp_ise_adapter/impl/GbpIseAdapterProvider.java @@ -38,7 +38,7 @@ public class GbpIseAdapterProvider implements AutoCloseable, BindingAwareProvide } @Override - public void close() throws Exception { + public void close() { if (registration != null) { LOG.info("closing GbpIseAdapterProvider"); registration.close(); diff --git a/groupbasedpolicy-ise-adapter/src/main/resources/org/opendaylight/blueprint/gbp-ise-adapter.xml b/groupbasedpolicy-ise-adapter/src/main/resources/org/opendaylight/blueprint/gbp-ise-adapter.xml index acea2234b..0d982338a 100644 --- a/groupbasedpolicy-ise-adapter/src/main/resources/org/opendaylight/blueprint/gbp-ise-adapter.xml +++ b/groupbasedpolicy-ise-adapter/src/main/resources/org/opendaylight/blueprint/gbp-ise-adapter.xml @@ -5,10 +5,12 @@ + + init-method="initialize" destroy-method="close"> + \ No newline at end of file