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

(cherry picked from commit f6b3b4b430)
This commit is contained in:
Jordan Borean 2020-08-28 04:39:54 +10:00 committed by GitHub
parent 00caeff928
commit f41ff33ca6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 8 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- ansible-galaxy download - fix bug when downloading a collection in a SCM subdirectory

View file

@ -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')) shutil.copy(requirement.b_path, to_bytes(dest_path, errors='surrogate_or_strict'))
elif requirement.api is None and requirement.b_path: elif requirement.api is None and requirement.b_path:
temp_path = to_text(b_temp_path, errors='surrogate_or_string') temp_path = to_text(b_temp_path, errors='surrogate_or_string')
scm_build_path = os.path.join(temp_path, 'tmp_build-%s' % collection_filename) temp_download_path = build_collection(requirement.b_path, temp_path, True)
os.makedirs(to_bytes(scm_build_path, errors='surrogate_or_strict'), mode=0o0755) shutil.move(to_bytes(temp_download_path, errors='surrogate_or_strict'),
temp_download_path = build_collection(os.path.join(temp_path, name), scm_build_path, True) to_bytes(dest_path, errors='surrogate_or_strict'))
shutil.move(to_bytes(temp_download_path, errors='surrogate_or_strict'), to_bytes(dest_path, errors='surrogate_or_strict'))
else: else:
b_temp_download_path = requirement.download(b_temp_path) b_temp_download_path = requirement.download(b_temp_path)
shutil.move(b_temp_download_path, to_bytes(dest_path, errors='surrogate_or_strict')) shutil.move(b_temp_download_path, to_bytes(dest_path, errors='surrogate_or_strict'))

View file

@ -4,20 +4,30 @@
state: directory state: directory
- name: download a git repository - 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: args:
chdir: '{{ galaxy_dir }}/download' chdir: '{{ galaxy_dir }}/download'
register: download_collection register: download_collection
- name: check that the file was downloaded - name: check that the amazon.aws collection was downloaded
stat: stat:
path: '{{ galaxy_dir }}/download/collections/amazon-aws-1.0.0.tar.gz' 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: - assert:
that: that:
- '"Downloading collection ''amazon.aws'' to" in download_collection.stdout' - '"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 - name: test the downloaded repository can be installed
command: 'ansible-galaxy collection install -r requirements.yml' command: 'ansible-galaxy collection install -r requirements.yml'
@ -31,6 +41,7 @@
- assert: - assert:
that: that:
- "'amazon.aws' in installed_collections.stdout" - "'amazon.aws' in installed_collections.stdout"
- "'awx.awx' in installed_collections.stdout"
- include_tasks: ./empty_installed_collections.yml - include_tasks: ./empty_installed_collections.yml
when: cleanup when: cleanup