diff --git a/roles/validations/defaults/main.yml b/roles/validations/defaults/main.yml index fbc9d2cfdd..fd9ce5ff9e 100644 --- a/roles/validations/defaults/main.yml +++ b/roles/validations/defaults/main.yml @@ -59,3 +59,8 @@ cifmw_validations_bmh_replace_leaf_label: leaf0-1 cifmw_validations_bmh_spare_leaf_label: leaf0-0 cifmw_validations_bmh_spare_nodename: edpm-compute-0-0 cifmw_validations_bmh_spare_hostname: edpm-compute-0-0.ctlplane.openstack.lab + +# variables needed for download cache +cifmw_validations_cached_packages: ["tuned"] +cifmw_validations_cached_images: ["frr"] +cifmw_validations_cache_run_services: ["bootstrap", "frr"] diff --git a/roles/validations/tasks/edpm/download-cache-service.yml b/roles/validations/tasks/edpm/download-cache-service.yml new file mode 100644 index 0000000000..476d0a3ca8 --- /dev/null +++ b/roles/validations/tasks/edpm/download-cache-service.yml @@ -0,0 +1,120 @@ +- name: Determine name of deployed NodeSet + environment: + KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" + PATH: "{{ cifmw_path }}" + cifmw.general.ci_script: + output_dir: "{{ cifmw_validations_basedir }}/artifacts" + script: >- + oc get -n {{ cifmw_validations_namespace }} osdpns --no-headers -o custom-columns=":metadata.name" + register: deployed_nodeset_name + +- name: Clean cache on a compute node + become: true + ansible.builtin.command: + cmd: dnf clean all + delegate_to: "{{ cifmw_validations_edpm_check_node }}" + +- name: Uninstall requested packages on a compute node + become: true + ansible.builtin.dnf: + name: "{{ item_cached_package }}" + state: absent + loop: "{{ cifmw_validations_cached_packages }}" + loop_control: + loop_var: item_cached_package + delegate_to: "{{ cifmw_validations_edpm_check_node }}" + +- name: Patch nodeset with download cache configuration + environment: + KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" + PATH: "{{ cifmw_path }}" + cifmw.general.ci_script: + output_dir: "{{ cifmw_validations_basedir }}/artifacts" + script: >- + oc patch -n {{ cifmw_validations_namespace }} osdpns/"{{ deployed_nodeset_name.stdout | trim }}" --type json --patch '[{ "op": "add", "path": "/spec/nodeTemplate/ansible/ansibleVars/edpm_download_cache_running_services","value": {{ cifmw_validations_cache_run_services }} }]' + +- name: Wait for nodeset to be SetupReady again + environment: + KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" + PATH: "{{ cifmw_path }}" + cifmw.general.ci_script: + output_dir: "{{ cifmw_validations_basedir }}/artifacts" + script: >- + oc wait osdpns "{{ deployed_nodeset_name.stdout | trim }}" + --namespace={{ cifmw_validations_namespace }} + --for=condition=SetupReady + --timeout={{ cifmw_validations_timeout }}m + +- name: Create openstackdataplanedeployment for download cache service + environment: + KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" + PATH: "{{ cifmw_path }}" + cifmw.general.ci_script: + output_dir: "{{ cifmw_validations_basedir }}/artifacts" + script: | + oc apply -f - <- + oc wait openstackdataplanedeployment download-cache-service + --namespace={{ cifmw_validations_namespace }} + --for=condition=ready + --timeout={{ cifmw_validations_timeout }}s + +- name: Find all rpm packages cached on compute node + become: true + ansible.builtin.command: + cmd: find /var/cache/dnf/ -name "*.rpm" + delegate_to: "{{ cifmw_validations_edpm_check_node }}" + register: dnf_cached_packages + +# Create failure msg for xml results file +- name: Verify all requested packages were cached + ansible.builtin.fail: + msg: "'{{ item_cached_package }}' package was not cached" + loop: "{{ cifmw_validations_cached_packages }}" + loop_control: + loop_var: item_cached_package + when: item_cached_package+'-' not in dnf_cached_packages.stdout + +- name: Find all container images cached on compute node + become: true + ansible.builtin.command: + cmd: podman images + delegate_to: "{{ cifmw_validations_edpm_check_node }}" + register: podman_images + +# Create failure msg for xml results file +- name: Verify all requested container images were cached + ansible.builtin.fail: + msg: "'{{ item_cached_image }}' container image was not cached" + loop: "{{ cifmw_validations_cached_images }}" + loop_control: + loop_var: item_cached_image + when: item_cached_image+' ' not in podman_images.stdout + +- name: Reinstall requested packages on a compute node + become: true + ansible.builtin.dnf: + name: "{{ item_cached_package }}" + state: present + loop: "{{ cifmw_validations_cached_packages }}" + loop_control: + loop_var: item_cached_package + delegate_to: "{{ cifmw_validations_edpm_check_node }}"