From c5248f756c43a0ea0e6bd11249c466fa17c8fab2 Mon Sep 17 00:00:00 2001 From: Jordan Borean Date: Mon, 11 Jan 2021 16:41:56 +1000 Subject: [PATCH] Collection list site packages (#70173) (#72940) * 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 Co-authored-by: David Moreau Simard Co-authored-by: Jordan Borean (cherry picked from commit e7dee73774b0b436551e4993ba917eec1e03af2d) Co-authored-by: Toshio Kuratomi --- .../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 447fd128a47..71cdee4963e 100644 --- a/lib/ansible/cli/galaxy.py +++ b/lib/ansible/cli/galaxy.py @@ -43,6 +43,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 @@ -163,7 +164,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)) @@ -1253,7 +1255,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 2cd59825bf9..3a7c4a39082 100755 --- a/test/integration/targets/ansible-galaxy/runme.sh +++ b/test/integration/targets/ansible-galaxy/runme.sh @@ -415,6 +415,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