From a86062c2593cb626eaea90025c346ee2c773c655 Mon Sep 17 00:00:00 2001 From: "Khaled Henidak(Kal)" Date: Tue, 13 Feb 2018 20:56:53 +0000 Subject: [PATCH] Configuration changes --- pkg/cloudprovider/providers/azure/azure.go | 31 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/pkg/cloudprovider/providers/azure/azure.go b/pkg/cloudprovider/providers/azure/azure.go index 91378ecae5a..0b67583c845 100644 --- a/pkg/cloudprovider/providers/azure/azure.go +++ b/pkg/cloudprovider/providers/azure/azure.go @@ -97,10 +97,14 @@ type Config struct { CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter" yaml:"cloudProviderBackoffJitter"` // Enable rate limiting CloudProviderRateLimit bool `json:"cloudProviderRateLimit" yaml:"cloudProviderRateLimit"` - // Rate limit QPS + // Rate limit QPS (Read) CloudProviderRateLimitQPS float32 `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"` // Rate limit Bucket Size CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucket"` + // Rate limit QPS (Write) + CloudProviderRateLimitQPSWrite float32 `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPSWrite"` + // Rate limit Bucket Size + CloudProviderRateLimitBucketWrite int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucketWrite"` // Use instance metadata service where possible UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"` @@ -168,6 +172,10 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) { // operationPollRateLimiter.Accept() is a no-op if rate limits are configured off. operationPollRateLimiter := flowcontrol.NewFakeAlwaysRateLimiter() + operationPollRateLimiterWrite := flowcontrol.NewFakeAlwaysRateLimiter() + + // If reader is provided (and no writer) we will + // use the same value for both. if config.CloudProviderRateLimit { // Assign rate limit defaults if no configuration was passed in if config.CloudProviderRateLimitQPS == 0 { @@ -176,12 +184,29 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) { if config.CloudProviderRateLimitBucket == 0 { config.CloudProviderRateLimitBucket = rateLimitBucketDefault } + if config.CloudProviderRateLimitQPSWrite == 0 { + config.CloudProviderRateLimitQPSWrite = rateLimitQPSDefault + } + if config.CloudProviderRateLimitBucketWrite == 0 { + config.CloudProviderRateLimitBucketWrite = rateLimitBucketDefault + } + operationPollRateLimiter = flowcontrol.NewTokenBucketRateLimiter( config.CloudProviderRateLimitQPS, config.CloudProviderRateLimitBucket) - glog.V(2).Infof("Azure cloudprovider using rate limit config: QPS=%g, bucket=%d", + + operationPollRateLimiterWrite = flowcontrol.NewTokenBucketRateLimiter( + config.CloudProviderRateLimitQPSWrite, + config.CloudProviderRateLimitBucketWrite) + + glog.V(2).Infof("Azure cloudprovider (read ops) using rate limit config: QPS=%g, bucket=%d", config.CloudProviderRateLimitQPS, config.CloudProviderRateLimitBucket) + + glog.V(2).Infof("Azure cloudprovider (write ops) using rate limit config: QPS=%g, bucket=%d", + config.CloudProviderRateLimitQPSWrite, + config.CloudProviderRateLimitBucketWrite) + } azClientConfig := &azClientConfig{ @@ -189,7 +214,7 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) { resourceManagerEndpoint: env.ResourceManagerEndpoint, servicePrincipalToken: servicePrincipalToken, rateLimiterReader: operationPollRateLimiter, - rateLimiterWriter: operationPollRateLimiter, + rateLimiterWriter: operationPollRateLimiterWrite, } az := Cloud{ Config: *config,