Allow configure the number of http retries

Allow setting the maximum number of times we want to retry to
http_connect when communicating with the Identity service.

Closes-Bug: 1209194
Change-Id: I56bff55dc808a1188d42f1643a8018a8d49012c6
This commit is contained in:
Chmouel Boudjnah
2013-08-21 09:36:27 +02:00
parent becec90286
commit cf966b950a
2 changed files with 22 additions and 1 deletions

View File

@@ -228,6 +228,10 @@ opts = [
default=None,
help='Request timeout value for communicating with Identity'
' API server.'),
cfg.IntOpt('http_request_max_retries',
default=3,
help='How many times are we trying to reconnect when'
' communicating with Identity API Server.'),
cfg.StrOpt('http_handler',
default=None,
help='Allows to pass in the name of a fake http_handler'
@@ -428,7 +432,8 @@ class AuthProtocol(object):
self.http_connect_timeout = (http_connect_timeout_cfg and
int(http_connect_timeout_cfg))
self.auth_version = None
self.http_request_max_retries = 3
self.http_request_max_retries = \
self._conf_get('http_request_max_retries')
def _assert_valid_memcache_protection_config(self):
if self._memcache_security_strategy:

View File

@@ -26,6 +26,7 @@ import testtools
import uuid
import fixtures
import mock
import webob
from keystoneclient.common import cms
@@ -1282,6 +1283,21 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
self.middleware(req.environ, self.start_fake_response)
self.assertEqual(self._get_cached_token(token), None)
def test_http_request_max_retries(self):
times_retry = 10
req = webob.Request.blank('/')
token = self.token_dict['uuid_token_default']
req.headers['X-Auth-Token'] = token
self.set_middleware(conf=dict(http_request_max_retries=times_retry))
with mock.patch('time.sleep') as mock_obj:
self.set_fake_http(RaisingHTTPNetworkError)
self.middleware(req.environ, self.start_fake_response)
self.assertEqual(mock_obj.call_count, times_retry)
class CertDownloadMiddlewareTest(BaseAuthTokenMiddlewareTest):
def setUp(self):