From fe92a554255070ee37429e69d0baf5c5870621f2 Mon Sep 17 00:00:00 2001 From: Di Xu Date: Thu, 28 Sep 2017 17:38:11 +0800 Subject: [PATCH] add timeout for Openstack cloud provider --- pkg/cloudprovider/providers/openstack/openstack.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go index de13127cbb..eb038dc34f 100644 --- a/pkg/cloudprovider/providers/openstack/openstack.go +++ b/pkg/cloudprovider/providers/openstack/openstack.go @@ -52,6 +52,7 @@ import ( const ( ProviderName = "openstack" AvailabilityZone = "availability_zone" + defaultTimeOut = 60 * time.Second ) var ErrNotFound = errors.New("Failed to find object") @@ -101,7 +102,8 @@ type RouterOpts struct { } type MetadataOpts struct { - SearchOrder string `gcfg:"search-order"` + SearchOrder string `gcfg:"search-order"` + RequestTimeout MyDuration `gcfg:"request-timeout"` } // OpenStack is an implementation of cloud provider Interface for OpenStack. @@ -290,6 +292,12 @@ func newOpenStack(cfg Config) (*OpenStack, error) { return nil, err } + emptyDuration := MyDuration{} + if cfg.Metadata.RequestTimeout == emptyDuration { + cfg.Metadata.RequestTimeout.Duration = time.Duration(defaultTimeOut) + } + provider.HTTPClient.Timeout = cfg.Metadata.RequestTimeout.Duration + os := OpenStack{ provider: provider, region: cfg.Global.Region,