diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-14 20:03:01 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-14 20:03:01 +0000 |
commit | a453ac31f3428614cceb99027f8efbdb9258a40b (patch) | |
tree | f61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/setup_paramiko | |
parent | Initial commit. (diff) | |
download | ansible-upstream.tar.xz ansible-upstream.zip |
Adding upstream version 2.10.7+merged+base+2.10.8+dfsg.upstream/2.10.7+merged+base+2.10.8+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/integration/targets/setup_paramiko')
32 files changed, 205 insertions, 0 deletions
diff --git a/test/integration/targets/setup_paramiko/aliases b/test/integration/targets/setup_paramiko/aliases new file mode 100644 index 00000000..c49be254 --- /dev/null +++ b/test/integration/targets/setup_paramiko/aliases @@ -0,0 +1 @@ +needs/target/setup_remote_tmp_dir diff --git a/test/integration/targets/setup_paramiko/constraints.txt b/test/integration/targets/setup_paramiko/constraints.txt new file mode 100644 index 00000000..c502ba0d --- /dev/null +++ b/test/integration/targets/setup_paramiko/constraints.txt @@ -0,0 +1 @@ +cryptography >= 2.5, < 3.4 diff --git a/test/integration/targets/setup_paramiko/install-CentOS-6-python-2.yml b/test/integration/targets/setup_paramiko/install-CentOS-6-python-2.yml new file mode 100644 index 00000000..0c7b9e82 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-CentOS-6-python-2.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 2 on CentOS 6 + yum: + name: python-paramiko diff --git a/test/integration/targets/setup_paramiko/install-Darwin-python-3.yml b/test/integration/targets/setup_paramiko/install-Darwin-python-3.yml new file mode 100644 index 00000000..8926fe33 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-Darwin-python-3.yml @@ -0,0 +1,9 @@ +- name: Setup remote constraints + include_tasks: setup-remote-constraints.yml +- name: Install Paramiko for Python 3 on MacOS + pip: # no homebrew package manager in core, just use pip + name: paramiko + extra_args: "-c {{ remote_constraints }}" + environment: + # Not sure why this fixes the test, but it does. + SETUPTOOLS_USE_DISTUTILS: stdlib diff --git a/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-2.yml b/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-2.yml new file mode 100644 index 00000000..dec5b548 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-2.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 2 on FreeBSD 11 + pkgng: + name: py27-paramiko diff --git a/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-3.yml b/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-3.yml new file mode 100644 index 00000000..eb01d00f --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-FreeBSD-11-python-3.yml @@ -0,0 +1,12 @@ +- name: Downgrade to pip version 18.1 to work around a PEP 517 virtualenv bug + # pip 19.0.0 added support for PEP 517 + # versions as recent as 19.0.3 fail to install paramiko in a virtualenv due to a BackendUnavailable exception + # installation without a virtualenv succeeds + pip: + name: pip==18.1 +- name: Setup remote constraints + include_tasks: setup-remote-constraints.yml +- name: Install Paramiko for Python 3 on FreeBSD 11 + pip: # no py36-paramiko package exists for FreeBSD 11 + name: paramiko + extra_args: "-c {{ remote_constraints }}" diff --git a/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-2.yml b/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-2.yml new file mode 100644 index 00000000..29e78969 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-2.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 2 on FreeBSD 12 + pkgng: + name: py27-paramiko diff --git a/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-3.yml b/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-3.yml new file mode 100644 index 00000000..2aa7b500 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-FreeBSD-12-python-3.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 3 on FreeBSD 12 + pkgng: + name: py36-paramiko diff --git a/test/integration/targets/setup_paramiko/install-RedHat-8-python-3.yml b/test/integration/targets/setup_paramiko/install-RedHat-8-python-3.yml new file mode 100644 index 00000000..19fd3f63 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-RedHat-8-python-3.yml @@ -0,0 +1,6 @@ +- name: Setup remote constraints + include_tasks: setup-remote-constraints.yml +- name: Install Paramiko for Python 3 on RHEL 8 + pip: # no python3-paramiko package exists for RHEL 8 + name: paramiko + extra_args: "-c {{ remote_constraints }}" diff --git a/test/integration/targets/setup_paramiko/install-Ubuntu-16-python-2.yml b/test/integration/targets/setup_paramiko/install-Ubuntu-16-python-2.yml new file mode 100644 index 00000000..8f760740 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-Ubuntu-16-python-2.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 2 on Ubuntu 16 + apt: + name: python-paramiko diff --git a/test/integration/targets/setup_paramiko/install-fail.yml b/test/integration/targets/setup_paramiko/install-fail.yml new file mode 100644 index 00000000..b4ba4640 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-fail.yml @@ -0,0 +1,7 @@ +- name: Install Paramiko + fail: + msg: "Install of Paramiko on distribution '{{ ansible_distribution }}' with major version '{{ ansible_distribution_major_version }}' + with package manager '{{ ansible_pkg_mgr }}' on Python {{ ansible_python.version.major }} has not been implemented. + Use native OS packages if available, otherwise use pip. + Be sure to uninstall automatically installed dependencies when possible. + Do not implement a generic fallback to pip, as that would allow distributions not yet configured to go undetected." diff --git a/test/integration/targets/setup_paramiko/install-python-2.yml b/test/integration/targets/setup_paramiko/install-python-2.yml new file mode 100644 index 00000000..be337a16 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-python-2.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 2 + package: + name: python2-paramiko diff --git a/test/integration/targets/setup_paramiko/install-python-3.yml b/test/integration/targets/setup_paramiko/install-python-3.yml new file mode 100644 index 00000000..ac2a1a2b --- /dev/null +++ b/test/integration/targets/setup_paramiko/install-python-3.yml @@ -0,0 +1,3 @@ +- name: Install Paramiko for Python 3 + package: + name: python3-paramiko diff --git a/test/integration/targets/setup_paramiko/install.yml b/test/integration/targets/setup_paramiko/install.yml new file mode 100644 index 00000000..e98abe33 --- /dev/null +++ b/test/integration/targets/setup_paramiko/install.yml @@ -0,0 +1,18 @@ +- hosts: localhost + tasks: + - name: Detect Paramiko + detect_paramiko: + register: detect_paramiko + - name: Persist Result + copy: + content: "{{ detect_paramiko }}" + dest: "{{ lookup('env', 'OUTPUT_DIR') }}/detect-paramiko.json" + - name: Install Paramiko + when: not detect_paramiko.found + include_tasks: "{{ item }}" + with_first_found: + - "install-{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-python-{{ ansible_python.version.major }}.yml" + - "install-{{ ansible_os_family }}-{{ ansible_distribution_major_version }}-python-{{ ansible_python.version.major }}.yml" + - "install-{{ ansible_os_family }}-python-{{ ansible_python.version.major }}.yml" + - "install-python-{{ ansible_python.version.major }}.yml" + - "install-fail.yml" diff --git a/test/integration/targets/setup_paramiko/inventory b/test/integration/targets/setup_paramiko/inventory new file mode 100644 index 00000000..8618c725 --- /dev/null +++ b/test/integration/targets/setup_paramiko/inventory @@ -0,0 +1 @@ +localhost ansible_connection=local ansible_python_interpreter="{{ ansible_playbook_python }}" diff --git a/test/integration/targets/setup_paramiko/library/detect_paramiko.py b/test/integration/targets/setup_paramiko/library/detect_paramiko.py new file mode 100644 index 00000000..e3a81582 --- /dev/null +++ b/test/integration/targets/setup_paramiko/library/detect_paramiko.py @@ -0,0 +1,31 @@ +#!/usr/bin/python +"""Ansible module to detect the presence of both the normal and Ansible-specific versions of Paramiko.""" + +from __future__ import absolute_import, division, print_function + +__metaclass__ = type + +from ansible.module_utils.basic import AnsibleModule + +try: + import paramiko +except ImportError: + paramiko = None + +try: + import ansible_paramiko +except ImportError: + ansible_paramiko = None + + +def main(): + module = AnsibleModule(argument_spec={}) + module.exit_json(**dict( + found=bool(paramiko or ansible_paramiko), + paramiko=bool(paramiko), + ansible_paramiko=bool(ansible_paramiko), + )) + + +if __name__ == '__main__': + main() diff --git a/test/integration/targets/setup_paramiko/setup-remote-constraints.yml b/test/integration/targets/setup_paramiko/setup-remote-constraints.yml new file mode 100644 index 00000000..a86d4777 --- /dev/null +++ b/test/integration/targets/setup_paramiko/setup-remote-constraints.yml @@ -0,0 +1,12 @@ +- name: Setup remote temporary directory + include_role: + name: setup_remote_tmp_dir + +- name: Record constraints.txt path on remote host + set_fact: + remote_constraints: "{{ remote_tmp_dir }}/constraints.txt" + +- name: Copy constraints.txt to remote host + copy: + src: "constraints.txt" + dest: "{{ remote_constraints }}" diff --git a/test/integration/targets/setup_paramiko/setup.sh b/test/integration/targets/setup_paramiko/setup.sh new file mode 100644 index 00000000..316320c3 --- /dev/null +++ b/test/integration/targets/setup_paramiko/setup.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Usage: source ../setup_paramiko/setup.sh + +set -eux + +export ANSIBLE_TEST_PREFER_VENV=1 +source virtualenv.sh # for pip installs, if needed, otherwise unused +ANSIBLE_ROLES_PATH=../ ansible-playbook ../setup_paramiko/install.yml -i ../setup_paramiko/inventory "$@" +trap 'ansible-playbook ../setup_paramiko/uninstall.yml -i ../setup_paramiko/inventory "$@"' EXIT diff --git a/test/integration/targets/setup_paramiko/uninstall-Darwin-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-Darwin-python-3.yml new file mode 100644 index 00000000..69a68e42 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-Darwin-python-3.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 3 on MacOS + pip: + name: paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-2.yml b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-2.yml new file mode 100644 index 00000000..d27f831c --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-2.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 2 on FreeBSD 11 + pkgng: + name: py27-paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-3.yml new file mode 100644 index 00000000..33f292e8 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-3.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 3 on FreeBSD 11 + pip: # no py36-paramiko package exists for FreeBSD 11 + name: paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-2.yml b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-2.yml new file mode 100644 index 00000000..79352487 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-2.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 2 on FreeBSD 12 + pkgng: + name: py27-paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-3.yml new file mode 100644 index 00000000..46d26ca3 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-3.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 3 on FreeBSD 12 + pkgng: + name: py36-paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-RedHat-8-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-RedHat-8-python-3.yml new file mode 100644 index 00000000..d3a9493e --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-RedHat-8-python-3.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 3 on RHEL 8 + pip: # no python3-paramiko package exists for RHEL 8 + name: paramiko + state: absent diff --git a/test/integration/targets/setup_paramiko/uninstall-apt-python-2.yml b/test/integration/targets/setup_paramiko/uninstall-apt-python-2.yml new file mode 100644 index 00000000..507d94cc --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-apt-python-2.yml @@ -0,0 +1,5 @@ +- name: Uninstall Paramiko for Python 2 using apt + apt: + name: python-paramiko + state: absent + autoremove: yes diff --git a/test/integration/targets/setup_paramiko/uninstall-apt-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-apt-python-3.yml new file mode 100644 index 00000000..d51fc92e --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-apt-python-3.yml @@ -0,0 +1,5 @@ +- name: Uninstall Paramiko for Python 3 using apt + apt: + name: python3-paramiko + state: absent + autoremove: yes diff --git a/test/integration/targets/setup_paramiko/uninstall-dnf.yml b/test/integration/targets/setup_paramiko/uninstall-dnf.yml new file mode 100644 index 00000000..ff0d39ce --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-dnf.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko using dnf history undo + command: dnf history undo last --assumeyes + args: + warn: no diff --git a/test/integration/targets/setup_paramiko/uninstall-fail.yml b/test/integration/targets/setup_paramiko/uninstall-fail.yml new file mode 100644 index 00000000..bc5e12f1 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-fail.yml @@ -0,0 +1,7 @@ +- name: Uninstall Paramiko + fail: + msg: "Uninstall of Paramiko on distribution '{{ ansible_distribution }}' with major version '{{ ansible_distribution_major_version }}' + with package manager '{{ ansible_pkg_mgr }}' on Python {{ ansible_python.version.major }} has not been implemented. + Use native OS packages if available, otherwise use pip. + Be sure to uninstall automatically installed dependencies when possible. + Do not implement a generic fallback to pip, as that would allow distributions not yet configured to go undetected." diff --git a/test/integration/targets/setup_paramiko/uninstall-yum.yml b/test/integration/targets/setup_paramiko/uninstall-yum.yml new file mode 100644 index 00000000..f293d229 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-yum.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko using yum history undo + command: yum history undo last --assumeyes + args: + warn: no diff --git a/test/integration/targets/setup_paramiko/uninstall-zypper-python-2.yml b/test/integration/targets/setup_paramiko/uninstall-zypper-python-2.yml new file mode 100644 index 00000000..6bdb3307 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-zypper-python-2.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 2 using zypper + command: zypper --quiet --non-interactive remove --clean-deps python2-paramiko + args: + warn: no diff --git a/test/integration/targets/setup_paramiko/uninstall-zypper-python-3.yml b/test/integration/targets/setup_paramiko/uninstall-zypper-python-3.yml new file mode 100644 index 00000000..cb0db941 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall-zypper-python-3.yml @@ -0,0 +1,4 @@ +- name: Uninstall Paramiko for Python 3 using zypper + command: zypper --quiet --non-interactive remove --clean-deps python3-paramiko + args: + warn: no diff --git a/test/integration/targets/setup_paramiko/uninstall.yml b/test/integration/targets/setup_paramiko/uninstall.yml new file mode 100644 index 00000000..48ff68e6 --- /dev/null +++ b/test/integration/targets/setup_paramiko/uninstall.yml @@ -0,0 +1,20 @@ +- hosts: localhost + vars: + detect_paramiko: '{{ lookup("file", lookup("env", "OUTPUT_DIR") + "/detect-paramiko.json") | from_json }}' + tasks: + - name: Uninstall Paramiko and Verify Results + when: not detect_paramiko.found + block: + - name: Uninstall Paramiko + include_tasks: "{{ item }}" + with_first_found: + - "uninstall-{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-python-{{ ansible_python.version.major }}.yml" + - "uninstall-{{ ansible_os_family }}-{{ ansible_distribution_major_version }}-python-{{ ansible_python.version.major }}.yml" + - "uninstall-{{ ansible_os_family }}-python-{{ ansible_python.version.major }}.yml" + - "uninstall-{{ ansible_pkg_mgr }}-python-{{ ansible_python.version.major }}.yml" + - "uninstall-{{ ansible_pkg_mgr }}.yml" + - "uninstall-fail.yml" + - name: Verify Paramiko was uninstalled + detect_paramiko: + register: detect_paramiko + failed_when: detect_paramiko.found |