Add resource_from_fqcr utility function. (#68474)
This commit is contained in:
parent
55e29a1464
commit
9767d592a8
4 changed files with 23 additions and 4 deletions
|
@ -19,6 +19,7 @@ from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils._text import to_bytes, to_native, to_text
|
from ansible.module_utils._text import to_bytes, to_native, to_text
|
||||||
from ansible.module_utils.compat.importlib import import_module
|
from ansible.module_utils.compat.importlib import import_module
|
||||||
from ansible.plugins.loader import ps_module_utils_loader
|
from ansible.plugins.loader import ps_module_utils_loader
|
||||||
|
from ansible.utils.collection_loader import resource_from_fqcr
|
||||||
|
|
||||||
|
|
||||||
class PSModuleDepFinder(object):
|
class PSModuleDepFinder(object):
|
||||||
|
@ -309,7 +310,7 @@ def _create_powershell_wrapper(b_module_data, module_path, module_args,
|
||||||
exec_manifest["async_timeout_sec"] = async_timeout
|
exec_manifest["async_timeout_sec"] = async_timeout
|
||||||
exec_manifest["async_startup_timeout"] = C.config.get_config_value("WIN_ASYNC_STARTUP_TIMEOUT", variables=task_vars)
|
exec_manifest["async_startup_timeout"] = C.config.get_config_value("WIN_ASYNC_STARTUP_TIMEOUT", variables=task_vars)
|
||||||
|
|
||||||
if become and become_method.split('.')[-1] == 'runas': # runas and namespace.collection.runas
|
if become and resource_from_fqcr(become_method) == 'runas': # runas and namespace.collection.runas
|
||||||
finder.scan_exec_script('exec_wrapper')
|
finder.scan_exec_script('exec_wrapper')
|
||||||
finder.scan_exec_script('become_wrapper')
|
finder.scan_exec_script('become_wrapper')
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ from ansible.module_utils.six.moves import shlex_quote
|
||||||
from ansible.module_utils._text import to_bytes, to_native, to_text
|
from ansible.module_utils._text import to_bytes, to_native, to_text
|
||||||
from ansible.parsing.utils.jsonify import jsonify
|
from ansible.parsing.utils.jsonify import jsonify
|
||||||
from ansible.release import __version__
|
from ansible.release import __version__
|
||||||
|
from ansible.utils.collection_loader import resource_from_fqcr
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
from ansible.utils.unsafe_proxy import wrap_var, AnsibleUnsafeText
|
from ansible.utils.unsafe_proxy import wrap_var, AnsibleUnsafeText
|
||||||
from ansible.vars.clean import remove_internal_keys
|
from ansible.vars.clean import remove_internal_keys
|
||||||
|
@ -178,7 +179,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
||||||
module_name = '%s.%s' % (win_collection, module_name)
|
module_name = '%s.%s' % (win_collection, module_name)
|
||||||
|
|
||||||
# Remove extra quotes surrounding path parameters before sending to module.
|
# Remove extra quotes surrounding path parameters before sending to module.
|
||||||
if module_name.split('.')[-1] in ['win_stat', 'win_file', 'win_copy', 'slurp'] and module_args and \
|
if resource_from_fqcr(module_name) in ['win_stat', 'win_file', 'win_copy', 'slurp'] and module_args and \
|
||||||
hasattr(self._connection._shell, '_unquote'):
|
hasattr(self._connection._shell, '_unquote'):
|
||||||
for key in ('src', 'dest', 'path'):
|
for key in ('src', 'dest', 'path'):
|
||||||
if key in module_args:
|
if key in module_args:
|
||||||
|
@ -1060,7 +1061,7 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
||||||
ruser = self._get_remote_user()
|
ruser = self._get_remote_user()
|
||||||
buser = self.get_become_option('become_user')
|
buser = self.get_become_option('become_user')
|
||||||
if (sudoable and self._connection.become and # if sudoable and have become
|
if (sudoable and self._connection.become and # if sudoable and have become
|
||||||
self._connection.transport.split('.')[-1] != 'network_cli' and # if not using network_cli
|
resource_from_fqcr(self._connection.transport) != 'network_cli' and # if not using network_cli
|
||||||
(C.BECOME_ALLOW_SAME_USER or (buser != ruser or not any((ruser, buser))))): # if we allow same user PE or users are different and either is set
|
(C.BECOME_ALLOW_SAME_USER or (buser != ruser or not any((ruser, buser))))): # if we allow same user PE or users are different and either is set
|
||||||
display.debug("_low_level_execute_command(): using become for this command")
|
display.debug("_low_level_execute_command(): using become for this command")
|
||||||
cmd = self._connection.become.build_become_command(cmd, self._connection._shell)
|
cmd = self._connection.become.build_become_command(cmd, self._connection._shell)
|
||||||
|
|
4
lib/ansible/plugins/cache/__init__.py
vendored
4
lib/ansible/plugins/cache/__init__.py
vendored
|
@ -31,6 +31,7 @@ from ansible.module_utils._text import to_bytes, to_text
|
||||||
from ansible.module_utils.common._collections_compat import MutableMapping
|
from ansible.module_utils.common._collections_compat import MutableMapping
|
||||||
from ansible.plugins import AnsiblePlugin
|
from ansible.plugins import AnsiblePlugin
|
||||||
from ansible.plugins.loader import cache_loader
|
from ansible.plugins.loader import cache_loader
|
||||||
|
from ansible.utils.collection_loader import resource_from_fqcr
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
from ansible.vars.fact_cache import FactCache as RealFactCache
|
from ansible.vars.fact_cache import FactCache as RealFactCache
|
||||||
|
|
||||||
|
@ -63,6 +64,7 @@ class BaseCacheModule(AnsiblePlugin):
|
||||||
if not hasattr(self, '_load_name'):
|
if not hasattr(self, '_load_name'):
|
||||||
display.deprecated('Rather than importing custom CacheModules directly, use ansible.plugins.loader.cache_loader', version='2.14')
|
display.deprecated('Rather than importing custom CacheModules directly, use ansible.plugins.loader.cache_loader', version='2.14')
|
||||||
self._load_name = self.__module__.split('.')[-1]
|
self._load_name = self.__module__.split('.')[-1]
|
||||||
|
self._load_name = resource_from_fqcr(self.__module__)
|
||||||
super(BaseCacheModule, self).__init__()
|
super(BaseCacheModule, self).__init__()
|
||||||
self.set_options(var_options=args, direct=kwargs)
|
self.set_options(var_options=args, direct=kwargs)
|
||||||
|
|
||||||
|
@ -108,7 +110,7 @@ class BaseFileCacheModule(BaseCacheModule):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self._cache_dir = self._get_cache_connection(C.CACHE_PLUGIN_CONNECTION)
|
self._cache_dir = self._get_cache_connection(C.CACHE_PLUGIN_CONNECTION)
|
||||||
self._timeout = float(C.CACHE_PLUGIN_TIMEOUT)
|
self._timeout = float(C.CACHE_PLUGIN_TIMEOUT)
|
||||||
self.plugin_name = self.__module__.split('.')[-1]
|
self.plugin_name = resource_from_fqcr(self.__module__)
|
||||||
self._cache = {}
|
self._cache = {}
|
||||||
self.validate_cache_connection()
|
self.validate_cache_connection()
|
||||||
|
|
||||||
|
|
|
@ -586,3 +586,18 @@ def get_collection_name_from_path(path):
|
||||||
|
|
||||||
def set_collection_playbook_paths(b_playbook_paths):
|
def set_collection_playbook_paths(b_playbook_paths):
|
||||||
AnsibleCollectionLoader().set_playbook_paths(b_playbook_paths)
|
AnsibleCollectionLoader().set_playbook_paths(b_playbook_paths)
|
||||||
|
|
||||||
|
|
||||||
|
def resource_from_fqcr(ref):
|
||||||
|
"""
|
||||||
|
Return resource from a fully-qualified collection reference,
|
||||||
|
or from a simple resource name.
|
||||||
|
|
||||||
|
For fully-qualified collection references, this is equivalent to
|
||||||
|
``AnsibleCollectionRef.from_fqcr(ref).resource``.
|
||||||
|
|
||||||
|
:param ref: collection reference to parse
|
||||||
|
:return: the resource as a unicode string
|
||||||
|
"""
|
||||||
|
ref = to_text(ref, errors='strict')
|
||||||
|
return ref.split(u'.')[-1]
|
||||||
|
|
Loading…
Reference in a new issue