Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ansible-galaxy - fix download for subdirs in SCM (#71005) - 2.10 #71093

Merged
merged 1 commit into from Aug 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions changelogs/fragments/galaxy-download-scm.yaml
@@ -0,0 +1,2 @@
bugfixes:
- ansible-galaxy download - fix bug when downloading a collection in a SCM subdirectory
7 changes: 3 additions & 4 deletions lib/ansible/galaxy/collection.py
Expand Up @@ -616,10 +616,9 @@ def download_collections(collections, output_path, apis, validate_certs, no_deps
shutil.copy(requirement.b_path, to_bytes(dest_path, errors='surrogate_or_strict'))
elif requirement.api is None and requirement.b_path:
temp_path = to_text(b_temp_path, errors='surrogate_or_string')
scm_build_path = os.path.join(temp_path, 'tmp_build-%s' % collection_filename)
os.makedirs(to_bytes(scm_build_path, errors='surrogate_or_strict'), mode=0o0755)
temp_download_path = build_collection(os.path.join(temp_path, name), scm_build_path, True)
shutil.move(to_bytes(temp_download_path, errors='surrogate_or_strict'), to_bytes(dest_path, errors='surrogate_or_strict'))
temp_download_path = build_collection(requirement.b_path, temp_path, True)
shutil.move(to_bytes(temp_download_path, errors='surrogate_or_strict'),
to_bytes(dest_path, errors='surrogate_or_strict'))
else:
b_temp_download_path = requirement.download(b_temp_path)
shutil.move(b_temp_download_path, to_bytes(dest_path, errors='surrogate_or_strict'))
Expand Down
Expand Up @@ -4,20 +4,30 @@
state: directory

- name: download a git repository
command: 'ansible-galaxy collection download git+https://github.com/ansible-collections/amazon.aws.git,37875c5b4ba5bf3cc43e07edf29f3432fd76def5'
command: >
ansible-galaxy collection download
git+https://github.com/ansible-collections/amazon.aws.git,37875c5b4ba5bf3cc43e07edf29f3432fd76def5
git+https://github.com/AlanCoding/awx.git#awx_collection,750c22a150d04eef1cb625fd4f83cce57949416c
args:
chdir: '{{ galaxy_dir }}/download'
register: download_collection

- name: check that the file was downloaded
- name: check that the amazon.aws collection was downloaded
stat:
path: '{{ galaxy_dir }}/download/collections/amazon-aws-1.0.0.tar.gz'
register: download_collection_actual
register: download_collection_amazon_actual

- name: check that the awx.awx collection was downloaded
stat:
path: '{{ galaxy_dir }}/download/collections/awx-awx-0.0.1-devel.tar.gz'
register: download_collection_awx_actual

- assert:
that:
- '"Downloading collection ''amazon.aws'' to" in download_collection.stdout'
- download_collection_actual.stat.exists
- '"Downloading collection ''awx.awx'' to" in download_collection.stdout'
- download_collection_amazon_actual.stat.exists
- download_collection_awx_actual.stat.exists

- name: test the downloaded repository can be installed
command: 'ansible-galaxy collection install -r requirements.yml'
Expand All @@ -31,6 +41,7 @@
- assert:
that:
- "'amazon.aws' in installed_collections.stdout"
- "'awx.awx' in installed_collections.stdout"

- include_tasks: ./empty_installed_collections.yml
when: cleanup