Revert "Better handling of loader returns"

This reverts commit 0b8dbd8f20.
This commit is contained in:
Pedro Algarvio 2024-04-15 16:24:38 +01:00
parent de572d2233
commit 1ad4918023
4 changed files with 10 additions and 32 deletions

View file

@ -68,19 +68,9 @@ class NamedLoaderContext(collections.abc.MutableMapping):
loader = self.loader()
if loader is None:
return self.default
elif self.name == "__context__":
if self.name == "__context__":
return loader.pack[self.name]
elif self.name == "__opts__":
# XXX: This behaviour tires to mimick what the loader does when
# __opts__ was not imported from dunder. It would be nice to just
# pass the value of __opts__ here. However, un-winding this
# behavior will be tricky.
opts = {}
if self.default:
opts.update(copy.deepcopy(self.default))
opts.update(copy.deepcopy(loader.opts))
return opts
elif self.name == loader.pack_self:
if self.name == loader.pack_self:
return loader
try:
return loader.pack[self.name]

View file

@ -1257,10 +1257,7 @@ class LazyLoader(salt.utils.lazy.LazyDict):
self.parent_loader = current_loader
token = salt.loader.context.loader_ctxvar.set(self)
try:
ret = _func_or_method(*args, **kwargs)
if isinstance(ret, salt.loader.context.NamedLoaderContext):
return ret.value()
return ret
return _func_or_method(*args, **kwargs)
finally:
self.parent_loader = None
salt.loader.context.loader_ctxvar.reset(token)

View file

@ -20,13 +20,7 @@ import salt.utils.path
import salt.utils.templates
import salt.utils.url
from salt.exceptions import CommandExecutionError
from salt.loader.dunder import (
__context__,
__file_client__,
__grains__,
__opts__,
__pillar__,
)
from salt.loader.dunder import __context__, __file_client__, __grains__, __pillar__, __opts__
log = logging.getLogger(__name__)
@ -173,7 +167,7 @@ def _client():
"""
if __file_client__:
return __file_client__.value()
return salt.fileclient.get_file_client(__opts__.value())
return salt.fileclient.get_file_client(__opts__)
def _render_filenames(path, dest, saltenv, template, **kw):

View file

@ -6,7 +6,7 @@ import salt.utils.files
import tests.support.helpers
def xtest_opts_dunder_opts_without_import(tempdir):
def test_opts_dunder_opts_without_import(tempdir):
"""
Test __opts__ without being imported.
@ -19,12 +19,12 @@ def xtest_opts_dunder_opts_without_import(tempdir):
tests.support.helpers.dedent(
"""
def mymethod():
return __opts__
return type(__opts__)
"""
)
)
loader = salt.loader.lazy.LazyLoader([tempdir.tempdir], opts)
assert type(loader["mymod.mymethod"]()) == dict
assert loader["mymod.mymethod"]() == dict
def test_opts_dunder_opts_with_import(tempdir):
@ -40,13 +40,10 @@ def test_opts_dunder_opts_with_import(tempdir):
tests.support.helpers.dedent(
"""
from salt.loader.dunder import __opts__
def optstype():
def mymethod():
return type(__opts__)
def opts():
return __opts__
"""
)
)
loader = salt.loader.lazy.LazyLoader([tempdir.tempdir], opts)
assert loader["mymod.optstype"]() == salt.loader.context.NamedLoaderContext
assert loader["mymod.opts"]() == opts
assert loader["mymod.mymethod"]() == salt.loader.context.NamedLoaderContext