PR#1172: make timeout of authentication configurable

Merges #1172
https://pagure.io/koji/pull-request/1172

Fixes: #1171
https://pagure.io/koji/issue/1171
GSSAPI authentication timeout should be able to be configured
This commit is contained in:
Mike McLean 2018-11-27 10:39:22 -05:00
commit a05478e22c
2 changed files with 22 additions and 7 deletions

View file

@ -39,3 +39,9 @@
;enabled plugins for CLI, runroot and save_failed_tree are available
;plugins =
;timeout of XMLRPC requests by seconds, default: 60 * 60 * 12 = 43200
;timeout = 43200
;timeout of GSSAPI/SSL authentication by seconds, default: 60
;auth_timeout = 60

View file

@ -268,6 +268,10 @@ BASEDIR = '/mnt/koji'
# default task priority
PRIO_DEFAULT = 20
# default timeouts
DEFAULT_REQUEST_TIMEOUT = 60 * 60 * 12
DEFAULT_AUTH_TIMEOUT = 60
## BEGIN kojikamid dup
#Exceptions
@ -1647,7 +1651,8 @@ def read_config(profile_name, user_config=None):
'offline_retry' : None,
'offline_retry_interval' : None,
'keepalive' : True,
'timeout' : None,
'timeout' : DEFAULT_REQUEST_TIMEOUT,
'auth_timeout' : DEFAULT_AUTH_TIMEOUT,
'use_fast_upload': False,
'upload_blocksize': 1048576,
'poll_interval': 6,
@ -1719,7 +1724,8 @@ def read_config(profile_name, user_config=None):
'debug', 'debug_xmlrpc', 'krb_canon_host'):
result[name] = config.getboolean(profile_name, name)
elif name in ('max_retries', 'retry_interval',
'offline_retry_interval', 'poll_interval', 'timeout',
'offline_retry_interval', 'poll_interval',
'timeout', 'auth_timeout',
'upload_blocksize', 'pyver'):
try:
result[name] = int(value)
@ -2037,6 +2043,7 @@ def grab_session_options(options):
'anon_retry',
'keepalive',
'timeout',
'auth_timeout',
'use_fast_upload',
'upload_blocksize',
'krb_rdns',
@ -2074,7 +2081,7 @@ class ClientSession(object):
self.logger = logging.getLogger('koji')
self.rsession = None
self.new_session()
self.opts.setdefault('timeout', 60 * 60 * 12)
self.opts.setdefault('timeout', DEFAULT_REQUEST_TIMEOUT)
def new_session(self):
@ -2233,13 +2240,14 @@ class ClientSession(object):
# Force a new session
self.new_session()
# 60 second timeout during login
sinfo = None
old_env = {}
old_opts = self.opts
self.opts = old_opts.copy()
try:
self.opts['timeout'] = 60
# temporary timeout value during login
self.opts['timeout'] = self.opts.get('auth_timeout',
DEFAULT_AUTH_TIMEOUT)
kwargs = {}
if keytab:
old_env['KRB5_CLIENT_KTNAME'] = os.environ.get('KRB5_CLIENT_KTNAME')
@ -2301,10 +2309,11 @@ class ClientSession(object):
# Force a new session
self.new_session()
# 60 second timeout during login
old_opts = self.opts
self.opts = old_opts.copy()
self.opts['timeout'] = 60
# temporary timeout value during login
self.opts['timeout'] = self.opts.get('auth_timeout',
DEFAULT_AUTH_TIMEOUT)
self.opts['cert'] = cert
self.opts['serverca'] = serverca
try: