VOL-3894 Support for alarm audit interval configuration through helm charts

Change-Id: Ibc0761a074ab8283acfdf31d88cb0fb1d1610c95
diff --git a/internal/pkg/onuadaptercore/onu_device_entry.go b/internal/pkg/onuadaptercore/onu_device_entry.go
index db33270..c52f96a 100644
--- a/internal/pkg/onuadaptercore/onu_device_entry.go
+++ b/internal/pkg/onuadaptercore/onu_device_entry.go
@@ -241,21 +241,22 @@
 }
 
 type onuPersistentData struct {
-	PersOnuID            uint32          `json:"onu_id"`
-	PersIntfID           uint32          `json:"intf_id"`
-	PersSerialNumber     string          `json:"serial_number"`
-	PersMacAddress       string          `json:"mac_address"`
-	PersVendorID         string          `json:"vendor_id"`
-	PersEquipmentID      string          `json:"equipment_id"`
-	PersActiveSwVersion  string          `json:"active_sw_version"`
-	PersAdminState       string          `json:"admin_state"`
-	PersOperState        string          `json:"oper_state"`
-	PersUniUnlockDone    bool            `json:"uni_unlock_done"`
-	PersUniDisableDone   bool            `json:"uni_disable_done"`
-	PersMibAuditInterval time.Duration   `json:"mib_audit_interval"`
-	PersMibLastDbSync    uint32          `json:"mib_last_db_sync"`
-	PersMibDataSyncAdpt  uint8           `json:"mib_data_sync_adpt"`
-	PersUniConfig        []uniPersConfig `json:"uni_config"`
+	PersOnuID              uint32          `json:"onu_id"`
+	PersIntfID             uint32          `json:"intf_id"`
+	PersSerialNumber       string          `json:"serial_number"`
+	PersMacAddress         string          `json:"mac_address"`
+	PersVendorID           string          `json:"vendor_id"`
+	PersEquipmentID        string          `json:"equipment_id"`
+	PersActiveSwVersion    string          `json:"active_sw_version"`
+	PersAdminState         string          `json:"admin_state"`
+	PersOperState          string          `json:"oper_state"`
+	PersUniUnlockDone      bool            `json:"uni_unlock_done"`
+	PersUniDisableDone     bool            `json:"uni_disable_done"`
+	PersMibAuditInterval   time.Duration   `json:"mib_audit_interval"`
+	PersMibLastDbSync      uint32          `json:"mib_last_db_sync"`
+	PersMibDataSyncAdpt    uint8           `json:"mib_data_sync_adpt"`
+	PersUniConfig          []uniPersConfig `json:"uni_config"`
+	PersAlarmAuditInterval time.Duration   `json:"alarm_audit_interval"`
 }
 
 // OnuDeviceEntry - ONU device info and FSM events.
@@ -282,7 +283,8 @@
 	supportedFsms OmciDeviceFsms
 	devState      OnuDeviceEvent
 	// Audit and MDS
-	mibAuditInterval time.Duration
+	mibAuditInterval   time.Duration
+	alarmAuditInterval time.Duration
 	// TODO: periodical mib resync will be implemented with story VOL-3792
 	//mibNextDbResync uint32
 
@@ -344,13 +346,17 @@
 	if !dh.isReconciling() {
 		onuDeviceEntry.mibAuditInterval = onuDeviceEntry.supportedFsms["mib-synchronizer"].auditInterval
 		onuDeviceEntry.sOnuPersistentData.PersMibAuditInterval = onuDeviceEntry.mibAuditInterval
+		onuDeviceEntry.alarmAuditInterval = dh.pOpenOnuAc.alarmAuditInterval
+		onuDeviceEntry.sOnuPersistentData.PersAlarmAuditInterval = onuDeviceEntry.alarmAuditInterval
 	} else {
 		logger.Debugw(ctx, "reconciling - take audit interval from persistent data", log.Fields{"device-id": dh.deviceID})
 		// TODO: This is a preparation for VOL-VOL-3811 to preserve config history in case of
 		// vendor- or deviceID-specific configurations via voltctl-commands
 		onuDeviceEntry.mibAuditInterval = onuDeviceEntry.sOnuPersistentData.PersMibAuditInterval
+		onuDeviceEntry.alarmAuditInterval = onuDeviceEntry.sOnuPersistentData.PersAlarmAuditInterval
 	}
-	logger.Debugw(ctx, "MibAudit is set to", log.Fields{"Interval": onuDeviceEntry.mibAuditInterval})
+	logger.Debugw(ctx, "MibAuditInterval and AlarmAuditInterval is set to", log.Fields{"mib-audit-interval": onuDeviceEntry.mibAuditInterval,
+		"alarm-audit-interval": onuDeviceEntry.alarmAuditInterval})
 	// TODO: periodical mib resync will be implemented with story VOL-3792
 	//onuDeviceEntry.mibNextDbResync = 0
 
@@ -597,7 +603,7 @@
 	oo.persUniConfigMutex.Lock()
 	defer oo.persUniConfigMutex.Unlock()
 	oo.sOnuPersistentData =
-		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0)}
+		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0), oo.alarmAuditInterval}
 	oo.onuKVStoreMutex.RLock()
 	Value, err := oo.onuKVStore.Get(ctx, oo.onuKVStorePath)
 	oo.onuKVStoreMutex.RUnlock()
@@ -651,7 +657,7 @@
 
 	oo.sOnuPersistentData.PersUniConfig = nil //releasing all UniConfig entries to garbage collector default entry
 	oo.sOnuPersistentData =
-		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0)}
+		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0), oo.alarmAuditInterval}
 	logger.Debugw(ctx, "delete ONU-data from KVStore", log.Fields{"device-id": oo.deviceID})
 	oo.onuKVStoreMutex.Lock()
 	err := oo.onuKVStore.Delete(ctx, oo.onuKVStorePath)