From b25a37bb38da64e5584ac6c965a6c06978821d49 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Fri, 15 Mar 2019 12:37:46 -0700 Subject: [PATCH] Convert k8s test to role and fix virtulenv usage. (#53883) --- .../roles/k8s => }/defaults/main.yml | 0 .../roles/k8s => }/files/crd-resource.yml | 0 .../k8s => }/files/kuard-extra-property.yml | 0 .../k8s => }/files/kuard-invalid-type.yml | 0 .../roles/k8s => }/files/setup-crd.yml | 0 test/integration/targets/k8s/meta/main.yml | 2 + .../targets/k8s/playbooks/full_test.yml | 9 -- .../k8s/playbooks/validate_installed.yml | 9 -- test/integration/targets/k8s/runme.sh | 37 --------- .../roles/k8s => }/tasks/append_hash.yml | 0 .../{playbooks/roles/k8s => }/tasks/crd.yml | 0 .../tasks/main.yml => tasks/full_test.yml} | 0 .../{playbooks/roles/k8s => }/tasks/lists.yml | 0 test/integration/targets/k8s/tasks/main.yml | 83 +++++++++++++++++++ .../older_openshift_fail.yml | 13 +-- .../roles/k8s => }/tasks/openshift.yml | 0 .../k8s => }/tasks/validate_installed.yml | 16 ++-- .../validate_not_installed.yml | 4 - .../roles/k8s => }/tasks/waiter.yml | 0 19 files changed, 96 insertions(+), 77 deletions(-) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/defaults/main.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/files/crd-resource.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/files/kuard-extra-property.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/files/kuard-invalid-type.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/files/setup-crd.yml (100%) create mode 100644 test/integration/targets/k8s/meta/main.yml delete mode 100644 test/integration/targets/k8s/playbooks/full_test.yml delete mode 100644 test/integration/targets/k8s/playbooks/validate_installed.yml delete mode 100755 test/integration/targets/k8s/runme.sh rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/append_hash.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/crd.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s/tasks/main.yml => tasks/full_test.yml} (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/lists.yml (100%) create mode 100644 test/integration/targets/k8s/tasks/main.yml rename test/integration/targets/k8s/{playbooks => tasks}/older_openshift_fail.yml (81%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/openshift.yml (100%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/validate_installed.yml (86%) rename test/integration/targets/k8s/{playbooks => tasks}/validate_not_installed.yml (90%) rename test/integration/targets/k8s/{playbooks/roles/k8s => }/tasks/waiter.yml (100%) diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/defaults/main.yml b/test/integration/targets/k8s/defaults/main.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/defaults/main.yml rename to test/integration/targets/k8s/defaults/main.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/files/crd-resource.yml b/test/integration/targets/k8s/files/crd-resource.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/files/crd-resource.yml rename to test/integration/targets/k8s/files/crd-resource.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/files/kuard-extra-property.yml b/test/integration/targets/k8s/files/kuard-extra-property.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/files/kuard-extra-property.yml rename to test/integration/targets/k8s/files/kuard-extra-property.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/files/kuard-invalid-type.yml b/test/integration/targets/k8s/files/kuard-invalid-type.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/files/kuard-invalid-type.yml rename to test/integration/targets/k8s/files/kuard-invalid-type.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/files/setup-crd.yml b/test/integration/targets/k8s/files/setup-crd.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/files/setup-crd.yml rename to test/integration/targets/k8s/files/setup-crd.yml diff --git a/test/integration/targets/k8s/meta/main.yml b/test/integration/targets/k8s/meta/main.yml new file mode 100644 index 0000000000..1810d4bec9 --- /dev/null +++ b/test/integration/targets/k8s/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - setup_remote_tmp_dir diff --git a/test/integration/targets/k8s/playbooks/full_test.yml b/test/integration/targets/k8s/playbooks/full_test.yml deleted file mode 100644 index 033ebfc9e4..0000000000 --- a/test/integration/targets/k8s/playbooks/full_test.yml +++ /dev/null @@ -1,9 +0,0 @@ -- hosts: localhost - connection: local - gather_facts: no - vars: - ansible_python_interpreter: "{{ ansible_playbook_python }}" - playbook_namespace: ansible-test-k8s-full - - roles: - - k8s diff --git a/test/integration/targets/k8s/playbooks/validate_installed.yml b/test/integration/targets/k8s/playbooks/validate_installed.yml deleted file mode 100644 index 386a5305d9..0000000000 --- a/test/integration/targets/k8s/playbooks/validate_installed.yml +++ /dev/null @@ -1,9 +0,0 @@ -- hosts: localhost - connection: local - vars: - playbook_namespace: ansible-test-k8s-validate - - tasks: - - include_role: - name: k8s - tasks_from: validate_installed diff --git a/test/integration/targets/k8s/runme.sh b/test/integration/targets/k8s/runme.sh deleted file mode 100755 index 7806f83887..0000000000 --- a/test/integration/targets/k8s/runme.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash - -# We don't set -u here, due to pypa/virtualenv#150 -set -ex - -MYTMPDIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir') - -#trap 'rm -rf "${MYTMPDIR}"' EXIT - -# This is needed for the ubuntu1604py3 tests -# Ubuntu patches virtualenv to make the default python2 -# but for the python3 tests we need virtualenv to use python3 -PYTHON=${ANSIBLE_TEST_PYTHON_INTERPRETER:-python} - -# Test graceful failure for missing kubernetes-validate -virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/openshift-validate-not-installed" -source "${MYTMPDIR}/openshift-validate-not-installed/bin/activate" -$PYTHON -m pip install openshift==0.8.1 -ansible-playbook -v playbooks/validate_not_installed.yml "$@" - -# Test validate with kubernetes-validate -virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/openshift-validate-installed" -source "${MYTMPDIR}/openshift-validate-installed/bin/activate" -$PYTHON -m pip install openshift==0.8.1 kubernetes-validate==1.12.0 -ansible-playbook -v playbooks/validate_installed.yml "$@" - -# Test graceful failure for older versions of openshift -virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/openshift-0.6.0" -source "${MYTMPDIR}/openshift-0.6.0/bin/activate" -$PYTHON -m pip install openshift==0.6.0 kubernetes==6.0.0 -ansible-playbook -v playbooks/older_openshift_fail.yml "$@" - -# Run full test suite -virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/openshift-recent" -source "${MYTMPDIR}/openshift-recent/bin/activate" -$PYTHON -m pip install openshift==0.8.1 -ansible-playbook -v playbooks/full_test.yml "$@" diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/append_hash.yml b/test/integration/targets/k8s/tasks/append_hash.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/append_hash.yml rename to test/integration/targets/k8s/tasks/append_hash.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/crd.yml b/test/integration/targets/k8s/tasks/crd.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/crd.yml rename to test/integration/targets/k8s/tasks/crd.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/main.yml b/test/integration/targets/k8s/tasks/full_test.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/main.yml rename to test/integration/targets/k8s/tasks/full_test.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/lists.yml b/test/integration/targets/k8s/tasks/lists.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/lists.yml rename to test/integration/targets/k8s/tasks/lists.yml diff --git a/test/integration/targets/k8s/tasks/main.yml b/test/integration/targets/k8s/tasks/main.yml new file mode 100644 index 0000000000..c2a57ab3ac --- /dev/null +++ b/test/integration/targets/k8s/tasks/main.yml @@ -0,0 +1,83 @@ +- set_fact: + virtualenv: "{{ remote_tmp_dir }}/virtualenv" + virtualenv_command: "{{ ansible_python_interpreter }} -m virtualenv" + +- set_fact: + virtualenv_interpreter: "{{ virtualenv }}/bin/python" + +- pip: + name: virtualenv + +# Test graceful failure for missing kubernetes-validate + +- pip: + name: + - openshift==0.8.1 + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: yes + +- include_tasks: validate_not_installed.yml + vars: + ansible_python_interpreter: "{{ virtualenv_interpreter }}" + +- file: + path: "{{ virtualenv }}" + state: absent + +# Test validate with kubernetes-validate + +- pip: + name: + - openshift==0.8.1 + - kubernetes-validate==1.12.0 + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: yes + +- include_tasks: validate_installed.yml + vars: + ansible_python_interpreter: "{{ virtualenv_interpreter }}" + playbook_namespace: ansible-test-k8s-validate + +- file: + path: "{{ virtualenv }}" + state: absent + +# Test graceful failure for older versions of openshift + +- pip: + name: + - openshift==0.6.0 + - kubernetes==6.0.0 + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: yes + +- include_tasks: older_openshift_fail.yml + vars: + ansible_python_interpreter: "{{ virtualenv_interpreter }}" + recreate_crd_default_merge_expectation: recreate_crd is failed + playbook_namespace: ansible-test-k8s-older-openshift + +- file: + path: "{{ virtualenv }}" + state: absent + +# Run full test suite + +- pip: + name: + - openshift==0.8.1 + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: yes + +- include_tasks: full_test.yml + vars: + ansible_python_interpreter: "{{ virtualenv_interpreter }}" + playbook_namespace: ansible-test-k8s-full + +- file: + path: "{{ virtualenv }}" + state: absent diff --git a/test/integration/targets/k8s/playbooks/older_openshift_fail.yml b/test/integration/targets/k8s/tasks/older_openshift_fail.yml similarity index 81% rename from test/integration/targets/k8s/playbooks/older_openshift_fail.yml rename to test/integration/targets/k8s/tasks/older_openshift_fail.yml index 824242c928..85fa9878db 100644 --- a/test/integration/targets/k8s/playbooks/older_openshift_fail.yml +++ b/test/integration/targets/k8s/tasks/older_openshift_fail.yml @@ -1,12 +1,3 @@ -- hosts: localhost - connection: local - gather_facts: no - vars: - ansible_python_interpreter: "{{ ansible_playbook_python }}" - recreate_crd_default_merge_expectation: recreate_crd is failed - playbook_namespace: ansible-test-k8s-older-openshift - - tasks: - python_requirements_facts: dependencies: - openshift==0.6.0 @@ -35,9 +26,7 @@ - "'. This is required for append_hash.' in k8s_append_hash.msg" # merge_type - - include_role: - name: k8s - tasks_from: crd + - include_tasks: crd.yml # validate - name: attempt to use validate with older openshift diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/openshift.yml b/test/integration/targets/k8s/tasks/openshift.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/openshift.yml rename to test/integration/targets/k8s/tasks/openshift.yml diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/validate_installed.yml b/test/integration/targets/k8s/tasks/validate_installed.yml similarity index 86% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/validate_installed.yml rename to test/integration/targets/k8s/tasks/validate_installed.yml index 4684678383..1f05621f97 100644 --- a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/validate_installed.yml +++ b/test/integration/targets/k8s/tasks/validate_installed.yml @@ -4,6 +4,10 @@ name: "{{ playbook_namespace }}" kind: namespace + - copy: + src: files + dest: "{{ remote_tmp_dir }}" + - name: incredibly simple ConfigMap k8s: definition: @@ -23,7 +27,7 @@ - name: extra property does not fail without strict k8s: - src: "{{ role_path }}/files/kuard-extra-property.yml" + src: "{{ remote_tmp_dir }}/files/kuard-extra-property.yml" namespace: "{{ playbook_namespace }}" validate: fail_on_error: yes @@ -31,7 +35,7 @@ - name: extra property fails with strict k8s: - src: "{{ role_path }}/files/kuard-extra-property.yml" + src: "{{ remote_tmp_dir }}/files/kuard-extra-property.yml" namespace: "{{ playbook_namespace }}" validate: fail_on_error: yes @@ -46,7 +50,7 @@ - name: invalid type fails at validation stage k8s: - src: "{{ role_path }}/files/kuard-invalid-type.yml" + src: "{{ remote_tmp_dir }}/files/kuard-invalid-type.yml" namespace: "{{ playbook_namespace }}" validate: fail_on_error: yes @@ -61,7 +65,7 @@ - name: invalid type fails with warnings when fail_on_error is False k8s: - src: "{{ role_path }}/files/kuard-invalid-type.yml" + src: "{{ remote_tmp_dir }}/files/kuard-invalid-type.yml" namespace: "{{ playbook_namespace }}" validate: fail_on_error: no @@ -76,11 +80,11 @@ - name: setup custom resource definition k8s: - src: "{{ role_path }}/files/setup-crd.yml" + src: "{{ remote_tmp_dir }}/files/setup-crd.yml" - name: add custom resource definition k8s: - src: "{{ role_path }}/files/crd-resource.yml" + src: "{{ remote_tmp_dir }}/files/crd-resource.yml" namespace: "{{ playbook_namespace }}" validate: fail_on_error: yes diff --git a/test/integration/targets/k8s/playbooks/validate_not_installed.yml b/test/integration/targets/k8s/tasks/validate_not_installed.yml similarity index 90% rename from test/integration/targets/k8s/playbooks/validate_not_installed.yml rename to test/integration/targets/k8s/tasks/validate_not_installed.yml index 5d1367de15..e4af14da30 100644 --- a/test/integration/targets/k8s/playbooks/validate_not_installed.yml +++ b/test/integration/targets/k8s/tasks/validate_not_installed.yml @@ -1,7 +1,3 @@ -- hosts: localhost - connection: local - - tasks: - k8s: definition: apiVersion: v1 diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml b/test/integration/targets/k8s/tasks/waiter.yml similarity index 100% rename from test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml rename to test/integration/targets/k8s/tasks/waiter.yml