Add blueprint wiring for the helium StatisticsManager 02/38602/3
authorTom Pantelis <tpanteli@brocade.com>
Mon, 9 May 2016 18:16:41 +0000 (14:16 -0400)
committerAnil Vishnoi <vishnoianil@gmail.com>
Fri, 3 Jun 2016 08:08:21 +0000 (08:08 +0000)
Change-Id: I81ac14b8ea9e4d76d3088ae512a52cfc758c8688
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
applications/statistics-manager-config/src/main/resources/initial/30-statistics-manager.xml
applications/statistics-manager/pom.xml
applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/config/yang/statistics_manager/StatisticsManagerModule.java
applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/config/yang/statistics_manager/StatisticsManagerModuleFactory.java
applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/StatisticsManagerFactory.java [new file with mode: 0644]
applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/impl/StatisticsManagerFactoryImpl.java [new file with mode: 0644]
applications/statistics-manager/src/main/resources/org/opendaylight/blueprint/statistics-manager.xml [new file with mode: 0644]
applications/statistics-manager/src/main/yang/statistics-manager-app-config.yang [new file with mode: 0644]
applications/statistics-manager/src/main/yang/statistics-manager.yang
openflowplugin-blueprint-config-he/src/main/resources/org/opendaylight/blueprint/openflowplugin-helium.xml

index 9962070ccc5c020be374678f94979add2471a36f..5103b5bf6889763320fe6fb036fc039e864e5b54 100644 (file)
@@ -6,6 +6,10 @@
  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
+
+ NOTE: This file is deprecated as wiring is now done via blueprint. This file is kept for
+       backwards compatibility. Runtime modifications are not honored.
+
 -->
 <snapshot>
     <configuration>
index a87ea4f1055dffd97d55a228c4f09e9519cb4d07..5eb232f41d1516e8926a033f09a95ef83860e641 100644 (file)
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-binding-config</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-common-util</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.openflowplugin.model</groupId>
       <artifactId>model-flow-base</artifactId>
index 93fecc35b539249f7f0ce36f098bb0a676a7539c..31bedd8ae20e42e36256798d771d89ba990d8999 100644 (file)
@@ -8,19 +8,13 @@
 
 package org.opendaylight.openflowplugin.applications.config.yang.statistics_manager;
 
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
-import org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatisticsManagerConfig;
-import org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatisticsManagerImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class StatisticsManagerModule extends org.opendaylight.openflowplugin.applications.config.yang.statistics_manager.AbstractStatisticsManagerModule {
-
-    private static final Logger LOG = LoggerFactory.getLogger(StatisticsManagerModule.class);
-
-    private static final int MAX_NODES_FOR_COLLECTOR_DEFAULT = 16;
-    private static final int MIN_REQUEST_NET_MONITOR_INTERVAL_DEFAULT = 3000;
+import org.opendaylight.controller.sal.common.util.NoopAutoCloseable;
 
+/**
+ * @deprecated Replaced by blueprint wiring
+ */
+@Deprecated
+public class StatisticsManagerModule extends AbstractStatisticsManagerModule {
     public StatisticsManagerModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
@@ -30,51 +24,8 @@ public class StatisticsManagerModule extends org.opendaylight.openflowplugin.app
     }
 
     @Override
-    public void customValidation() {
-        // add custom validation form module attributes here.
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        LOG.info("StatisticsManager module initialization.");
-        final StatisticsManagerConfig config = createConfig();
-        final StatisticsManager statisticsManagerProvider = new StatisticsManagerImpl(getDataBrokerDependency(), config);
-        statisticsManagerProvider.setOwnershipService(getOwnershipServiceDependency());
-        statisticsManagerProvider.start(getNotificationServiceDependency(), getRpcRegistryDependency());
-
-        final StatisticsManager statisticsManagerProviderExposed = statisticsManagerProvider;
-        LOG.info("StatisticsManager started successfully.");
-        return new AutoCloseable() {
-            @Override
-            public void close() throws Exception {
-                try {
-                    statisticsManagerProviderExposed.close();
-                }
-                catch (final Exception e) {
-                    LOG.error("Unexpected error by stopping StatisticsManager module", e);
-                }
-                LOG.info("StatisticsManager module stopped.");
-            }
-        };
-    }
-
-    private StatisticsManagerConfig createConfig() {
-        final StatisticsManagerConfig.StatisticsManagerConfigBuilder builder = StatisticsManagerConfig.builder();
-        if (getStatisticsManagerSettings() != null && getStatisticsManagerSettings().getMaxNodesForCollector() != null) {
-            builder.setMaxNodesForCollector(getStatisticsManagerSettings().getMaxNodesForCollector());
-        } else {
-            LOG.warn("Load the xml ConfigSubsystem input value fail! MaxNodesForCollector value is set to {} ",
-                    MAX_NODES_FOR_COLLECTOR_DEFAULT);
-            builder.setMaxNodesForCollector(MAX_NODES_FOR_COLLECTOR_DEFAULT);
-        }
-        if (getStatisticsManagerSettings() != null &&
-                getStatisticsManagerSettings().getMinRequestNetMonitorInterval() != null) {
-            builder.setMinRequestNetMonitorInterval(getStatisticsManagerSettings().getMinRequestNetMonitorInterval());
-        } else {
-            LOG.warn("Load the xml CofnigSubsystem input value fail! MinRequestNetMonitorInterval value is set to {} ",
-                    MIN_REQUEST_NET_MONITOR_INTERVAL_DEFAULT);
-            builder.setMinRequestNetMonitorInterval(MIN_REQUEST_NET_MONITOR_INTERVAL_DEFAULT);
-        }
-        return builder.build();
+    public AutoCloseable createInstance() {
+        // StatisticsManager instance is created via blueprint so this in a no-op.
+        return NoopAutoCloseable.INSTANCE;
     }
 }
index aad063483161b2272e39a942301ff25752ecc910..444459e9f29aec3b20b60e5898efd02747e93cd4 100644 (file)
 * Do not modify this file unless it is present under src/main directory
 */
 package org.opendaylight.openflowplugin.applications.config.yang.statistics_manager;
-public class StatisticsManagerModuleFactory extends org.opendaylight.openflowplugin.applications.config.yang.statistics_manager.AbstractStatisticsManagerModuleFactory {
+
+/**
+ * @deprecated Replaced by blueprint wiring
+ */
+@Deprecated
+public class StatisticsManagerModuleFactory extends AbstractStatisticsManagerModuleFactory {
 
 }
diff --git a/applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/StatisticsManagerFactory.java b/applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/StatisticsManagerFactory.java
new file mode 100644 (file)
index 0000000..fde568e
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016 Brocade Communications Systems, 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.openflowplugin.applications.statistics.manager;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.statistics.manager.config.rev160509.StatisticsManagerAppConfig;
+
+/**
+ * Factory for creating StatisticsManager instances.
+ *
+ * @author Thomas Pantelis
+ */
+public interface StatisticsManagerFactory {
+    StatisticsManager newInstance(StatisticsManagerAppConfig statsManagerAppConfig, DataBroker dataBroker,
+            NotificationProviderService notifService, RpcConsumerRegistry rpcRegistry,
+            EntityOwnershipService entityOwnershipService);
+
+}
diff --git a/applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/impl/StatisticsManagerFactoryImpl.java b/applications/statistics-manager/src/main/java/org/opendaylight/openflowplugin/applications/statistics/manager/impl/StatisticsManagerFactoryImpl.java
new file mode 100644 (file)
index 0000000..11fe70d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016 Brocade Communications Systems, 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.openflowplugin.applications.statistics.manager.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManagerFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.statistics.manager.config.rev160509.StatisticsManagerAppConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Implementation of StatisticsManagerFactory.
+ *
+ * @author Thomas Pantelis
+ */
+public class StatisticsManagerFactoryImpl implements StatisticsManagerFactory {
+    private static final Logger LOG = LoggerFactory.getLogger(StatisticsManagerFactoryImpl.class);
+
+    @Override
+    public StatisticsManager newInstance(StatisticsManagerAppConfig statsManagerAppConfig, DataBroker dataBroker,
+            NotificationProviderService notifService, RpcConsumerRegistry rpcRegistry,
+            EntityOwnershipService entityOwnershipService) {
+        LOG.info("StatisticsManager module initialization.");
+
+        StatisticsManagerConfig.StatisticsManagerConfigBuilder configBuilder = StatisticsManagerConfig.builder();
+        configBuilder.setMaxNodesForCollector(statsManagerAppConfig.getMaxNodesForCollector());
+        configBuilder.setMinRequestNetMonitorInterval(statsManagerAppConfig.getMinRequestNetMonitorInterval());
+
+        StatisticsManager statisticsManager = new StatisticsManagerImpl(dataBroker, configBuilder.build());
+        statisticsManager.setOwnershipService(entityOwnershipService);
+        statisticsManager.start(notifService, rpcRegistry);
+
+        LOG.info("StatisticsManager started successfully.");
+
+        return statisticsManager;
+    }
+}
diff --git a/applications/statistics-manager/src/main/resources/org/opendaylight/blueprint/statistics-manager.xml b/applications/statistics-manager/src/main/resources/org/opendaylight/blueprint/statistics-manager.xml
new file mode 100644 (file)
index 0000000..3155c1f
--- /dev/null
@@ -0,0 +1,9 @@
+<?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">
+
+  <bean id="statsManagerFactory" class="org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatisticsManagerFactoryImpl"/>
+
+  <service ref="statsManagerFactory" interface="org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManagerFactory"
+          odl:type="default"/>
+</blueprint>
\ No newline at end of file
diff --git a/applications/statistics-manager/src/main/yang/statistics-manager-app-config.yang b/applications/statistics-manager/src/main/yang/statistics-manager-app-config.yang
new file mode 100644 (file)
index 0000000..d824326
--- /dev/null
@@ -0,0 +1,25 @@
+module statistics-manager-app-config {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:openflowplugin:app:statistics-manager:config";
+    prefix "statistics-manager-app-config";
+
+    description
+        "Configuration for Statistics Manager application.";
+
+    revision "2016-05-09" {
+        description
+            "Initial revision";
+    }
+
+    container statistics-manager-app-config {
+        leaf min-request-net-monitor-interval {
+            type int32;
+            default 3000;
+        }
+
+        leaf max-nodes-for-collector {
+            type int32;
+            default 16;
+        }
+    }
+}
\ No newline at end of file
index d982d35bf652e89379df37bedfec9ef6e9605f8a..43acf0a1055ec31ccc6a32af8c635d0556437481 100644 (file)
@@ -20,6 +20,7 @@ module statistics-manager {
     identity statistics-manager {
             base config:module-type;
             config:java-name-prefix StatisticsManager;
+            status deprecated;
     }
 
     augment "/config:modules/config:module/config:configuration" {
index 021e38f5e09dac4f5a3d88f9510778645ff13cf0..1ffee5285d3534cc887c866dd533a29aa79ee233 100644 (file)
@@ -3,6 +3,26 @@
            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="pingpong"/>
+  <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
+  <reference id="notificationService" interface="org.opendaylight.controller.sal.binding.api.NotificationProviderService"/>
+  <reference id="entityOwnershipService" interface="org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService"/>
+
+  <!-- Create the StatisticsManager -->
+  <reference id="statsManagerFactory"
+          interface="org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManagerFactory"/>
+
+  <odl:clustered-app-config id="statsManagerAppConfig"
+      binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.app.statistics.manager.config.rev160509.StatisticsManagerAppConfig"/>
+
+  <bean id="statsManager" factory-ref="statsManagerFactory" factory-method="newInstance">
+    <argument ref="statsManagerAppConfig"/>
+    <argument ref="dataBroker"/>
+    <argument ref="notificationService"/>
+    <argument ref="rpcRegistry"/>
+    <argument ref="entityOwnershipService"/>
+  </bean>
+
   <reference id="switchConnProviderFactory"
           interface="org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProviderFactory"/>
 
 
   <!-- Create OpenflowPluginProvider instance -->
 
-  <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" odl:type="pingpong"/>
-  <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
-  <reference id="notificationService" interface="org.opendaylight.controller.sal.binding.api.NotificationProviderService"/>
-  <reference id="entityOwnershipService" interface="org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService"/>
-
   <bean id="openflowPluginProvider" class="org.opendaylight.openflowplugin.openflow.md.core.sal.OpenflowPluginProvider"
-          init-method="initialization" destroy-method="close">
+          init-method="initialization" destroy-method="close" depends-on="statsManager">
     <property name="dataBroker" ref="dataBroker"/>
     <property name="rpcRegistry" ref="rpcRegistry"/>
     <property name="notificationService" ref="notificationService"/>