@@ -148,31 +148,72 @@ type Config struct {
148148}
149149
150150// InitializeCloudProviderRateLimitConfig initializes rate limit configs.
151- func InitializeCloudProviderRateLimitConfig (config * CloudProviderRateLimitConfig ) {
151+ func InitializeCloudProviderRateLimitConfig (config * CloudProviderRateLimitConfig ) error {
152152 if config == nil {
153- return
153+ return nil
154154 }
155155
156156 // Assign read rate limit defaults if no configuration was passed in.
157157 if config .CloudProviderRateLimitQPS == 0 {
158- config .CloudProviderRateLimitQPS = rateLimitQPSDefault
158+ if rateLimitQPSFromEnv := os .Getenv ("RATE_LIMIT_READ_QPS" ); rateLimitQPSFromEnv != "" {
159+ rateLimitQPS , err := strconv .ParseFloat (rateLimitQPSFromEnv , 0 )
160+ if err != nil {
161+ return fmt .Errorf ("failed to parse RATE_LIMIT_READ_QPS: %q, %v" , rateLimitQPSFromEnv , err )
162+ }
163+ klog .V (4 ).Infof ("Set read rate limit QPS to %f" , rateLimitQPS )
164+ config .CloudProviderRateLimitQPS = float32 (rateLimitQPS )
165+ } else {
166+ config .CloudProviderRateLimitQPS = rateLimitQPSDefault
167+ }
159168 }
169+
160170 if config .CloudProviderRateLimitBucket == 0 {
161- config .CloudProviderRateLimitBucket = rateLimitBucketDefault
171+ if rateLimitBucketFromEnv := os .Getenv ("RATE_LIMIT_READ_BUCKETS" ); rateLimitBucketFromEnv != "" {
172+ rateLimitBucket , err := strconv .ParseInt (rateLimitBucketFromEnv , 10 , 0 )
173+ if err != nil {
174+ return fmt .Errorf ("failed to parse RATE_LIMIT_READ_BUCKETS: %q, %v" , rateLimitBucketFromEnv , err )
175+ }
176+ config .CloudProviderRateLimitBucket = int (rateLimitBucket )
177+ klog .V (4 ).Infof ("Set read rate limit buckets to %d" , rateLimitBucket )
178+ } else {
179+ config .CloudProviderRateLimitBucket = rateLimitBucketDefault
180+ }
162181 }
163- // Assing write rate limit defaults if no configuration was passed in.
182+
183+ // Assign write rate limit defaults if no configuration was passed in.
164184 if config .CloudProviderRateLimitQPSWrite == 0 {
165- config .CloudProviderRateLimitQPSWrite = config .CloudProviderRateLimitQPS
185+ if rateLimitQPSWriteFromEnv := os .Getenv ("RATE_LIMIT_WRITE_QPS" ); rateLimitQPSWriteFromEnv != "" {
186+ rateLimitQPSWrite , err := strconv .ParseFloat (rateLimitQPSWriteFromEnv , 0 )
187+ if err != nil {
188+ return fmt .Errorf ("failed to parse RATE_LIMIT_WRITE_QPS: %q, %v" , rateLimitQPSWriteFromEnv , err )
189+ }
190+ config .CloudProviderRateLimitQPSWrite = float32 (rateLimitQPSWrite )
191+ klog .V (4 ).Infof ("Set write rate limit QPS to %f" , rateLimitQPSWrite )
192+ } else {
193+ config .CloudProviderRateLimitQPSWrite = config .CloudProviderRateLimitQPS
194+ }
166195 }
196+
167197 if config .CloudProviderRateLimitBucketWrite == 0 {
168- config .CloudProviderRateLimitBucketWrite = config .CloudProviderRateLimitBucket
198+ if rateLimitBucketWriteFromEnv := os .Getenv ("RATE_LIMIT_WRITE_BUCKETS" ); rateLimitBucketWriteFromEnv != "" {
199+ rateLimitBucketWrite , err := strconv .ParseInt (rateLimitBucketWriteFromEnv , 10 , 0 )
200+ if err != nil {
201+ return fmt .Errorf ("failed to parse RATE_LIMIT_WRITE_BUCKET: %q, %v" , rateLimitBucketWriteFromEnv , err )
202+ }
203+ klog .V (4 ).Infof ("Set write rate limit buckets to %d" , rateLimitBucketWrite )
204+ config .CloudProviderRateLimitBucketWrite = int (rateLimitBucketWrite )
205+ } else {
206+ config .CloudProviderRateLimitBucketWrite = config .CloudProviderRateLimitBucket
207+ }
169208 }
170209
171210 config .InterfaceRateLimit = overrideDefaultRateLimitConfig (& config .RateLimitConfig , config .InterfaceRateLimit )
172211 config .VirtualMachineRateLimit = overrideDefaultRateLimitConfig (& config .RateLimitConfig , config .VirtualMachineRateLimit )
173212 config .StorageAccountRateLimit = overrideDefaultRateLimitConfig (& config .RateLimitConfig , config .StorageAccountRateLimit )
174213 config .DiskRateLimit = overrideDefaultRateLimitConfig (& config .RateLimitConfig , config .DiskRateLimit )
175214 config .VirtualMachineScaleSetRateLimit = overrideDefaultRateLimitConfig (& config .RateLimitConfig , config .VirtualMachineScaleSetRateLimit )
215+
216+ return nil
176217}
177218
178219// overrideDefaultRateLimitConfig overrides the default CloudProviderRateLimitConfig.
@@ -358,7 +399,11 @@ func CreateAzureManager(configReader io.Reader, discoveryOpts cloudprovider.Node
358399 return nil , fmt .Errorf ("failed to parse CLOUD_PROVIDER_RATE_LIMIT: %q, %v" , cloudProviderRateLimit , err )
359400 }
360401 }
361- InitializeCloudProviderRateLimitConfig (& cfg .CloudProviderRateLimitConfig )
402+
403+ err = InitializeCloudProviderRateLimitConfig (& cfg .CloudProviderRateLimitConfig )
404+ if err != nil {
405+ return nil , err
406+ }
362407
363408 // Defaulting vmType to vmss.
364409 if cfg .VMType == "" {
0 commit comments