diff --git a/ansible/roles/csi/tasks/main.yml b/ansible/roles/csi/tasks/main.yml index c5d888a..aa6bbd9 100644 --- a/ansible/roles/csi/tasks/main.yml +++ b/ansible/roles/csi/tasks/main.yml @@ -145,9 +145,20 @@ msg: "CSI node daemonset rollout failed: {{ csi_node_rollout.stdout | default('') }} {{ csi_node_rollout.stderr | default('') }}" when: csi_node_rollout.rc != 0 +- name: Generate CSI smoke test run identifier + set_fact: + csi_smoke_test_run_id: "{{ lookup('pipe', 'date +%s') }}" + when: csi_smoke_test_enabled | bool + +- name: Generate unique CSI smoke test resource names + set_fact: + csi_smoke_test_pvc_name: "csi-smoke-pvc-{{ csi_smoke_test_run_id }}" + csi_smoke_test_job_name: "csi-smoke-job-{{ csi_smoke_test_run_id }}" + when: csi_smoke_test_enabled | bool + - name: Cleanup stale CSI smoke test resources before apply shell: | - kubectl -n kube-system delete job csi-smoke-job pvc csi-smoke-pvc --ignore-not-found --wait=true + kubectl -n kube-system delete job,pvc -l app.kubernetes.io/name=csi-smoke --ignore-not-found --wait=true kubectl delete storageclass {{ csi_smoke_test_storage_class }} --ignore-not-found failed_when: false changed_when: false @@ -168,8 +179,10 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: csi-smoke-pvc + name: {{ csi_smoke_test_pvc_name }} namespace: kube-system + labels: + app.kubernetes.io/name: csi-smoke spec: accessModes: - ReadWriteOnce @@ -181,8 +194,10 @@ apiVersion: batch/v1 kind: Job metadata: - name: csi-smoke-job + name: {{ csi_smoke_test_job_name }} namespace: kube-system + labels: + app.kubernetes.io/name: csi-smoke spec: backoffLimit: 0 template: @@ -198,20 +213,20 @@ volumes: - name: data persistentVolumeClaim: - claimName: csi-smoke-pvc + claimName: {{ csi_smoke_test_pvc_name }} EOF changed_when: true when: csi_smoke_test_enabled | bool - name: Wait for CSI smoke PVC to bind - command: kubectl -n kube-system wait --for=jsonpath='{.status.phase}'=Bound pvc/csi-smoke-pvc --timeout={{ csi_smoke_test_pvc_timeout_seconds }}s + command: kubectl -n kube-system wait --for=jsonpath='{.status.phase}'=Bound pvc/{{ csi_smoke_test_pvc_name }} --timeout={{ csi_smoke_test_pvc_timeout_seconds }}s register: csi_smoke_pvc_wait failed_when: false changed_when: false when: csi_smoke_test_enabled | bool - name: Wait for CSI smoke Job completion - command: kubectl -n kube-system wait --for=condition=complete job/csi-smoke-job --timeout={{ csi_smoke_test_job_timeout_seconds }}s + command: kubectl -n kube-system wait --for=condition=complete job/{{ csi_smoke_test_job_name }} --timeout={{ csi_smoke_test_job_timeout_seconds }}s register: csi_smoke_job_wait failed_when: false changed_when: false @@ -220,14 +235,14 @@ - csi_smoke_pvc_wait.rc == 0 - name: Show CSI smoke job logs - command: kubectl -n kube-system logs job/csi-smoke-job + command: kubectl -n kube-system logs job/{{ csi_smoke_test_job_name }} register: csi_smoke_job_logs failed_when: false changed_when: false when: csi_smoke_test_enabled | bool - name: Show CSI smoke PVC on failure - command: kubectl -n kube-system get pvc csi-smoke-pvc -o wide + command: kubectl -n kube-system get pvc {{ csi_smoke_test_pvc_name }} -o wide register: csi_smoke_pvc_status failed_when: false changed_when: false @@ -236,7 +251,7 @@ - csi_smoke_pvc_wait.rc != 0 or (csi_smoke_job_wait.rc | default(1)) != 0 - name: Show CSI smoke Job on failure - command: kubectl -n kube-system get job csi-smoke-job -o wide + command: kubectl -n kube-system get job {{ csi_smoke_test_job_name }} -o wide register: csi_smoke_job_status failed_when: false changed_when: false @@ -245,7 +260,7 @@ - csi_smoke_pvc_wait.rc != 0 or (csi_smoke_job_wait.rc | default(1)) != 0 - name: Show CSI smoke pods on failure - command: kubectl -n kube-system get pod -l job-name=csi-smoke-job -o wide + command: kubectl -n kube-system get pod -l job-name={{ csi_smoke_test_job_name }} -o wide register: csi_smoke_pod_status failed_when: false changed_when: false @@ -254,7 +269,7 @@ - csi_smoke_pvc_wait.rc != 0 or (csi_smoke_job_wait.rc | default(1)) != 0 - name: Describe CSI smoke PVC on failure - command: kubectl -n kube-system describe pvc csi-smoke-pvc + command: kubectl -n kube-system describe pvc {{ csi_smoke_test_pvc_name }} register: csi_smoke_pvc_describe failed_when: false changed_when: false @@ -273,7 +288,7 @@ - name: Show CSI smoke pod describe on failure shell: | - pod="$(kubectl -n kube-system get pods -l job-name=csi-smoke-job -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)" + pod="$(kubectl -n kube-system get pods -l job-name={{ csi_smoke_test_job_name }} -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)" if [ -n "$pod" ]; then kubectl -n kube-system describe pod "$pod" fi @@ -322,7 +337,7 @@ - name: Cleanup CSI smoke test resources shell: | - kubectl -n kube-system delete job csi-smoke-job pvc csi-smoke-pvc --ignore-not-found + kubectl -n kube-system delete job {{ csi_smoke_test_job_name }} pvc {{ csi_smoke_test_pvc_name }} --ignore-not-found kubectl delete storageclass {{ csi_smoke_test_storage_class }} --ignore-not-found failed_when: false changed_when: false