BUG-6890: Statistics-polling configuration 76/47476/7
authorShuva Kar <shuva.jyoti.kar@ericsson.com>
Mon, 24 Oct 2016 16:21:06 +0000 (21:51 +0530)
committerShuva Kar <shuva.jyoti.kar@ericsson.com>
Mon, 31 Oct 2016 16:33:13 +0000 (22:03 +0530)
Changing the current flag to enable/disable statistics
polling.

Currently the statistics polling is controlled by the flag
is-statistics-polling-off which is off by default(value set to false).
However this logic being double-negative causes some confusion to the
end-user. Thus modifying the flag to is-statistics-polling-on and setting
it to true by default.

The associated logic involved at oyther places have been modified as
well as a part of this commit.

Change-Id: Ia9a027433611912c11ff0f3166aa6f68efdc6913
Signed-off-by: Shuva Kar <shuva.jyoti.kar@ericsson.com>
12 files changed:
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OpenFlowPluginProvider.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/StatisticsManager.java
openflowplugin-api/src/main/yang/openflow-provider-config.yang
openflowplugin-blueprint-config/src/main/resources/initial/openflowplugin.cfg
openflowplugin-controller-config/src/main/resources/initial/42-openflowplugin-new.xml
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderFactoryImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java
openflowplugin-impl/src/main/yang/openflow-plugin-impl.yang
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplParamTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImplTest.java

index 6364220ff9c56e50ad70fc063d100e3d16b0ba7a..a2b0e0e14816e59efd72a97d0aa6fea545c030a8 100644 (file)
@@ -56,9 +56,9 @@ public interface OpenFlowPluginProvider extends AutoCloseable, BindingService {
 
     boolean isSwitchFeaturesMandatory();
 
-    boolean isStatisticsPollingOff();
+    boolean isStatisticsPollingOn();
 
-    void setIsStatisticsPollingOff(final boolean isStatisticsPollingOff);
+    void setIsStatisticsPollingOn(final boolean isStatisticsPollingOn);
 
     /**
      * Backward compatibility feature - exposing rpc for statistics polling (result is provided in form of async notification)
index 11a286e396d7b4e7316f3a8274bbfaa5ec649193..9fc94e04e956ea55602de75b801ecefd25b3a7d9 100644 (file)
@@ -28,5 +28,8 @@ public interface StatisticsManager extends OFPManager {
      */
     void stopScheduling(final DeviceInfo deviceInfo);
 
-    void setIsStatisticsPollingOff(boolean isStatisticsPollingOff);
+    @Override
+    void close();
+
+    void setIsStatisticsPollingOn(boolean isStatisticsPollingOn);
 }
index 26502d36e6c6cafc07b4bb9bd34f6f4b6a4680bf..caabb2525ec953b1d31c6ae3da0f6d685e9a7406 100644 (file)
@@ -39,9 +39,9 @@ module openflow-provider-config {
             default 64000;
         }
 
-        leaf is-statistics-polling-off {
+        leaf is-statistics-polling-on {
             type boolean;
-            default "false";
+            default "true";
         }
 
         leaf is-statistics-rpc-enabled {
index 87e88fff10ae10a28648c6380d3fa9393f424df7..bed5437b1401f741aca9e2daf5262fa228ac30b2 100644 (file)
@@ -1,6 +1,7 @@
 #All config parameters listed herein
 #require to be configured before switch connection, else requires a switch restart
-#
+#All parameters here will be persisted, however need to change it explicitly for
+#each node of the cluster.
 #Flag to turn flow removed notification on/off.
 #Flow removed notification is turned on by default. Default value false
 notification-flow-removed-off=false
@@ -23,5 +24,5 @@ barrier-count-limit=25600
 echo-reply-timeout=2000
 #flag to turn on/off statistics polling
 #can be changed on demand
-#Turned on by default. Default value is false
-is-statistics-polling-off=false
+#Turned on by default. Default value is true
+is-statistics-polling-on=true
index 0c9db146a83f134650d5da12538282b19ba1a98b..18a356d65a234535624b691b94200a620738f73b 100644 (file)
@@ -92,7 +92,7 @@ NOTE: This file is deprecated as wiring is now done via blueprint. This file is
                     <rpc-requests-quota>20000</rpc-requests-quota>
                     <switch-features-mandatory>false</switch-features-mandatory>
                     <global-notification-quota>64000</global-notification-quota>
-                    <is-statistics-polling-off>false</is-statistics-polling-off>
+                    <is-statistics-polling-on>true</is-statistics-polling-on>
                     <barrier-interval-timeout-limit>500</barrier-interval-timeout-limit>
                     <barrier-count-limit>25600</barrier-count-limit>
                     <echo-reply-timeout>2000</echo-reply-timeout>
index cd7cde7b6f8118d4276b36f057afae977605e443..81a1d0666e6239beafab16f8bea036f55d14177e 100644 (file)
@@ -54,7 +54,7 @@ public class OpenFlowPluginProviderFactoryImpl implements OpenFlowPluginProvider
         openflowPluginProvider.setNotificationProviderService(notificationService);
         openflowPluginProvider.setNotificationPublishService(notificationPublishService);
         openflowPluginProvider.setSwitchFeaturesMandatory(providerConfig.isSwitchFeaturesMandatory());
-        openflowPluginProvider.setIsStatisticsPollingOff(providerConfig.isIsStatisticsPollingOff());
+        openflowPluginProvider.setIsStatisticsPollingOn(providerConfig.isIsStatisticsPollingOn());
         openflowPluginProvider.setIsStatisticsRpcEnabled(providerConfig.isIsStatisticsRpcEnabled());
         openflowPluginProvider.setBarrierCountLimit(providerConfig.getBarrierCountLimit().getValue());
         openflowPluginProvider.setBarrierInterval(providerConfig.getBarrierIntervalTimeoutLimit().getValue());
@@ -66,7 +66,7 @@ public class OpenFlowPluginProviderFactoryImpl implements OpenFlowPluginProvider
         openflowPluginProvider.initialize();
 
         LOG.info("Configured values, " +
-                "StatisticsPollingOff:{}, " +
+                "StatisticsPollingOn:{}, " +
                 "SwitchFeaturesMandatory:{}, " +
                 "BarrierCountLimit:{}, " +
                 "BarrierTimeoutLimit:{}, " +
@@ -75,7 +75,7 @@ public class OpenFlowPluginProviderFactoryImpl implements OpenFlowPluginProvider
                 "ThreadPoolMaxThreads:{}, " +
                 "ThreadPoolTimeout:{}, " +
                 "NotificationFlowRemovedOff:{}",
-                providerConfig.isIsStatisticsPollingOff(),
+                providerConfig.isIsStatisticsPollingOn(),
                 providerConfig.isSwitchFeaturesMandatory(),
                 providerConfig.getBarrierCountLimit().getValue(),
                 providerConfig.getBarrierIntervalTimeoutLimit().getValue(),
index cefeee4aaed326c213465abb564406f13bdd9551..541ba88b529c7a59f905258edf5dac16b84b5f94 100644 (file)
@@ -90,7 +90,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
     private DataBroker dataBroker;
     private Collection<SwitchConnectionProvider> switchConnectionProviders;
     private boolean switchFeaturesMandatory = false;
-    private boolean isStatisticsPollingOff = false;
+    private boolean isStatisticsPollingOn = true;
     private boolean isStatisticsRpcEnabled;
     private boolean isNotificationFlowRemovedOff = false;
     private boolean skipTableFeatures = true;
@@ -119,13 +119,13 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
     }
 
     @Override
-    public boolean isStatisticsPollingOff() {
-        return isStatisticsPollingOff;
+    public boolean isStatisticsPollingOn() {
+        return isStatisticsPollingOn;
     }
 
     @Override
-    public void setIsStatisticsPollingOff(final boolean isStatisticsPollingOff) {
-        this.isStatisticsPollingOff = isStatisticsPollingOff;
+    public void setIsStatisticsPollingOn(final boolean isStatisticsPollingOn) {
+        this.isStatisticsPollingOn = isStatisticsPollingOn;
     }
 
     private void startSwitchConnections() {
@@ -242,7 +242,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
         ((ExtensionConverterProviderKeeper) deviceManager).setExtensionConverterProvider(extensionConverterManager);
 
         rpcManager = new RpcManagerImpl(rpcProviderRegistry, rpcRequestsQuota, extensionConverterManager, convertorManager, notificationPublishService);
-        statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, isStatisticsPollingOff, hashedWheelTimer, convertorManager);
+        statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, isStatisticsPollingOn, hashedWheelTimer, convertorManager);
 
         /* Initialization Phase ordering - OFP Device Context suite */
         // CM -> DM -> SM -> RPC -> Role -> DM
@@ -303,8 +303,8 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF
             }
         }
 
-        if(statisticsManager != null && props.containsKey("is-statistics-polling-off")){
-            statisticsManager.setIsStatisticsPollingOff(Boolean.valueOf(props.get("is-statistics-polling-off").toString()));
+        if(statisticsManager != null && props.containsKey("is-statistics-polling-on")){
+            statisticsManager.setIsStatisticsPollingOn(Boolean.valueOf(props.get("is-statistics-polling-on").toString()));
         }
     }
 
index f984d5e826f9b9d3f2bd95d6ca1df6b0e5284481..eab57c27958dd96bb539a608fb38a525553115a9 100644 (file)
@@ -60,7 +60,7 @@ class StatisticsContextImpl implements StatisticsContext {
     private final DeviceContext deviceContext;
     private final DeviceState devState;
     private final ListenableFuture<Boolean> emptyFuture;
-    private final boolean shuttingDownStatisticsPolling;
+    private final boolean isStatisticsPollingOn;
     private final SinglePurposeMultipartReplyTranslator multipartReplyTranslator;
     private final Object collectionStatTypeLock = new Object();
     @GuardedBy("collectionStatTypeLock")
@@ -81,14 +81,14 @@ class StatisticsContextImpl implements StatisticsContext {
     private ListenableFuture<Boolean> lastDataGathering;
 
     StatisticsContextImpl(@Nonnull final DeviceInfo deviceInfo,
-                          final boolean shuttingDownStatisticsPolling,
+                          final boolean isStatisticsPollingOn,
                           @Nonnull final LifecycleService lifecycleService,
                           @Nonnull final ConvertorExecutor convertorExecutor,
                           @Nonnull final StatisticsManager myManager) {
         this.lifecycleService = lifecycleService;
         this.deviceContext = lifecycleService.getDeviceContext();
         this.devState = Preconditions.checkNotNull(deviceContext.getDeviceState());
-        this.shuttingDownStatisticsPolling = shuttingDownStatisticsPolling;
+        this.isStatisticsPollingOn = isStatisticsPollingOn;
         multipartReplyTranslator = new SinglePurposeMultipartReplyTranslator(convertorExecutor);
         emptyFuture = Futures.immediateFuture(false);
         statisticsGatheringService = new StatisticsGatheringService(this, deviceContext);
@@ -142,7 +142,7 @@ class StatisticsContextImpl implements StatisticsContext {
 
     private ListenableFuture<Boolean> gatherDynamicData(final boolean initial) {
         this.lastDataGathering = null;
-        if (shuttingDownStatisticsPolling) {
+        if (!isStatisticsPollingOn) {
             LOG.debug("Statistics for device {} is not enabled.", getDeviceInfo().getNodeId().getValue());
             return Futures.immediateFuture(Boolean.TRUE);
         }
@@ -505,7 +505,7 @@ class StatisticsContextImpl implements StatisticsContext {
             }
         });
 
-        if (!this.shuttingDownStatisticsPolling) {
+        if (this.isStatisticsPollingOn) {
             myManager.startScheduling(deviceInfo);
         }
 
@@ -516,4 +516,4 @@ class StatisticsContextImpl implements StatisticsContext {
     public void setInitialSubmitHandler(final ClusterInitializationPhaseHandler initialSubmitHandler) {
         this.initialSubmitHandler = initialSubmitHandler;
     }
-}
+}
\ No newline at end of file
index 4f42c85622143f0d4d4088abc3ed37bc4ee68617..5dc3403403460fd88f3469d2997945b603a8c38c 100644 (file)
@@ -69,7 +69,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
 
     private StatisticsWorkMode workMode = StatisticsWorkMode.COLLECTALL;
     private final Semaphore workModeGuard = new Semaphore(1, true);
-    private boolean isStatisticsPollingOff;
+    private boolean isStatisticsPollingOn;
     private BindingAwareBroker.RpcRegistration<StatisticsManagerControlService> controlServiceRegistration;
 
     private final HashedWheelTimer hashedWheelTimer;
@@ -80,7 +80,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
     }
 
     public StatisticsManagerImpl(final RpcProviderRegistry rpcProviderRegistry,
-                                 final boolean isStatisticsPollingOff,
+                                 final boolean isStatisticsPollingOn,
                                  final HashedWheelTimer hashedWheelTimer,
                                  final ConvertorExecutor convertorExecutor) {
         Preconditions.checkArgument(rpcProviderRegistry != null);
@@ -88,7 +88,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         this.controlServiceRegistration = Preconditions.checkNotNull(
                 rpcProviderRegistry.addRpcImplementation(StatisticsManagerControlService.class, this)
         );
-        this.isStatisticsPollingOff = isStatisticsPollingOff;
+        this.isStatisticsPollingOn = isStatisticsPollingOn;
         this.hashedWheelTimer = hashedWheelTimer;
     }
 
@@ -99,7 +99,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         final StatisticsContext statisticsContext =
                 new StatisticsContextImpl(
                         deviceInfo,
-                        isStatisticsPollingOff,
+                        isStatisticsPollingOn,
                         lifecycleService,
                         converterExecutor,
                         this);
@@ -176,7 +176,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         if (LOG.isDebugEnabled()) {
             LOG.debug("SCHEDULING NEXT STATISTICS POLLING for device: {}", deviceInfo.getNodeId());
         }
-        if (!isStatisticsPollingOff) {
+        if (isStatisticsPollingOn) {
             final Timeout pollTimeout = hashedWheelTimer.newTimeout(
                     timeout -> pollStatistics(
                             deviceState,
@@ -231,7 +231,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         if (workModeGuard.tryAcquire()) {
             final StatisticsWorkMode targetWorkMode = input.getMode();
             if (!workMode.equals(targetWorkMode)) {
-                isStatisticsPollingOff = StatisticsWorkMode.FULLYDISABLED.equals(targetWorkMode);
+                isStatisticsPollingOn = !(StatisticsWorkMode.FULLYDISABLED.equals(targetWorkMode));
                 // iterate through stats-ctx: propagate mode
                 for (Map.Entry<DeviceInfo, StatisticsContext> entry : contexts.entrySet()) {
                     final DeviceInfo deviceInfo = entry.getKey();
@@ -271,7 +271,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
 
     @Override
     public void startScheduling(final DeviceInfo deviceInfo) {
-        if (isStatisticsPollingOff) {
+        if (!isStatisticsPollingOn) {
             LOG.info("Statistics are shutdown for device: {}", deviceInfo.getNodeId());
             return;
         }
@@ -333,9 +333,9 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
         this.deviceTerminationPhaseHandler = handler;
     }
 
-   @Override
-    public void setIsStatisticsPollingOff(boolean isStatisticsPollingOff){
-        this.isStatisticsPollingOff = isStatisticsPollingOff;
+    @Override
+    public void setIsStatisticsPollingOn(boolean isStatisticsPollingOn){
+        this.isStatisticsPollingOn = isStatisticsPollingOn;
     }
 
     public void onDeviceRemoved(DeviceInfo deviceInfo) {
index e86ae12ba251fefd5f093801c7401ea573bb3bc1..6c54e4deefae5a59b9356452632a9391a3c19183 100644 (file)
@@ -103,9 +103,9 @@ module openflow-plugin-provider-impl {
                 type uint32;
                 default 131072;
             }
-            leaf is-statistics-polling-off {
+            leaf is-statistics-polling-on {
                 type boolean;
-                default "false";
+                default "true";
             }
             leaf is-statistics-rpc-enabled {
                 status deprecated;
index 5b7c3743505aedcdb3f7643a06d6ac7688fb176a..3df476ab35a580a346b4a330e814ad43e746670c 100644 (file)
@@ -67,7 +67,7 @@ public class StatisticsContextImplParamTest extends StatisticsContextImpMockInit
         when(mockedDeviceContext.getDeviceState()).thenReturn(mockedDeviceState);
 
         final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();
-        final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, lifecycleService ,convertorManager, mockedStatisticsManager);
+        final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, true, lifecycleService ,convertorManager, mockedStatisticsManager);
 
         final ListenableFuture<RpcResult<List<MultipartReply>>> rpcResult = immediateFuture(RpcResultBuilder.success(Collections.<MultipartReply>emptyList()).build());
         when(mockedStatisticsGatheringService.getStatisticsOfType(any(EventIdentifier.class), any(MultipartType
index 7154e7742312d8a020eb8afb1567bd91267fd279..c31e57286b0dd3743236c58ce07d496612c9bb3f 100644 (file)
@@ -56,7 +56,7 @@ public class StatisticsContextImplTest extends StatisticsContextImpMockInitiatio
     }
 
     private void initStatisticsContext() {
-        statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, lifecycleService, convertorManager, mockedStatisticsManager);
+        statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, true, lifecycleService, convertorManager, mockedStatisticsManager);
         statisticsContext.setStatisticsGatheringService(mockedStatisticsGatheringService);
         statisticsContext.setStatisticsGatheringOnTheFlyService(mockedStatisticsOnFlyGatheringService);
     }
@@ -74,7 +74,7 @@ public class StatisticsContextImplTest extends StatisticsContextImpMockInitiatio
      */
     @Test
     public void testClose() throws Exception {
-        final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, false, lifecycleService, convertorManager, mockedStatisticsManager);
+        final StatisticsContextImpl statisticsContext = new StatisticsContextImpl(mockedDeviceInfo, true, lifecycleService, convertorManager, mockedStatisticsManager);
         final RequestContext<Object> requestContext = statisticsContext.createRequestContext();
         statisticsContext.close();
         try {