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:
Matt Martz 2020-03-23 17:30:40 -05:00 committed by GitHub
parent dbd8d0a492
commit 8d8c73729f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 168 additions and 7 deletions

View file

@ -0,0 +1,5 @@
minor_changes:
- >-
Enable Ansible Collections loader to discover and
import collections from ``site-packages`` dir and
``PYTHONPATH``-added locations.

View file

@ -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

View file

@ -0,0 +1,3 @@
shippable/posix/group4
skip/python2.6
skip/aix

View file

@ -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()

View file

@ -0,0 +1,6 @@
[build-system]
requires = [
"setuptools >= 44",
"wheel",
]
build-backend = "setuptools.build_meta"

View file

@ -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

View file

@ -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()

View 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": "Привіт, Степан!",'