Merge pull request #67093 from sivel/acd-content-dir
Add content dir where Ansible will look for the content provided by ACD
This commit is contained in:
parent
dbd8d0a492
commit
8d8c73729f
8 changed files with 168 additions and 7 deletions
|
@ -0,0 +1,5 @@
|
|||
minor_changes:
|
||||
- >-
|
||||
Enable Ansible Collections loader to discover and
|
||||
import collections from ``site-packages`` dir and
|
||||
``PYTHONPATH``-added locations.
|
|
@ -33,17 +33,33 @@ _SYNTHETIC_PACKAGES = {
|
|||
class AnsibleCollectionLoader(with_metaclass(Singleton, object)):
|
||||
def __init__(self, config=None):
|
||||
if config:
|
||||
self._n_configured_paths = config.get_config_value('COLLECTIONS_PATHS')
|
||||
paths = config.get_config_value('COLLECTIONS_PATHS')
|
||||
else:
|
||||
self._n_configured_paths = os.environ.get('ANSIBLE_COLLECTIONS_PATHS', '').split(os.pathsep)
|
||||
paths = os.environ.get('ANSIBLE_COLLECTIONS_PATHS', '').split(os.pathsep)
|
||||
|
||||
if isinstance(self._n_configured_paths, string_types):
|
||||
self._n_configured_paths = [self._n_configured_paths]
|
||||
elif self._n_configured_paths is None:
|
||||
self._n_configured_paths = []
|
||||
if isinstance(paths, string_types):
|
||||
paths = [paths]
|
||||
elif paths is None:
|
||||
paths = []
|
||||
|
||||
# expand any placeholders in configured paths
|
||||
self._n_configured_paths = [to_native(os.path.expanduser(p), errors='surrogate_or_strict') for p in self._n_configured_paths]
|
||||
paths = [
|
||||
to_native(os.path.expanduser(p), errors='surrogate_or_strict')
|
||||
for p in paths
|
||||
]
|
||||
|
||||
# Append all ``ansible_collections`` dirs from sys.path to the end
|
||||
for path in sys.path:
|
||||
if (
|
||||
path not in paths and
|
||||
os.path.isdir(to_bytes(
|
||||
os.path.join(path, 'ansible_collections'),
|
||||
errors='surrogate_or_strict',
|
||||
))
|
||||
):
|
||||
paths.append(path)
|
||||
|
||||
self._n_configured_paths = paths
|
||||
|
||||
self._n_playbook_paths = []
|
||||
self._default_collection = None
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
shippable/posix/group4
|
||||
skip/python2.6
|
||||
skip/aix
|
|
@ -0,0 +1,28 @@
|
|||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
"""Say hello."""
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec={
|
||||
'name': {'default': 'world'},
|
||||
},
|
||||
)
|
||||
name = module.params['name']
|
||||
|
||||
module.exit_json(
|
||||
msg='Greeting {name} completed.'.
|
||||
format(name=name.title()),
|
||||
greeting='Hello, {name}!'.format(name=name),
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -0,0 +1,6 @@
|
|||
[build-system]
|
||||
requires = [
|
||||
"setuptools >= 44",
|
||||
"wheel",
|
||||
]
|
||||
build-backend = "setuptools.build_meta"
|
|
@ -0,0 +1,15 @@
|
|||
[metadata]
|
||||
name = ansible-collections.python.dist
|
||||
version = 1.0.0rc2.post3.dev4
|
||||
|
||||
[options]
|
||||
package_dir =
|
||||
= .
|
||||
packages =
|
||||
ansible_collections
|
||||
ansible_collections.python
|
||||
ansible_collections.python.dist
|
||||
ansible_collections.python.dist.plugins
|
||||
ansible_collections.python.dist.plugins.modules
|
||||
zip_safe = True
|
||||
include_package_data = True
|
|
@ -0,0 +1,28 @@
|
|||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
"""Say hello in Ukrainian."""
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec={
|
||||
'name': {'default': 'світ'},
|
||||
},
|
||||
)
|
||||
name = module.params['name']
|
||||
|
||||
module.exit_json(
|
||||
msg='Greeting {name} completed.'.
|
||||
format(name=name.title()),
|
||||
greeting='Привіт, {name}!'.format(name=name),
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
60
test/integration/targets/collections_runtime_pythonpath/runme.sh
Executable file
60
test/integration/targets/collections_runtime_pythonpath/runme.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eux -o pipefail
|
||||
|
||||
|
||||
export PIP_DISABLE_PIP_VERSION_CHECK=1
|
||||
|
||||
|
||||
source virtualenv.sh
|
||||
|
||||
|
||||
>&2 echo \
|
||||
=== Test that the module \
|
||||
gets picked up if discoverable \
|
||||
via PYTHONPATH env var ===
|
||||
PYTHONPATH="${PWD}/ansible-collection-python-dist-boo:$PYTHONPATH" \
|
||||
ansible \
|
||||
-m python.dist.boo \
|
||||
-a 'name=Bob' \
|
||||
-c local localhost \
|
||||
"$@" | grep -E '"greeting": "Hello, Bob!",'
|
||||
|
||||
|
||||
>&2 echo \
|
||||
=== Test that the module \
|
||||
gets picked up if installed \
|
||||
into site-packages ===
|
||||
python -m pip.__main__ install pep517
|
||||
( # Build a binary Python dist (a wheel) using PEP517:
|
||||
cp -r ansible-collection-python-dist-boo "${OUTPUT_DIR}/"
|
||||
cd "${OUTPUT_DIR}/ansible-collection-python-dist-boo"
|
||||
python -m pep517.build --binary --out-dir dist .
|
||||
)
|
||||
# Install a pre-built dist with pip:
|
||||
python -m pip.__main__ install \
|
||||
--no-index \
|
||||
-f "${OUTPUT_DIR}/ansible-collection-python-dist-boo/dist/" \
|
||||
--only-binary=ansible-collections.python.dist \
|
||||
ansible-collections.python.dist
|
||||
python -m pip.__main__ show ansible-collections.python.dist
|
||||
ansible \
|
||||
-m python.dist.boo \
|
||||
-a 'name=Frodo' \
|
||||
-c local localhost \
|
||||
"$@" | grep -E '"greeting": "Hello, Frodo!",'
|
||||
|
||||
|
||||
>&2 echo \
|
||||
=== Test that ansible_collections \
|
||||
root takes precedence over \
|
||||
PYTHONPATH/site-packages ===
|
||||
# This is done by injecting a module with the same FQCN
|
||||
# into another collection root.
|
||||
ANSIBLE_COLLECTIONS_PATHS="${PWD}/ansible-collection-python-dist-foo" \
|
||||
PYTHONPATH="${PWD}/ansible-collection-python-dist-boo:$PYTHONPATH" \
|
||||
ansible \
|
||||
-m python.dist.boo \
|
||||
-a 'name=Степан' \
|
||||
-c local localhost \
|
||||
"$@" | grep -E '"greeting": "Привіт, Степан!",'
|
Loading…
Reference in a new issue