Skip to content

Commit 4685096

Browse files
Marc Sensenichmarc-sensenich
authored andcommitted
Set Azure Rate Limit Defaults from Env
Signed-off-by: Marc Sensenich <[email protected]>
1 parent f114438 commit 4685096

File tree

1 file changed

+53
-8
lines changed

1 file changed

+53
-8
lines changed

cluster-autoscaler/cloudprovider/azure/azure_manager.go

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)