You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/ansible-galaxy-collection/tasks/install_offline.yml

138 lines
5.0 KiB
YAML

- name: test tarfile dependency resolution without querying distribution servers
vars:
init_dir: "{{ galaxy_dir }}/offline/setup"
build_dir: "{{ galaxy_dir }}/offline/build"
install_dir: "{{ galaxy_dir }}/offline/collections"
block:
- name: create test directories
file:
path: "{{ item }}"
state: directory
loop:
- "{{ init_dir }}"
- "{{ build_dir }}"
- "{{ install_dir }}"
- name: initialize two collections
command: ansible-galaxy collection init ns.{{ item }} --init-path {{ init_dir }}
loop:
- coll1
- coll2
- name: add one collection as the dependency of the other
lineinfile:
path: "{{ galaxy_dir }}/offline/setup/ns/coll1/galaxy.yml"
regexp: "^dependencies:*"
line: "dependencies: {'ns.coll2': '>=1.0.0'}"
- name: build both collections
command: ansible-galaxy collection build {{ init_dir }}/ns/{{ item }}
args:
chdir: "{{ build_dir }}"
loop:
- coll1
- coll2
- name: install the dependency from the tarfile
command: ansible-galaxy collection install {{ build_dir }}/ns-coll2-1.0.0.tar.gz -p {{ install_dir }} -s offline
- name: install the tarfile with the installed dependency
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
- name: empty the installed collections directory
file:
path: "{{ install_dir }}"
state: "{{ item }}"
loop:
- absent
- directory
- name: edit skeleton with new versions to test upgrading
lineinfile:
path: "{{ galaxy_dir }}/offline/setup/ns/{{ item }}/galaxy.yml"
regexp: "^version:.*$"
line: "version: 2.0.0"
loop:
- coll1
- coll2
- name: build the tarfiles to test upgrading
command: ansible-galaxy collection build {{ init_dir }}/ns/{{ item }}
args:
chdir: "{{ build_dir }}"
loop:
- coll1
- coll2
- name: install the tarfile and its dep with an unreachable server (expected error)
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
environment:
ANSIBLE_FORCE_COLOR: False
ANSIBLE_NOCOLOR: True
ignore_errors: yes
register: missing_dep
- name: install the tarfile with a missing dependency and --offline
command: ansible-galaxy collection install --offline {{ build_dir }}/ns-coll1-1.0.0.tar.gz -p {{ install_dir }} -s offline
environment:
ANSIBLE_FORCE_COLOR: False
ANSIBLE_NOCOLOR: True
ignore_errors: yes
register: missing_dep_offline
- assert:
that:
- missing_dep.failed
- missing_dep_offline.failed
- galaxy_err in missing_dep.stderr
- missing_err in missing_dep_offline.stderr
vars:
galaxy_err: "ERROR! Unknown error when attempting to call Galaxy at '{{ offline_server }}'"
missing_err: |-
ERROR! Failed to resolve the requested dependencies map. Could not satisfy the following requirements:
* ns.coll2:>=1.0.0 (dependency of ns.coll1:1.0.0)
- name: install the dependency from the tarfile
command: ansible-galaxy collection install {{ build_dir }}/ns-coll2-1.0.0.tar.gz -p {{ install_dir }}
- name: install the tarfile with --offline for dep resolution
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz {{ cli_opts }}
vars:
cli_opts: "--offline -p {{ install_dir }} -s offline"
register: offline_install
- name: upgrade using tarfile with --offline for dep resolution
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-2.0.0.tar.gz {{ cli_opts }}
vars:
cli_opts: "--offline --upgrade -p {{ install_dir }} -s offline"
register: offline_upgrade
- name: reinstall ns-coll1-1.0.0 to test upgrading the dependency too
command: ansible-galaxy collection install {{ build_dir }}/ns-coll1-1.0.0.tar.gz {{ cli_opts }}
vars:
cli_opts: "--offline --force -p {{ install_dir }} -s offline"
- name: upgrade both collections using tarfiles and --offline
command: ansible-galaxy collection install {{ collections }} {{ cli_opts }}
vars:
collections: "{{ build_dir }}/ns-coll1-2.0.0.tar.gz {{ build_dir }}/ns-coll2-2.0.0.tar.gz"
cli_opts: "--offline --upgrade -s offline"
register: upgrade_all
- assert:
that:
- '"ns.coll1:1.0.0 was installed successfully" in offline_install.stdout'
- '"ns.coll1:2.0.0 was installed successfully" in offline_upgrade.stdout'
- '"ns.coll1:2.0.0 was installed successfully" in upgrade_all.stdout'
- '"ns.coll2:2.0.0 was installed successfully" in upgrade_all.stdout'
always:
- name: clean up test directories
file:
path: "{{ item }}"
state: absent
loop:
- "{{ init_dir }}"
- "{{ build_dir }}"
- "{{ install_dir }}"