Multi-master support for salt-call

This commit is contained in:
Mike Place 2016-10-19 15:38:01 +09:00
parent 9a6671ce69
commit 8171c73b00
No known key found for this signature in database
GPG key ID: 9136F4F13705CFD3
2 changed files with 28 additions and 10 deletions

View file

@ -505,6 +505,15 @@ class MinionBase(object):
if opts['random_master']:
shuffle(opts['local_masters'])
last_exc = None
opts['master_uri_list'] = list()
# This sits outside of the connection loop below because it needs to set
# up a list of master URIs regardless of which masters are available
# to connect _to_. This is primarily used for masterless mode, when
# we need a list of master URIs to fire calls back to.
for master in opts['local_masters']:
opts['master'] = master
opts['master_uri_list'].append(resolve_dns(opts)['master_uri'])
while True:
attempts += 1

View file

@ -959,17 +959,26 @@ def revoke_auth(preserve_minion_cache=False):
salt '*' saltutil.revoke_auth
'''
channel = salt.transport.Channel.factory(__opts__)
tok = channel.auth.gen_token('salt')
load = {'cmd': 'revoke_auth',
'id': __opts__['id'],
'tok': tok,
'preserve_minion_cache': preserve_minion_cache}
masters = list()
ret = True
if 'master_uri_list' in __opts__:
for master_uri in __opts__['master_uri_list']:
masters.append(master_uri)
else:
masters.append(__opts__['master_uri'])
try:
return channel.send(load)
except SaltReqTimeoutError:
return False
for master in masters:
channel = salt.transport.Channel.factory(__opts__, master_uri=master)
tok = channel.auth.gen_token('salt')
load = {'cmd': 'revoke_auth',
'id': __opts__['id'],
'tok': tok,
'preserve_minion_cache': preserve_minion_cache}
try:
channel.send(load)
except SaltReqTimeoutError:
ret = False
return ret
def _get_ssh_or_api_client(cfgfile, ssh=False):