From e7dee73774b0b436551e4993ba917eec1e03af2d Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Thu, 10 Dec 2020 15:59:33 -0800 Subject: [PATCH] Collection list site packages (#70173) * ansible-galaxy collection list and verify now utilize collections in site-packages. This is a short term fix for #70147. The long term fix needs to handle install (but that discussion is also bound up in how upgrade is going to work and where things can get installed so it's deferred for 2.11.) * Add test for ansible-galaxy collection list with site-packages * Fix sanity issue Co-authored-by: David Moreau Simard Co-authored-by: Jordan Borean --- .../fragments/collection-list-site-packages.yaml | 3 +++ lib/ansible/cli/galaxy.py | 6 ++++-- test/integration/targets/ansible-galaxy/runme.sh | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/collection-list-site-packages.yaml diff --git a/changelogs/fragments/collection-list-site-packages.yaml b/changelogs/fragments/collection-list-site-packages.yaml new file mode 100644 index 00000000000..2f169fd77bb --- /dev/null +++ b/changelogs/fragments/collection-list-site-packages.yaml @@ -0,0 +1,3 @@ +bugfixes: +- Fix ansible-galaxy collection list to show collections in site-packages + (https://github.com/ansible/ansible/issues/70147) diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py index 860a9fb872c..25385e220c7 100644 --- a/lib/ansible/cli/galaxy.py +++ b/lib/ansible/cli/galaxy.py @@ -44,6 +44,7 @@ from ansible.parsing.dataloader import DataLoader from ansible.parsing.yaml.loader import AnsibleLoader from ansible.playbook.role.requirement import RoleRequirement from ansible.template import Templar +from ansible.utils.collection_loader import AnsibleCollectionConfig from ansible.utils.display import Display from ansible.utils.plugin_docs import get_versioned_doclink @@ -165,7 +166,8 @@ class GalaxyCLI(CLI): collections_path = opt_help.argparse.ArgumentParser(add_help=False) collections_path.add_argument('-p', '--collection-path', dest='collections_path', type=opt_help.unfrack_path(pathsep=True), - default=C.COLLECTIONS_PATHS, action=opt_help.PrependListAction, + default=AnsibleCollectionConfig.collection_paths, + action=opt_help.PrependListAction, help="One or more directories to search for collections in addition " "to the default COLLECTIONS_PATHS. Separate multiple paths " "with '{0}'.".format(os.path.pathsep)) @@ -1288,7 +1290,7 @@ class GalaxyCLI(CLI): collections_search_paths = set(context.CLIARGS['collections_path']) collection_name = context.CLIARGS['collection'] - default_collections_path = C.config.get_configuration_definition('COLLECTIONS_PATHS').get('default') + default_collections_path = AnsibleCollectionConfig.collection_paths warnings = [] path_found = False diff --git a/test/integration/targets/ansible-galaxy/runme.sh b/test/integration/targets/ansible-galaxy/runme.sh index b41cdbdf8fa..165601cc62c 100755 --- a/test/integration/targets/ansible-galaxy/runme.sh +++ b/test/integration/targets/ansible-galaxy/runme.sh @@ -422,6 +422,17 @@ f_ansible_galaxy_status \ unset ANSIBLE_COLLECTIONS_PATH +f_ansible_galaxy_status \ + "collection list with collections installed from python package" + + mkdir -p test-site-packages + ln -s "${galaxy_testdir}/local/ansible_collections" test-site-packages/ansible_collections + ansible-galaxy collection list + PYTHONPATH="./test-site-packages/:$PYTHONPATH" ansible-galaxy collection list | tee out.txt + + grep ".ansible/collections/ansible_collections" out.txt + grep "test-site-packages/ansible_collections" out.txt + ## end ansible-galaxy collection list