[VOL-3803] : Provide a global flag for enable/disable metrics collection at startup
- Provide a global flag for enable/disable metrics collection at startup
- Minor fixes in metrics collection code.

Change-Id: I80f89aa3416e94fc0cd64d54ba4d885139b623d1
diff --git a/internal/pkg/onuadaptercore/device_handler.go b/internal/pkg/onuadaptercore/device_handler.go
index 7405f20..bc8a185 100644
--- a/internal/pkg/onuadaptercore/device_handler.go
+++ b/internal/pkg/onuadaptercore/device_handler.go
@@ -256,7 +256,8 @@
 			logger.Errorw(ctx, "Device FSM: Can't go to state DeviceInit", log.Fields{"err": err})
 		}
 		logger.Debugw(ctx, "Device FSM: ", log.Fields{"state": string(dh.pDeviceStateFsm.Current())})
-		if device.PmConfigs == nil { // device.PmConfigs is not nil in cases when adapter restarts. We should not re-set the core again.
+		// device.PmConfigs is not nil in cases when adapter restarts. We should not re-set the core again.
+		if device.PmConfigs == nil {
 			// Now, set the initial PM configuration for that device
 			if err := dh.coreProxy.DevicePMConfigUpdate(ctx, dh.pmConfigs); err != nil {
 				logger.Errorw(ctx, "error updating pm config to core", log.Fields{"device-id": dh.deviceID, "err": err})
@@ -1542,7 +1543,8 @@
 			}
 		}
 	}
-	// Stop collector routine for PM Counters
+
+	// Stop collector routine
 	dh.stopCollector <- true
 
 	return nil
@@ -2587,7 +2589,7 @@
 	// Check if standalone metric related config is updated
 	for _, v := range pmConfigs.Metrics {
 		dh.pOnuMetricsMgr.onuMetricsManagerLock.RLock()
-		m, ok := dh.pOnuMetricsMgr.groupMetricMap[v.Name]
+		m, ok := dh.pOnuMetricsMgr.standaloneMetricMap[v.Name]
 		dh.pOnuMetricsMgr.onuMetricsManagerLock.RUnlock()
 
 		if ok && m.frequency != v.SampleFreq {
@@ -2625,9 +2627,9 @@
 				// If the current time is eqaul to or greater than the nextGlobalMetricCollectionTime, collect the group and standalone metrics
 				if time.Now().Equal(dh.pOnuMetricsMgr.nextGlobalMetricCollectionTime) || time.Now().After(dh.pOnuMetricsMgr.nextGlobalMetricCollectionTime) {
 					go dh.pOnuMetricsMgr.collectAllGroupAndStandaloneMetrics(ctx)
+					// Update the next metric collection time.
+					dh.pOnuMetricsMgr.nextGlobalMetricCollectionTime = time.Now().Add(time.Duration(dh.pmConfigs.DefaultFreq) * time.Second)
 				}
-				// Update the next metric collection time.
-				dh.pOnuMetricsMgr.nextGlobalMetricCollectionTime = time.Now().Add(time.Duration(dh.pmConfigs.DefaultFreq) * time.Second)
 			} else {
 				if dh.pmConfigs.Grouped { // metrics are managed as a group
 					// parse through the group and standalone metrics to see it is time to collect their metrics