diff --git a/cns/configuration/cns_config.json b/cns/configuration/cns_config.json index 2efba1def7..0cc1797962 100644 --- a/cns/configuration/cns_config.json +++ b/cns/configuration/cns_config.json @@ -29,6 +29,9 @@ "MSISettings": { "ResourceID": "" }, - "PopulateHomeAzCacheRetryIntervalSecs": 15, - "MellanoxMonitorIntervalSecs": 30 + "MellanoxMonitorIntervalSecs": 30, + "AZRSettings": { + "EnableAZR": false, + "PopulateHomeAzCacheRetryIntervalSecs": 60 + } } diff --git a/cns/configuration/configuration.go b/cns/configuration/configuration.go index 9500fceeb2..8e05d4a40a 100644 --- a/cns/configuration/configuration.go +++ b/cns/configuration/configuration.go @@ -20,30 +20,30 @@ const ( ) type CNSConfig struct { - ChannelMode string - EnablePprof bool - EnableSubnetScarcity bool - InitializeFromCNI bool - ManagedSettings ManagedSettings - MetricsBindAddress string - SyncHostNCTimeoutMs int - SyncHostNCVersionIntervalMs int - TLSCertificatePath string - TLSEndpoint string - TLSPort string - TLSSubjectName string - TelemetrySettings TelemetrySettings - UseHTTPS bool - WireserverIP string - KeyVaultSettings KeyVaultSettings - MSISettings MSISettings - ProgramSNATIPTables bool - ManageEndpointState bool - CNIConflistScenario string - EnableCNIConflistGeneration bool - CNIConflistFilepath string - PopulateHomeAzCacheRetryIntervalSecs int - MellanoxMonitorIntervalSecs int + ChannelMode string + EnablePprof bool + EnableSubnetScarcity bool + InitializeFromCNI bool + ManagedSettings ManagedSettings + MetricsBindAddress string + SyncHostNCTimeoutMs int + SyncHostNCVersionIntervalMs int + TLSCertificatePath string + TLSEndpoint string + TLSPort string + TLSSubjectName string + TelemetrySettings TelemetrySettings + UseHTTPS bool + WireserverIP string + KeyVaultSettings KeyVaultSettings + MSISettings MSISettings + ProgramSNATIPTables bool + ManageEndpointState bool + CNIConflistScenario string + EnableCNIConflistGeneration bool + CNIConflistFilepath string + MellanoxMonitorIntervalSecs int + AZRSettings AZRSettings } type TelemetrySettings struct { @@ -80,6 +80,11 @@ type ManagedSettings struct { NodeSyncIntervalInSeconds int } +type AZRSettings struct { + EnableAZR bool + PopulateHomeAzCacheRetryIntervalSecs int +} + type MSISettings struct { ResourceID string } @@ -165,6 +170,13 @@ func setManagedSettingDefaults(managedSettings *ManagedSettings) { } } +func setAZRSettingsDefaults(azrSettings *AZRSettings) { + if azrSettings.PopulateHomeAzCacheRetryIntervalSecs == 0 { + // set the default PopulateHomeAzCache retry interval to 60 seconds + azrSettings.PopulateHomeAzCacheRetryIntervalSecs = 60 + } +} + func setKeyVaultSettingsDefaults(kvs *KeyVaultSettings) { if kvs.RefreshIntervalInHrs == 0 { kvs.RefreshIntervalInHrs = 12 //nolint:gomnd // default times @@ -176,6 +188,7 @@ func SetCNSConfigDefaults(config *CNSConfig) { setTelemetrySettingDefaults(&config.TelemetrySettings) setManagedSettingDefaults(&config.ManagedSettings) setKeyVaultSettingsDefaults(&config.KeyVaultSettings) + setAZRSettingsDefaults(&config.AZRSettings) if config.ChannelMode == "" { config.ChannelMode = cns.Direct @@ -189,10 +202,6 @@ func SetCNSConfigDefaults(config *CNSConfig) { if config.SyncHostNCTimeoutMs == 0 { config.SyncHostNCTimeoutMs = 500 //nolint:gomnd // default times } - if config.PopulateHomeAzCacheRetryIntervalSecs == 0 { - // set the default PopulateHomeAzCache retry interval to 30 seconds - config.PopulateHomeAzCacheRetryIntervalSecs = 30 - } if config.WireserverIP == "" { config.WireserverIP = "168.63.129.16" } diff --git a/cns/configuration/configuration_test.go b/cns/configuration/configuration_test.go index a1cfaa3ce5..c6d27c4345 100644 --- a/cns/configuration/configuration_test.go +++ b/cns/configuration/configuration_test.go @@ -83,6 +83,10 @@ func TestReadConfigFromFile(t *testing.T) { TelemetryBatchIntervalInSecs: 15, TelemetryBatchSizeBytes: 16384, }, + AZRSettings: AZRSettings{ + EnableAZR: true, + PopulateHomeAzCacheRetryIntervalSecs: 60, + }, UseHTTPS: true, WireserverIP: "168.63.129.16", }, @@ -206,8 +210,10 @@ func TestSetCNSConfigDefaults(t *testing.T) { KeyVaultSettings: KeyVaultSettings{ RefreshIntervalInHrs: 12, }, - PopulateHomeAzCacheRetryIntervalSecs: 30, - WireserverIP: "168.63.129.16", + AZRSettings: AZRSettings{ + PopulateHomeAzCacheRetryIntervalSecs: 60, + }, + WireserverIP: "168.63.129.16", }, }, { @@ -230,7 +236,10 @@ func TestSetCNSConfigDefaults(t *testing.T) { KeyVaultSettings: KeyVaultSettings{ RefreshIntervalInHrs: 3, }, - PopulateHomeAzCacheRetryIntervalSecs: 10, + AZRSettings: AZRSettings{ + EnableAZR: true, + PopulateHomeAzCacheRetryIntervalSecs: 10, + }, }, want: CNSConfig{ ChannelMode: "Other", @@ -250,8 +259,11 @@ func TestSetCNSConfigDefaults(t *testing.T) { KeyVaultSettings: KeyVaultSettings{ RefreshIntervalInHrs: 3, }, - PopulateHomeAzCacheRetryIntervalSecs: 10, - WireserverIP: "168.63.129.16", + AZRSettings: AZRSettings{ + EnableAZR: true, + PopulateHomeAzCacheRetryIntervalSecs: 10, + }, + WireserverIP: "168.63.129.16", }, }, } diff --git a/cns/configuration/testdata/good.json b/cns/configuration/testdata/good.json index f80acb89a1..a84c563792 100644 --- a/cns/configuration/testdata/good.json +++ b/cns/configuration/testdata/good.json @@ -30,5 +30,9 @@ "TelemetryBatchSizeBytes": 16384 }, "UseHTTPS": true, - "WireserverIP": "168.63.129.16" + "WireserverIP": "168.63.129.16", + "AZRSettings": { + "EnableAZR": true, + "PopulateHomeAzCacheRetryIntervalSecs": 60 + } } diff --git a/cns/service/main.go b/cns/service/main.go index d4b189e2d1..1d19970ff4 100644 --- a/cns/service/main.go +++ b/cns/service/main.go @@ -567,9 +567,11 @@ func main() { return } - homeAzMonitor := restserver.NewHomeAzMonitor(nmaClient, time.Duration(cnsconfig.PopulateHomeAzCacheRetryIntervalSecs)*time.Second) - logger.Printf("start the goroutine for refreshing homeAz") - homeAzMonitor.Start() + homeAzMonitor := restserver.NewHomeAzMonitor(nmaClient, time.Duration(cnsconfig.AZRSettings.PopulateHomeAzCacheRetryIntervalSecs)*time.Second) + if cnsconfig.AZRSettings.EnableAZR { + logger.Printf("start the goroutine for refreshing homeAz") + homeAzMonitor.Start() + } if cnsconfig.ChannelMode == cns.Managed { config.ChannelMode = cns.Managed @@ -903,8 +905,10 @@ func main() { } } - logger.Printf("end the goroutine for refreshing homeAz") - homeAzMonitor.Stop() + if cnsconfig.AZRSettings.EnableAZR { + logger.Printf("end the goroutine for refreshing homeAz") + homeAzMonitor.Stop() + } logger.Printf("stop cns service") // Cleanup.