summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/setup_paramiko
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
commita453ac31f3428614cceb99027f8efbdb9258a40b (patch)
treef61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/setup_paramiko
parentInitial commit. (diff)
downloadansible-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')
-rw-r--r--test/integration/targets/setup_paramiko/aliases1
-rw-r--r--test/integration/targets/setup_paramiko/constraints.txt1
-rw-r--r--test/integration/targets/setup_paramiko/install-CentOS-6-python-2.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-Darwin-python-3.yml9
-rw-r--r--test/integration/targets/setup_paramiko/install-FreeBSD-11-python-2.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-FreeBSD-11-python-3.yml12
-rw-r--r--test/integration/targets/setup_paramiko/install-FreeBSD-12-python-2.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-FreeBSD-12-python-3.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-RedHat-8-python-3.yml6
-rw-r--r--test/integration/targets/setup_paramiko/install-Ubuntu-16-python-2.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-fail.yml7
-rw-r--r--test/integration/targets/setup_paramiko/install-python-2.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install-python-3.yml3
-rw-r--r--test/integration/targets/setup_paramiko/install.yml18
-rw-r--r--test/integration/targets/setup_paramiko/inventory1
-rw-r--r--test/integration/targets/setup_paramiko/library/detect_paramiko.py31
-rw-r--r--test/integration/targets/setup_paramiko/setup-remote-constraints.yml12
-rw-r--r--test/integration/targets/setup_paramiko/setup.sh9
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-Darwin-python-3.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-2.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-FreeBSD-11-python-3.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-2.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-FreeBSD-12-python-3.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-RedHat-8-python-3.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-apt-python-2.yml5
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-apt-python-3.yml5
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-dnf.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-fail.yml7
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-yum.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-zypper-python-2.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall-zypper-python-3.yml4
-rw-r--r--test/integration/targets/setup_paramiko/uninstall.yml20
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