mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Further work on __proxy__
This commit is contained in:
parent
286b08a0f5
commit
d337f4329e
5 changed files with 60 additions and 35 deletions
|
@ -133,6 +133,7 @@ def minion_mods(
|
|||
opts,
|
||||
context=None,
|
||||
utils=None,
|
||||
proxy=None,
|
||||
whitelist=None,
|
||||
include_errors=False,
|
||||
initial_load=False,
|
||||
|
@ -178,12 +179,15 @@ def minion_mods(
|
|||
context = {}
|
||||
if utils is None:
|
||||
utils = {}
|
||||
if proxy is None:
|
||||
proxy = {}
|
||||
if not whitelist:
|
||||
whitelist = opts.get('whitelist_modules', None)
|
||||
ret = LazyLoader(_module_dirs(opts, 'modules', 'module'),
|
||||
opts,
|
||||
tag='module',
|
||||
pack={'__context__': context, '__utils__': utils},
|
||||
pack={'__context__': context, '__utils__': utils,
|
||||
'__proxy__': proxy},
|
||||
whitelist=whitelist,
|
||||
loaded_base_name=loaded_base_name)
|
||||
|
||||
|
@ -252,16 +256,20 @@ def engines(opts, functions, runners):
|
|||
pack=pack)
|
||||
|
||||
|
||||
def proxy(opts, functions, whitelist=None, loaded_base_name=None):
|
||||
def proxy(opts, functions=None, returners=None, whitelist=None):
|
||||
'''
|
||||
Returns the proxy module for this salt-proxy-minion
|
||||
'''
|
||||
return LazyLoader(_module_dirs(opts, 'proxy', 'proxy'),
|
||||
opts,
|
||||
tag='proxy',
|
||||
whitelist=whitelist,
|
||||
pack={'__proxy__': functions},
|
||||
loaded_base_name=loaded_base_name)
|
||||
# This is where we should set directories so proxy modules can be loaded from /srv/<something>
|
||||
ret = LazyLoader(_module_dirs(opts, 'proxy', 'proxy'),
|
||||
opts,
|
||||
tag='proxy',
|
||||
pack={'__salt__': functions,
|
||||
'__ret__': returners})
|
||||
|
||||
ret.pack['__proxy__'] = ret
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def returners(opts, functions, whitelist=None, context=None):
|
||||
|
|
|
@ -531,10 +531,10 @@ class SMinion(MinionBase):
|
|||
self.utils = salt.loader.utils(self.opts)
|
||||
self.functions = salt.loader.minion_mods(self.opts, utils=self.utils,
|
||||
include_errors=True)
|
||||
self.proxy = salt.loader.proxy(self.opts, None)
|
||||
self.returners = salt.loader.returners(self.opts, self.functions)
|
||||
self.proxy = salt.loader.proxy(self.opts, self.functions, self.returners, None)
|
||||
# TODO: remove
|
||||
self.function_errors = {} # Keep the funcs clean
|
||||
self.returners = salt.loader.returners(self.opts, self.functions)
|
||||
self.states = salt.loader.states(self.opts, self.functions, self.utils)
|
||||
self.rend = salt.loader.render(self.opts, self.functions)
|
||||
self.matcher = Matcher(self.opts, self.functions)
|
||||
|
@ -853,7 +853,7 @@ class Minion(MinionBase):
|
|||
)
|
||||
self.event_publisher.handle_publish([event])
|
||||
|
||||
def _load_modules(self, force_refresh=False, notify=False):
|
||||
def _load_modules(self, force_refresh=False, notify=False, proxy=None):
|
||||
'''
|
||||
Return the functions and the returners loaded up from the loader
|
||||
module
|
||||
|
@ -879,7 +879,7 @@ class Minion(MinionBase):
|
|||
self.utils = salt.loader.utils(self.opts)
|
||||
if self.opts.get('multimaster', False):
|
||||
s_opts = copy.deepcopy(self.opts)
|
||||
functions = salt.loader.minion_mods(s_opts, utils=self.utils,
|
||||
functions = salt.loader.minion_mods(s_opts, utils=self.utils, proxy=proxy,
|
||||
loaded_base_name=self.loaded_base_name, notify=notify)
|
||||
else:
|
||||
functions = salt.loader.minion_mods(self.opts, utils=self.utils, notify=notify)
|
||||
|
@ -2513,19 +2513,22 @@ class ProxyMinion(Minion):
|
|||
# We need to do this again, because we are going to throw out a lot of grains.
|
||||
self.opts['grains'] = salt.loader.grains(self.opts)
|
||||
|
||||
self.opts['proxymodule'] = salt.loader.proxy(self.opts, None, loaded_base_name=fq_proxyname)
|
||||
self.functions, self.returners, self.function_errors = self._load_modules()
|
||||
self.proxy = salt.loader.proxy(self.opts)
|
||||
self.functions, self.returners, self.function_errors = self._load_modules(proxy=self.proxy)
|
||||
self.functions.pack['__proxy__'] = self.proxy
|
||||
self.proxy.pack['__salt__'] = self.functions
|
||||
self.proxy.pack['__ret__'] = self.returners
|
||||
|
||||
if ('{0}.init'.format(fq_proxyname) not in self.opts['proxymodule']
|
||||
or '{0}.shutdown'.format(fq_proxyname) not in self.opts['proxymodule']):
|
||||
if ('{0}.init'.format(fq_proxyname) not in self.proxy
|
||||
or '{0}.shutdown'.format(fq_proxyname) not in self.proxy):
|
||||
log.error('Proxymodule {0} is missing an init() or a shutdown() or both.'.format(fq_proxyname))
|
||||
log.error('Check your proxymodule. Salt-proxy aborted.')
|
||||
self._running = False
|
||||
raise SaltSystemExit(code=-1)
|
||||
|
||||
proxy_fn = self.opts['proxymodule'].loaded_base_name + '.init'
|
||||
|
||||
self.opts['proxymodule'][proxy_fn](self.opts)
|
||||
proxy_init_fn = self.proxy[fq_proxyname+'.init']
|
||||
proxy_init_fn(self.opts)
|
||||
# reload ?!?
|
||||
self.serial = salt.payload.Serial(self.opts)
|
||||
self.mod_opts = self._prep_mod_opts()
|
||||
|
|
|
@ -19,22 +19,22 @@ def __virtual__():
|
|||
'''
|
||||
Only work on proxy
|
||||
'''
|
||||
if 'proxymodule' in __opts__:
|
||||
if 'proxy' in __opts__:
|
||||
return __virtualname__
|
||||
return False
|
||||
|
||||
|
||||
def list_pkgs(versions_as_list=False, **kwargs):
|
||||
return __opts__['proxymodule']['rest_sample.package_list']()
|
||||
return __proxy__['rest_sample.package_list']()
|
||||
|
||||
|
||||
def install(name=None, refresh=False, fromrepo=None,
|
||||
pkgs=None, sources=None, **kwargs):
|
||||
return __opts__['proxymodule']['rest_sample.package_install'](name, **kwargs)
|
||||
return __proxy__['rest_sample.package_install'](name, **kwargs)
|
||||
|
||||
|
||||
def remove(name=None, pkgs=None, **kwargs):
|
||||
return __opts__['proxymodule']['rest_sample.package_remove'](name)
|
||||
return __proxy__['rest_sample.package_remove'](name)
|
||||
|
||||
|
||||
def version(*names, **kwargs):
|
||||
|
@ -51,7 +51,7 @@ def version(*names, **kwargs):
|
|||
salt '*' pkg.version <package1> <package2> <package3> ...
|
||||
'''
|
||||
if len(names) == 1:
|
||||
return str(__opts__['proxymodule']['rest_sample.package_status'](names))
|
||||
return str(__proxy__['rest_sample.package_status'](names))
|
||||
|
||||
|
||||
def installed(
|
||||
|
@ -64,7 +64,7 @@ def installed(
|
|||
sources=None,
|
||||
**kwargs):
|
||||
|
||||
p = __opts__['proxymodule']['rest_sample.package_status'](name)
|
||||
p = __proxy__['rest_sample.package_status'](name)
|
||||
if version is None:
|
||||
if 'ret' in p:
|
||||
return str(p['ret'])
|
||||
|
|
|
@ -40,8 +40,21 @@ def get_all():
|
|||
|
||||
salt '*' service.get_all
|
||||
'''
|
||||
proxy_fn = 'rest_sample'+ '.service_list'
|
||||
return __opts__['proxymodule'][proxy_fn]()
|
||||
proxy_fn = 'rest_sample.service_list'
|
||||
return __proxy__[proxy_fn]()
|
||||
|
||||
|
||||
def list_():
|
||||
'''
|
||||
Return a list of all available services
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' service.list
|
||||
'''
|
||||
return get_all()
|
||||
|
||||
|
||||
def list_():
|
||||
|
@ -72,8 +85,8 @@ def start(name, sig=None):
|
|||
salt '*' service.start <service name>
|
||||
'''
|
||||
|
||||
proxy_fn = 'rest_sample'+ '.service_start'
|
||||
return __opts__['proxymodule'][proxy_fn](name)
|
||||
proxy_fn = 'rest_sample.service_start'
|
||||
return __proxy__[proxy_fn](name)
|
||||
|
||||
|
||||
def stop(name, sig=None):
|
||||
|
@ -88,8 +101,8 @@ def stop(name, sig=None):
|
|||
|
||||
salt '*' service.stop <service name>
|
||||
'''
|
||||
proxy_fn = 'rest_sample'+ '.service_stop'
|
||||
return __opts__['proxymodule'][proxy_fn](name)
|
||||
proxy_fn = 'rest_sample.service_stop'
|
||||
return __proxy__[proxy_fn](name)
|
||||
|
||||
|
||||
def restart(name, sig=None):
|
||||
|
@ -105,8 +118,8 @@ def restart(name, sig=None):
|
|||
salt '*' service.restart <service name>
|
||||
'''
|
||||
|
||||
proxy_fn = 'rest_sample'+ '.service_restart'
|
||||
return __opts__['proxymodule'][proxy_fn](name)
|
||||
proxy_fn = 'rest_sample.service_restart'
|
||||
return __proxy__[proxy_fn](name)
|
||||
|
||||
|
||||
def status(name, sig=None):
|
||||
|
@ -123,8 +136,8 @@ def status(name, sig=None):
|
|||
salt '*' service.status <service name>
|
||||
'''
|
||||
|
||||
proxy_fn = 'rest_sample' + '.service_status'
|
||||
resp = __opts__['proxymodule'][proxy_fn](name)
|
||||
proxy_fn = 'rest_sample.service_status'
|
||||
resp = __proxy__[proxy_fn](name)
|
||||
if resp['comment'] == 'stopped':
|
||||
return False
|
||||
if resp['comment'] == 'running':
|
||||
|
|
|
@ -1539,7 +1539,8 @@ class State(object):
|
|||
initial_ret={'full': state_func_name},
|
||||
expected_extra_kws=STATE_INTERNAL_KEYWORDS
|
||||
)
|
||||
|
||||
import pydevd
|
||||
pydevd.settrace('172.16.207.1', port=65500, stdoutToServer=True, stderrToServer=True)
|
||||
inject_globals = {
|
||||
# Pass a copy of the running dictionary, the low state chunks and
|
||||
# the current state dictionaries.
|
||||
|
|
Loading…
Add table
Reference in a new issue