From: Vladimir Lavor Date: Fri, 12 Aug 2016 11:30:34 +0000 (+0200) Subject: Bug 6396: Integrate vpp-renderer with clustering singleton service X-Git-Tag: release/carbon~119^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=9a405a521fc15654147b9547c429f3b3f885761b;p=groupbasedpolicy.git Bug 6396: Integrate vpp-renderer with clustering singleton service Change-Id: I40ddc664f7520425472fe1abf89cd954d2edb8ea Signed-off-by: Vladimir Lavor --- diff --git a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderInstance.java b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderInstance.java index b33484f0a..f483a03bc 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderInstance.java +++ b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderInstance.java @@ -8,19 +8,76 @@ package org.opendaylight.controller.config.yang.config.vpp_provider.impl; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; +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 GbpVppProviderInstance implements AutoCloseable { +public class GbpVppProviderInstance implements ClusterSingletonService, AutoCloseable { + private static final Logger LOG = LoggerFactory.getLogger(GbpVppProviderInstance.class); + + private static final ServiceGroupIdentifier IDENTIFIER = + ServiceGroupIdentifier.create(GbpVppProviderInstance.class.getName()); + private final DataBroker dataBroker; + private final BindingAwareBroker bindingAwareBroker; + private final ClusterSingletonServiceProvider clusterSingletonService; + private ClusterSingletonServiceRegistration singletonServiceRegistration; private VppRenderer renderer; - public GbpVppProviderInstance (DataBroker dataBroker, BindingAwareBroker broker) { - renderer = new VppRenderer(dataBroker, broker); + public GbpVppProviderInstance(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 instantiateServiceInstance() { + LOG.info("Instantiating {}", this.getClass().getSimpleName()); + renderer = new VppRenderer(dataBroker, bindingAwareBroker); + } + + @Override + public ListenableFuture closeServiceInstance() { + LOG.info("Instance {} closed", this.getClass().getSimpleName()); + try { + renderer.close(); + } catch (Exception e) { + LOG.warn("Exception while closing ... {}", e.getMessage()); + } + return Futures.immediateFuture(null); + } + @Override public void close() throws Exception { - renderer.close(); + + LOG.info("Clustering provider closed for {}", this.getClass().getSimpleName()); + if (singletonServiceRegistration != null) { + try { + singletonServiceRegistration.close(); + } catch (Exception e) { + LOG.warn("{} closed unexpectedly", this.getClass().getSimpleName(), e.getMessage()); + } + singletonServiceRegistration = null; + } } + @Override + public ServiceGroupIdentifier getIdentifier() { + return IDENTIFIER; + } } diff --git a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModule.java b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModule.java index feb106533..556524509 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModule.java +++ b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModule.java @@ -11,7 +11,7 @@ package org.opendaylight.controller.config.yang.config.vpp_provider.impl; import org.opendaylight.controller.sal.common.util.NoopAutoCloseable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +@Deprecated public class GbpVppProviderModule extends org.opendaylight.controller.config.yang.config.vpp_provider.impl.AbstractGbpVppProviderModule { private static final Logger LOG = LoggerFactory.getLogger(GbpVppProviderModule.class); diff --git a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModuleFactory.java b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModuleFactory.java index 438da95cb..1bd2093f4 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModuleFactory.java +++ b/renderers/vpp/src/main/java/org/opendaylight/controller/config/yang/config/vpp_provider/impl/GbpVppProviderModuleFactory.java @@ -15,6 +15,7 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.vpp_provider.impl; +@Deprecated public class GbpVppProviderModuleFactory extends org.opendaylight.controller.config.yang.config.vpp_provider.impl.AbstractGbpVppProviderModuleFactory { } diff --git a/renderers/vpp/src/main/resources/org/opendaylight/blueprint/vpp-renderer.xml b/renderers/vpp/src/main/resources/org/opendaylight/blueprint/vpp-renderer.xml index daf5e222a..ba47a38e5 100644 --- a/renderers/vpp/src/main/resources/org/opendaylight/blueprint/vpp-renderer.xml +++ b/renderers/vpp/src/main/resources/org/opendaylight/blueprint/vpp-renderer.xml @@ -5,10 +5,12 @@ + + init-method="initialize" destroy-method="close"> + \ No newline at end of file