mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
Merge pull request #27286 from terminalmage/return_retry_timer
Add a configurable timer for minion return retries
This commit is contained in:
commit
775a4f9ad0
@ -150,6 +150,8 @@ VALID_OPTS = {
|
|||||||
'recon_max': float,
|
'recon_max': float,
|
||||||
'recon_default': float,
|
'recon_default': float,
|
||||||
'recon_randomize': float,
|
'recon_randomize': float,
|
||||||
|
'return_retry_timer': int,
|
||||||
|
'return_retry_random': bool,
|
||||||
'event_return': str,
|
'event_return': str,
|
||||||
'event_return_queue': int,
|
'event_return_queue': int,
|
||||||
'event_return_whitelist': list,
|
'event_return_whitelist': list,
|
||||||
@ -413,6 +415,8 @@ DEFAULT_MINION_OPTS = {
|
|||||||
'recon_max': 10000,
|
'recon_max': 10000,
|
||||||
'recon_default': 1000,
|
'recon_default': 1000,
|
||||||
'recon_randomize': True,
|
'recon_randomize': True,
|
||||||
|
'return_retry_timer': 4,
|
||||||
|
'return_retry_random': True,
|
||||||
'syndic_log_file': os.path.join(salt.syspaths.LOGS_DIR, 'syndic'),
|
'syndic_log_file': os.path.join(salt.syspaths.LOGS_DIR, 'syndic'),
|
||||||
'syndic_pidfile': os.path.join(salt.syspaths.PIDFILE_DIR, 'salt-syndic.pid'),
|
'syndic_pidfile': os.path.join(salt.syspaths.PIDFILE_DIR, 'salt-syndic.pid'),
|
||||||
'random_reauth_delay': 10,
|
'random_reauth_delay': 10,
|
||||||
|
@ -21,6 +21,7 @@ import time
|
|||||||
import traceback
|
import traceback
|
||||||
import types
|
import types
|
||||||
from random import randint, shuffle
|
from random import randint, shuffle
|
||||||
|
from salt.config import DEFAULT_MINION_OPTS
|
||||||
from salt.ext.six.moves import range # pylint: disable=import-error,redefined-builtin
|
from salt.ext.six.moves import range # pylint: disable=import-error,redefined-builtin
|
||||||
|
|
||||||
from stat import S_IMODE
|
from stat import S_IMODE
|
||||||
@ -901,6 +902,30 @@ class Minion(MinionBase):
|
|||||||
self.connected = True
|
self.connected = True
|
||||||
return opts['master']
|
return opts['master']
|
||||||
|
|
||||||
|
def _return_retry_timer(self):
|
||||||
|
'''
|
||||||
|
Based on the minion configuration, either return a randomized timer or
|
||||||
|
just return the value of the return_retry_timer.
|
||||||
|
'''
|
||||||
|
msg = 'Minion return retry timer set to {0} seconds'
|
||||||
|
if self.opts['return_retry_random']:
|
||||||
|
try:
|
||||||
|
random_retry = randint(1, self.opts['return_retry_timer'])
|
||||||
|
except ValueError:
|
||||||
|
# Catch wiseguys using negative integers here
|
||||||
|
log.error(
|
||||||
|
'Invalid value ({0}) for return_retry_timer, must be a '
|
||||||
|
'positive integer'.format(self.opts['return_retry_timer'])
|
||||||
|
)
|
||||||
|
log.debug(msg.format(DEFAULT_MINION_OPTS['return_retry_timer']))
|
||||||
|
return DEFAULT_MINION_OPTS['return_retry_timer']
|
||||||
|
else:
|
||||||
|
log.debug(msg.format(random_retry) + ' (randomized)')
|
||||||
|
return random_retry
|
||||||
|
else:
|
||||||
|
log.debug(msg.format(self.opts['return_retry_timer']))
|
||||||
|
return self.opts['return_retry_timer']
|
||||||
|
|
||||||
def _prep_mod_opts(self):
|
def _prep_mod_opts(self):
|
||||||
'''
|
'''
|
||||||
Returns a copy of the opts with key bits stripped out
|
Returns a copy of the opts with key bits stripped out
|
||||||
@ -1253,7 +1278,10 @@ class Minion(MinionBase):
|
|||||||
ret['metadata'] = data['metadata']
|
ret['metadata'] = data['metadata']
|
||||||
else:
|
else:
|
||||||
log.warning('The metadata parameter must be a dictionary. Ignoring.')
|
log.warning('The metadata parameter must be a dictionary. Ignoring.')
|
||||||
minion_instance._return_pub(ret)
|
minion_instance._return_pub(
|
||||||
|
ret,
|
||||||
|
timeout=minion_instance._return_retry_timer()
|
||||||
|
)
|
||||||
if data['ret']:
|
if data['ret']:
|
||||||
if 'ret_config' in data:
|
if 'ret_config' in data:
|
||||||
ret['ret_config'] = data['ret_config']
|
ret['ret_config'] = data['ret_config']
|
||||||
@ -1310,7 +1338,10 @@ class Minion(MinionBase):
|
|||||||
ret['fun_args'] = data['arg']
|
ret['fun_args'] = data['arg']
|
||||||
if 'metadata' in data:
|
if 'metadata' in data:
|
||||||
ret['metadata'] = data['metadata']
|
ret['metadata'] = data['metadata']
|
||||||
minion_instance._return_pub(ret)
|
minion_instance._return_pub(
|
||||||
|
ret,
|
||||||
|
timeout=minion_instance._return_retry_timer()
|
||||||
|
)
|
||||||
if data['ret']:
|
if data['ret']:
|
||||||
if 'ret_config' in data:
|
if 'ret_config' in data:
|
||||||
ret['ret_config'] = data['ret_config']
|
ret['ret_config'] = data['ret_config']
|
||||||
@ -2316,7 +2347,9 @@ class Syndic(Minion):
|
|||||||
pretag=tagify(self.opts['id'], base='syndic'),
|
pretag=tagify(self.opts['id'], base='syndic'),
|
||||||
)
|
)
|
||||||
for jid in self.jids:
|
for jid in self.jids:
|
||||||
self._return_pub(self.jids[jid], '_syndic_return')
|
self._return_pub(self.jids[jid],
|
||||||
|
'_syndic_return',
|
||||||
|
timeout=self._return_retry_timer())
|
||||||
self._reset_event_aggregation()
|
self._reset_event_aggregation()
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user