Handle minion events asynchronously.

This commit is contained in:
Dmitry Kuzmenko 2019-06-09 14:08:55 +03:00
parent 909323ab2f
commit 3e497c1908
No known key found for this signature in database
GPG key ID: 4C7CAD30C95651DA

View file

@ -959,7 +959,8 @@ class MinionManager(MinionBase):
@tornado.gen.coroutine
def handle_event(self, package):
yield [minion.handle_event(package) for minion in self.minions]
for minion in self.minions:
minion.handle_event(package)
def _create_minion_object(self, opts, timeout, safe,
io_loop=None, loaded_base_name=None,
@ -2404,12 +2405,12 @@ class Minion(MinionBase):
elif tag.startswith('fire_master'):
if self.connected:
log.debug('Forwarding master event tag=%s', data['tag'])
self._fire_master(data['data'], data['tag'], data['events'], data['pretag'])
self._fire_master(data['data'], data['tag'], data['events'], data['pretag'], sync=False)
elif tag.startswith(master_event(type='disconnected')) or tag.startswith(master_event(type='failback')):
# if the master disconnect event is for a different master, raise an exception
if tag.startswith(master_event(type='disconnected')) and data['master'] != self.opts['master']:
# not mine master, ignore
return
raise tornado.gen.Return()
if tag.startswith(master_event(type='failback')):
# if the master failback event is not for the top master, raise an exception
if data['master'] != self.opts['master_list'][0]:
@ -2547,7 +2548,7 @@ class Minion(MinionBase):
elif tag.startswith('_salt_error'):
if self.connected:
log.debug('Forwarding salt error event tag=%s', tag)
self._fire_master(data, tag)
self._fire_master(data, tag, sync=False)
elif tag.startswith('salt/auth/creds'):
key = tuple(data['key'])
log.debug(