use annotations instead of XML for Blueprint 82/79782/6
authorHarshini <hm@luminanetworks.com>
Mon, 21 Jan 2019 08:40:49 +0000 (14:10 +0530)
committerHarshini <hm@luminanetworks.com>
Thu, 24 Jan 2019 15:55:38 +0000 (21:25 +0530)
JIRA: OVSDB-474
Change-Id: Ie40dacf4b4a745d77d83bdc7e1b95fecad4fd276
Signed-off-by: Harshini <hm@luminanetworks.com>
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
hwvtepsouthbound/hwvtepsouthbound-impl/pom.xml
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepSouthboundProvider.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/resources/OSGI-INF/blueprint/hwvtepsouthbound.xml
library/impl/pom.xml
library/impl/src/main/java/org/opendaylight/ovsdb/lib/impl/OvsdbConnectionService.java
library/impl/src/main/java/org/opendaylight/ovsdb/lib/impl/OvsdbConnectionServiceConfigurator.java [new file with mode: 0644]
library/impl/src/main/resources/OSGI-INF/blueprint/library.xml
southbound/southbound-impl/pom.xml
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProviderConfigurator.java [new file with mode: 0644]
southbound/southbound-impl/src/main/resources/OSGI-INF/blueprint/southbound.xml

index 28b317a9e458cf263f5bbd85cf0032a3e4141a18..9a64d3ee4058df4db1a7d41c49ad236efbe7dc25 100644 (file)
@@ -42,6 +42,16 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.mdsal</groupId>
       <artifactId>mdsal-eos-binding-api</artifactId>
     </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.aries.blueprint</groupId>
+      <artifactId>blueprint-maven-plugin-annotation</artifactId>
+      <optional>true</optional>
+    </dependency>
     <!-- project specific dependencies -->
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -137,11 +147,19 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 
   <build>
     <plugins>
+      <plugin>
+        <groupId>org.apache.aries.blueprint</groupId>
+        <artifactId>blueprint-maven-plugin</artifactId>
+        <configuration>
+          <scanPaths>org.opendaylight.ovsdb.hwvtepsouthbound</scanPaths>
+        </configuration>
+      </plugin>
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
         <configuration>
           <instructions>
+            <Karaf-Commands>org.opendaylight.ovsdb.hwvtepsouthbound.TransactionHistoryCmd</Karaf-Commands>
             <Private-Package>org.opendaylight.ovsdb.schema.hardwarevtep</Private-Package>
             <Export-Package>org.opendaylight.ovsdb.hwvtepsouthbound.*,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hwvtepsouthbound.impl.rev150901.*</Export-Package>
           </instructions>
index bf6d2707bc6fd26b9ff46f52ff314ddf393de5e9..1c9af4e5d3231f3bbaba096e4d42c9e4209bffe6 100644 (file)
@@ -12,6 +12,11 @@ import com.google.common.util.concurrent.CheckedFuture;
 import java.util.Collection;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.apache.aries.blueprint.annotation.service.Reference;
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
@@ -41,6 +46,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Singleton
 public class HwvtepSouthboundProvider implements ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundProvider.class);
@@ -59,11 +65,12 @@ public class HwvtepSouthboundProvider implements ClusteredDataTreeChangeListener
     private final AtomicBoolean registered = new AtomicBoolean(false);
     private ListenerRegistration<HwvtepSouthboundProvider> operTopologyRegistration;
 
-    public HwvtepSouthboundProvider(final DataBroker dataBroker,
-            final EntityOwnershipService entityOwnershipServiceDependency,
-            final OvsdbConnection ovsdbConnection,
-            final DOMSchemaService schemaService,
-            final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
+    @Inject
+    public HwvtepSouthboundProvider(@Reference final DataBroker dataBroker,
+            @Reference final EntityOwnershipService entityOwnershipServiceDependency,
+            @Reference final OvsdbConnection ovsdbConnection,
+            @Reference final DOMSchemaService schemaService,
+            @Reference final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
         this.dataBroker = dataBroker;
         this.entityOwnershipService = entityOwnershipServiceDependency;
         registration = null;
@@ -76,6 +83,7 @@ public class HwvtepSouthboundProvider implements ClusteredDataTreeChangeListener
     /**
      * Used by blueprint when starting the container.
      */
+    @PostConstruct
     public void init() {
         LOG.info("HwvtepSouthboundProvider Session Initiated");
         txInvoker = new TransactionInvokerImpl(dataBroker);
@@ -105,6 +113,7 @@ public class HwvtepSouthboundProvider implements ClusteredDataTreeChangeListener
     }
 
     @Override
+    @PreDestroy
     @SuppressWarnings("checkstyle:IllegalCatch")
     public void close() throws Exception {
         LOG.info("HwvtepSouthboundProvider Closed");
index af0e676dd01322be425583f23fa7e547ba2bdea8..b8937d0633a83e4df9fda7ba7240795643d6057a 100644 (file)
@@ -3,31 +3,10 @@
   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"
-    odl:type="default" />
-  <reference id="eos"
-    interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService" />
-  <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection" />
-  <reference id="schemaService"
-    interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
-  <reference id="bindingNormalizedNodeSerializer"
-    interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer" />
-
-  <bean id="hwvtepProvider"
-    class="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider"
-    init-method="init" destroy-method="close">
-    <argument ref="dataBroker" />
-    <argument ref="eos" />
-    <argument ref="ovsdbConnection" />
-    <argument ref="schemaService" />
-    <argument ref="bindingNormalizedNodeSerializer" />
-  </bean>
-
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
     <command>
         <action class="org.opendaylight.ovsdb.hwvtepsouthbound.TransactionHistoryCmd">
-            <argument ref="hwvtepProvider" />
+            <argument ref="hwvtepSouthboundProvider" />
         </action>
     </command>
     </command-bundle>
index 1ba80531e39e492895638ac5bfbb50b5d98d1b33..5b31c90def70a775fab214305c24586f20922e63 100644 (file)
@@ -30,6 +30,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </properties>
 
   <dependencies>
+    <dependency>
+      <groupId>org.apache.aries.blueprint</groupId>
+      <artifactId>blueprint-maven-plugin-annotation</artifactId>
+      <optional>true</optional>
+    </dependency>
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
@@ -105,6 +110,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       </testResource>
     </testResources>
     <plugins>
+      <plugin>
+        <groupId>org.apache.aries.blueprint</groupId>
+        <artifactId>blueprint-maven-plugin</artifactId>
+        <configuration>
+          <scanPaths>org.opendaylight.ovsdb.lib</scanPaths>
+        </configuration>
+      </plugin>
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
index da3f7c30b1fcc89b5db84a1bf4148de6c792ea9c..6e7a0c95a28748eae62e4a655d6156194f1984fa 100644 (file)
@@ -50,10 +50,13 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import javax.annotation.Nullable;
 import javax.inject.Inject;
+import javax.inject.Singleton;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLEngine;
 import javax.net.ssl.SSLEngineResult.HandshakeStatus;
 import javax.net.ssl.SSLPeerUnverifiedException;
+import org.apache.aries.blueprint.annotation.service.Reference;
+import org.apache.aries.blueprint.annotation.service.Service;
 import org.opendaylight.aaa.cert.api.ICertificateManager;
 import org.opendaylight.ovsdb.lib.OvsdbClient;
 import org.opendaylight.ovsdb.lib.OvsdbConnection;
@@ -84,6 +87,8 @@ import org.slf4j.LoggerFactory;
  * environment. Hence a single instance of the service will be active (via Service Registry in OSGi)
  * and a Singleton object in a non-OSGi environment.
  */
+@Singleton
+@Service(classes = OvsdbConnection.class)
 public class OvsdbConnectionService implements AutoCloseable, OvsdbConnection {
     private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionService.class);
     private static final int IDLE_READER_TIMEOUT = 30;
@@ -118,7 +123,8 @@ public class OvsdbConnectionService implements AutoCloseable, OvsdbConnection {
     private volatile int listenerPort = 6640;
 
     @Inject
-    public OvsdbConnectionService(ICertificateManager certManagerSrv) {
+    public OvsdbConnectionService(@Reference(filter = "type=default-certificate-manager")
+                                              ICertificateManager certManagerSrv) {
         this.certManagerSrv = certManagerSrv;
     }
 
diff --git a/library/impl/src/main/java/org/opendaylight/ovsdb/lib/impl/OvsdbConnectionServiceConfigurator.java b/library/impl/src/main/java/org/opendaylight/ovsdb/lib/impl/OvsdbConnectionServiceConfigurator.java
new file mode 100644 (file)
index 0000000..55835ad
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright © 2014, 2017 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.ovsdb.lib.impl;
+
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OvsdbConnectionServiceConfigurator {
+
+    private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionServiceConfigurator.class);
+
+    private static final String JSON_RPC_DECODER_MAX_FRAME_LENGTH_PARAM = "json-rpc-decoder-max-frame-length";
+    private static final String USE_SSL_PARAM = "use-ssl";
+    private static final String OVSDB_RPC_TASK_TIMEOUT_PARAM = "ovsdb-rpc-task-timeout";
+    private static final String OVSDB_LISTENER_PORT_PARAM = "ovsdb-listener-port";
+    private final OvsdbConnectionService ovsdbconnection;
+
+    public OvsdbConnectionServiceConfigurator(OvsdbConnectionService ovsdbconnection) {
+        this.ovsdbconnection = ovsdbconnection;
+    }
+
+    public void setOvsdbRpcTaskTimeout(int timeout) {
+        ovsdbconnection.setOvsdbRpcTaskTimeout(timeout);
+    }
+
+    public void setUseSsl(boolean flag) {
+        ovsdbconnection.setUseSsl(flag);
+    }
+
+    public void setJsonRpcDecoderMaxFrameLength(int maxFrameLength) {
+        ovsdbconnection.setJsonRpcDecoderMaxFrameLength(maxFrameLength);
+    }
+
+    public void setOvsdbListenerIp(String ip) {
+        ovsdbconnection.setOvsdbListenerIp(ip);
+    }
+
+    public void setOvsdbListenerPort(int portNumber) {
+        ovsdbconnection.setOvsdbListenerPort(portNumber);
+    }
+
+    public void updateConfigParameter(Map<String, Object> configParameters) {
+        if (configParameters != null && !configParameters.isEmpty()) {
+            LOG.debug("Config parameters received : {}", configParameters.entrySet());
+            for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
+                if (paramEntry.getKey().equalsIgnoreCase(OVSDB_RPC_TASK_TIMEOUT_PARAM)) {
+                    ovsdbconnection.setOvsdbRpcTaskTimeout(Integer.parseInt((String) paramEntry.getValue()));
+                } else if (paramEntry.getKey().equalsIgnoreCase(USE_SSL_PARAM)) {
+                    ovsdbconnection.setUseSsl(Boolean.parseBoolean(paramEntry.getValue().toString()));
+                }
+
+            }
+        }
+    }
+}
+
index 5eaf9f0339d620db8a86d9056256d5050866ff33..7d0133d40c639af4f757d6b599dbdbfbd4701bde 100644 (file)
     </cm:default-properties>
   </cm:property-placeholder>
 
-  <reference id="aaaCertificateManager"
-        interface="org.opendaylight.aaa.cert.api.ICertificateManager"
-        odl:type="default-certificate-manager"/>
-
   <!-- Notify OvsdbConnectionService with any change in the config properties value-->
-  <bean id="ovsdbConnectionService" class="org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService">
-    <argument ref="aaaCertificateManager"/>
+  <bean id="ovsdbConnectionServiceConfigurator" class="org.opendaylight.ovsdb.lib.impl.OvsdbConnectionServiceConfigurator">
+    <argument ref="ovsdbConnectionService"/>
     <cm:managed-properties persistent-id="org.opendaylight.ovsdb.library"
                            update-strategy="component-managed"
                            update-method="updateConfigParameter"/>
@@ -35,7 +31,4 @@
     <property name="jsonRpcDecoderMaxFrameLength" value="${json-rpc-decoder-max-frame-length}"/>
   </bean>
 
-  <service ref="ovsdbConnectionService" interface="org.opendaylight.ovsdb.lib.OvsdbConnection"
-    odl:type="default" />
-
 </blueprint>
index 9c43ff1d0a53ae3419da195883b910274be4747e..0e79df9fbb74cf3602b655e257bef075184fcfc8 100644 (file)
@@ -82,13 +82,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>1.5.0-SNAPSHOT</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.aries.blueprint</groupId>
-      <artifactId>blueprint-maven-plugin-annotation</artifactId>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>javax.inject</groupId>
-      <artifactId>javax.inject</artifactId>
+      <groupId>org.apache.aries.blueprint</groupId>
+      <artifactId>blueprint-maven-plugin-annotation</artifactId>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>org.sonarsource.java</groupId>
@@ -169,6 +170,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </dependencies>
   <build>
     <plugins>
+      <plugin>
+        <groupId>org.apache.aries.blueprint</groupId>
+        <artifactId>blueprint-maven-plugin</artifactId>
+        <configuration>
+          <scanPaths>org.opendaylight.ovsdb.southbound</scanPaths>
+        </configuration>
+      </plugin>
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
index 0365316c45502ddde8442f9fb7903f7fb1153123..41f7d075de072b43d0a8d029d406c49edba3d438 100644 (file)
@@ -11,9 +11,13 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Collection;
-import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.apache.aries.blueprint.annotation.service.Reference;
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
@@ -45,12 +49,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Singleton
 public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(SouthboundProvider.class);
 
     private static final String ENTITY_TYPE = "ovsdb-southbound-provider";
-    private static final String SKIP_MONITORING_MANAGER_STATUS_PARAM = "skip-monitoring-manager-status";
 
     public static DataBroker getDb() {
         return db;
@@ -73,13 +77,14 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
     private ListenerRegistration<SouthboundProvider> operTopologyRegistration;
     private final OvsdbDiagStatusProvider ovsdbStatusProvider;
 
-    public SouthboundProvider(final DataBroker dataBroker,
-            final EntityOwnershipService entityOwnershipServiceDependency,
-            final OvsdbConnection ovsdbConnection,
-            final DOMSchemaService schemaService,
-            final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
-            final SystemReadyMonitor systemReadyMonitor,
-            final DiagStatusService diagStatusService) {
+    @Inject
+    public SouthboundProvider(@Reference final DataBroker dataBroker,
+                              @Reference final EntityOwnershipService entityOwnershipServiceDependency,
+                              @Reference final OvsdbConnection ovsdbConnection,
+                              @Reference final DOMSchemaService schemaService,
+                              @Reference final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
+                              @Reference final SystemReadyMonitor systemReadyMonitor,
+                              @Reference final DiagStatusService diagStatusService) {
         this.db = dataBroker;
         this.entityOwnershipService = entityOwnershipServiceDependency;
         registration = null;
@@ -94,6 +99,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
     /**
      * Used by blueprint when starting the container.
      */
+    @PostConstruct
     public void init() {
         LOG.info("SouthboundProvider Session Initiated");
         ovsdbStatusProvider.reportStatus(ServiceState.STARTING, "OVSDB initialization in progress");
@@ -125,6 +131,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
     }
 
     @Override
+    @PreDestroy
     public void close() {
         LOG.info("SouthboundProvider Closed");
         try {
@@ -217,18 +224,6 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topol
         }
     }
 
-    public void updateConfigParameter(Map<String, Object> configParameters) {
-        if (configParameters != null && !configParameters.isEmpty()) {
-            LOG.debug("Config parameters received : {}", configParameters.entrySet());
-            for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
-                if (paramEntry.getKey().equalsIgnoreCase(SKIP_MONITORING_MANAGER_STATUS_PARAM)) {
-                    setSkipMonitoringManagerStatus(Boolean.parseBoolean((String)paramEntry.getValue()));
-                    break;
-                }
-            }
-        }
-    }
-
     public void setSkipMonitoringManagerStatus(boolean flag) {
         LOG.debug("skipManagerStatus set to {}", flag);
         if (flag) {
diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProviderConfigurator.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProviderConfigurator.java
new file mode 100644 (file)
index 0000000..6111f19
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2019 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.ovsdb.southbound;
+
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Helper to let Blueprint XML configure {@link SouthboundProvider}.
+ *
+ * @author Michael Vorburger.ch
+ */
+public class SouthboundProviderConfigurator {
+
+    private static final Logger LOG = LoggerFactory.getLogger(SouthboundProviderConfigurator.class);
+
+    private static final String SKIP_MONITORING_MANAGER_STATUS_PARAM = "skip-monitoring-manager-status";
+
+    private final SouthboundProvider southboundProvider;
+
+    public SouthboundProviderConfigurator(SouthboundProvider southboundProvider) {
+        this.southboundProvider = southboundProvider;
+    }
+
+    public void setSkipMonitoringManagerStatus(boolean flag) {
+        southboundProvider.setSkipMonitoringManagerStatus(flag);
+    }
+
+    public void updateConfigParameter(Map<String, Object> configParameters) {
+        if (configParameters != null && !configParameters.isEmpty()) {
+            LOG.debug("Config parameters received : {}", configParameters.entrySet());
+            for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
+                if (paramEntry.getKey().equalsIgnoreCase(SKIP_MONITORING_MANAGER_STATUS_PARAM)) {
+                    southboundProvider
+                            .setSkipMonitoringManagerStatus(Boolean.parseBoolean((String) paramEntry.getValue()));
+                    break;
+                }
+            }
+        }
+    }
+}
index 9402c7249d4bfba192ad2a97095bcb38f922bc76..2693703f070334e4b4afe509ac8c85cdac9dbb98 100644 (file)
@@ -4,39 +4,18 @@
   xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
   odl:use-default-for-reference-types="true">
 
-  <reference id="dataBroker"
-    interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
-    odl:type="default" />
-  <reference id="eos"
-    interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService" />
-  <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection" />
-  <reference id="schemaService"
-    interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
-  <reference id="bindingNormalizedNodeSerializer"
-    interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer" />
-  <reference id="systemReadyMonitor"
-    interface="org.opendaylight.infrautils.ready.SystemReadyMonitor" />
-  <reference id="diagStatusService" interface="org.opendaylight.infrautils.diagstatus.DiagStatusService" />
-
     <cm:property-placeholder persistent-id="org.opendaylight.ovsdb.southbound" update-strategy="none">
     <cm:default-properties>
       <cm:property name="skip-monitoring-manager-status" value="false"/>
     </cm:default-properties>
   </cm:property-placeholder>
 
-  <bean id="southboundProvider"
-    class="org.opendaylight.ovsdb.southbound.SouthboundProvider"
-    init-method="init" destroy-method="close">
+  <bean id="southboundProviderConfigurator"
+    class="org.opendaylight.ovsdb.southbound.SouthboundProviderConfigurator">
    <cm:managed-properties persistent-id="org.opendaylight.ovsdb.southbound"
                            update-strategy="component-managed"
                            update-method="updateConfigParameter"/>
-    <argument ref="dataBroker" />
-    <argument ref="eos" />
-    <argument ref="ovsdbConnection" />
-    <argument ref="schemaService" />
-    <argument ref="bindingNormalizedNodeSerializer" />
-    <argument ref="systemReadyMonitor" />
-    <argument ref="diagStatusService"/>
+    <argument ref="southboundProvider" />
     <property name="skipMonitoringManagerStatus" value="${skip-monitoring-manager-status}"/>
   </bean>