69 lines
2.7 KiB
Diff
69 lines
2.7 KiB
Diff
|
From e2040d110ac24ec044973674afc8269ab9ef7c11 Mon Sep 17 00:00:00 2001
|
||
|
From: Rich Megginson <rmeggins@redhat.com>
|
||
|
Date: Fri, 25 Oct 2024 08:55:27 -0600
|
||
|
Subject: [PATCH 116/117] fix: ignore pod not found errors when removing kube
|
||
|
specs
|
||
|
|
||
|
Cause: The module uses the `podman kube play --done` command to remove
|
||
|
the pod specified by the kube spec, but does not check if the pod has
|
||
|
already been removed. That is, it is not idempotent. The command
|
||
|
gives an error if the pod is not found. This only happens with
|
||
|
podman 4.4.1 on EL8.8 and EL9.2.
|
||
|
|
||
|
Consequence: The podman role gives an error that the pod specified
|
||
|
by the kube spec cannot be found when removing.
|
||
|
|
||
|
Fix: The role ignores the 'pod not found' error when removing
|
||
|
a kube spec.
|
||
|
|
||
|
Result: The role does not give an error when removing a kube
|
||
|
spec.
|
||
|
|
||
|
NOTE: This has been fixed in the containers.podman.podman_play
|
||
|
module upstream but has not yet been released.
|
||
|
https://github.com/containers/ansible-podman-collections/pull/863/files#diff-6672fb7f52e2bec3450c2dd7ed9a4385accd9bab8429ea6eecf4d56447f5a1b8R304
|
||
|
|
||
|
Signed-off-by: Rich Megginson <rmeggins@redhat.com>
|
||
|
(cherry picked from commit 3edc125005c5912926add1539be96cf3b990bb96)
|
||
|
---
|
||
|
tasks/cleanup_kube_spec.yml | 13 +++++++++++++
|
||
|
1 file changed, 13 insertions(+)
|
||
|
|
||
|
diff --git a/tasks/cleanup_kube_spec.yml b/tasks/cleanup_kube_spec.yml
|
||
|
index b6b47bd..36610e6 100644
|
||
|
--- a/tasks/cleanup_kube_spec.yml
|
||
|
+++ b/tasks/cleanup_kube_spec.yml
|
||
|
@@ -30,6 +30,11 @@
|
||
|
path: "{{ __podman_kube_file }}"
|
||
|
register: __podman_kube_file_stat
|
||
|
|
||
|
+# NOTE: removing kube specs is not idempotent and will give an error on
|
||
|
+# RHEL 8.8 and 9.2 - seems ok on other platforms - this was fixed in the
|
||
|
+# module but is not released yet (as of 20241024)
|
||
|
+# https://github.com/containers/ansible-podman-collections/pull/863/files#diff-6672fb7f52e2bec3450c2dd7ed9a4385accd9bab8429ea6eecf4d56447f5a1b8R304
|
||
|
+# remove this hack when the fix is available
|
||
|
- name: Remove pod/containers
|
||
|
containers.podman.podman_play: "{{ __podman_kube_spec |
|
||
|
combine({'kube_file': __podman_kube_file}) }}"
|
||
|
@@ -38,9 +43,17 @@
|
||
|
become: "{{ __podman_rootless | ternary(true, omit) }}"
|
||
|
become_user: "{{ __podman_rootless | ternary(__podman_user, omit) }}"
|
||
|
register: __podman_removed
|
||
|
+ failed_when:
|
||
|
+ - __podman_removed is failed
|
||
|
+ - not __podman_removed.msg is search(__err_msg)
|
||
|
+ - not __is_affected_platform
|
||
|
when:
|
||
|
- not __podman_rootless or __podman_xdg_stat.stat.exists
|
||
|
- __podman_kube_file_stat.stat.exists
|
||
|
+ vars:
|
||
|
+ __err_msg: Failed to delete .* with {{ __podman_kube_file }}
|
||
|
+ __is_affected_platform: "{{ ansible_facts['distribution'] == 'RedHat' and
|
||
|
+ ansible_facts['distribution_version'] in ['8.8', '9.2'] }}"
|
||
|
|
||
|
- name: Remove kubernetes yaml file
|
||
|
file:
|
||
|
--
|
||
|
2.47.0
|
||
|
|