Configuration changes

This commit is contained in:
Khaled Henidak(Kal) 2018-02-13 20:56:53 +00:00
parent 5bf6b0fd70
commit a86062c259

View File

@ -97,10 +97,14 @@ type Config struct {
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter" yaml:"cloudProviderBackoffJitter"` CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter" yaml:"cloudProviderBackoffJitter"`
// Enable rate limiting // Enable rate limiting
CloudProviderRateLimit bool `json:"cloudProviderRateLimit" yaml:"cloudProviderRateLimit"` CloudProviderRateLimit bool `json:"cloudProviderRateLimit" yaml:"cloudProviderRateLimit"`
// Rate limit QPS // Rate limit QPS (Read)
CloudProviderRateLimitQPS float32 `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"` CloudProviderRateLimitQPS float32 `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"`
// Rate limit Bucket Size // Rate limit Bucket Size
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucket"` 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 // Use instance metadata service where possible
UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"` 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.Accept() is a no-op if rate limits are configured off.
operationPollRateLimiter := flowcontrol.NewFakeAlwaysRateLimiter() operationPollRateLimiter := flowcontrol.NewFakeAlwaysRateLimiter()
operationPollRateLimiterWrite := flowcontrol.NewFakeAlwaysRateLimiter()
// If reader is provided (and no writer) we will
// use the same value for both.
if config.CloudProviderRateLimit { if config.CloudProviderRateLimit {
// Assign rate limit defaults if no configuration was passed in // Assign rate limit defaults if no configuration was passed in
if config.CloudProviderRateLimitQPS == 0 { if config.CloudProviderRateLimitQPS == 0 {
@ -176,12 +184,29 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) {
if config.CloudProviderRateLimitBucket == 0 { if config.CloudProviderRateLimitBucket == 0 {
config.CloudProviderRateLimitBucket = rateLimitBucketDefault config.CloudProviderRateLimitBucket = rateLimitBucketDefault
} }
if config.CloudProviderRateLimitQPSWrite == 0 {
config.CloudProviderRateLimitQPSWrite = rateLimitQPSDefault
}
if config.CloudProviderRateLimitBucketWrite == 0 {
config.CloudProviderRateLimitBucketWrite = rateLimitBucketDefault
}
operationPollRateLimiter = flowcontrol.NewTokenBucketRateLimiter( operationPollRateLimiter = flowcontrol.NewTokenBucketRateLimiter(
config.CloudProviderRateLimitQPS, config.CloudProviderRateLimitQPS,
config.CloudProviderRateLimitBucket) 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.CloudProviderRateLimitQPS,
config.CloudProviderRateLimitBucket) config.CloudProviderRateLimitBucket)
glog.V(2).Infof("Azure cloudprovider (write ops) using rate limit config: QPS=%g, bucket=%d",
config.CloudProviderRateLimitQPSWrite,
config.CloudProviderRateLimitBucketWrite)
} }
azClientConfig := &azClientConfig{ azClientConfig := &azClientConfig{
@ -189,7 +214,7 @@ func NewCloud(configReader io.Reader) (cloudprovider.Interface, error) {
resourceManagerEndpoint: env.ResourceManagerEndpoint, resourceManagerEndpoint: env.ResourceManagerEndpoint,
servicePrincipalToken: servicePrincipalToken, servicePrincipalToken: servicePrincipalToken,
rateLimiterReader: operationPollRateLimiter, rateLimiterReader: operationPollRateLimiter,
rateLimiterWriter: operationPollRateLimiter, rateLimiterWriter: operationPollRateLimiterWrite,
} }
az := Cloud{ az := Cloud{
Config: *config, Config: *config,