mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-16 06:22:10 +00:00
* Update pod deletion conditions for local storage used in a daemon set pod
Refactor pod deletion logic to handle local storage in daemon set pods correctly.
* Add bugfix for k8s_drain handling local storage pods
Fix logic for handling pods with local storage in k8s_drain.
* Refactor filter_pods function for clarity and efficiency
* Fix sanity and linter errors
---------
(cherry picked from commit b58b2ca70e)
Co-authored-by: Juan Morete <morete@gmail.com>
Co-authored-by: Bianca Henderson <bianca@redhat.com>
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- k8s_drain - Fix logic for handling pods with local storage to correctly check for empty_dir volumes in replicated pods and pods managed by DaemonSets (https://github.com/ansible-collections/kubernetes.core/pull/1095).
|
||||||
@@ -214,21 +214,21 @@ def filter_pods(pods, force, ignore_daemonset, delete_emptydir_data):
|
|||||||
to_delete.append((pod.metadata.namespace, pod.metadata.name))
|
to_delete.append((pod.metadata.namespace, pod.metadata.name))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Pod with local storage cannot be deleted
|
|
||||||
if pod.spec.volumes and any(vol.empty_dir for vol in pod.spec.volumes):
|
|
||||||
localStorage.append((pod.metadata.namespace, pod.metadata.name))
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Check replicated Pod
|
# Check replicated Pod
|
||||||
owner_ref = pod.metadata.owner_references
|
owner_ref = pod.metadata.owner_references or []
|
||||||
if not owner_ref:
|
has_local_storage = bool(
|
||||||
|
pod.spec.volumes and any(vol.empty_dir for vol in pod.spec.volumes)
|
||||||
|
)
|
||||||
|
is_daemonset_managed = any(owner.kind == "DaemonSet" for owner in owner_ref)
|
||||||
|
|
||||||
|
if is_daemonset_managed:
|
||||||
|
daemonSet.append((pod.metadata.namespace, pod.metadata.name))
|
||||||
|
elif has_local_storage:
|
||||||
|
localStorage.append((pod.metadata.namespace, pod.metadata.name))
|
||||||
|
elif not owner_ref:
|
||||||
unmanaged.append((pod.metadata.namespace, pod.metadata.name))
|
unmanaged.append((pod.metadata.namespace, pod.metadata.name))
|
||||||
else:
|
else:
|
||||||
for owner in owner_ref:
|
to_delete.append((pod.metadata.namespace, pod.metadata.name))
|
||||||
if owner.kind == "DaemonSet":
|
|
||||||
daemonSet.append((pod.metadata.namespace, pod.metadata.name))
|
|
||||||
else:
|
|
||||||
to_delete.append((pod.metadata.namespace, pod.metadata.name))
|
|
||||||
|
|
||||||
warnings, errors, info = [], [], []
|
warnings, errors, info = [], [], []
|
||||||
if unmanaged:
|
if unmanaged:
|
||||||
|
|||||||
Reference in New Issue
Block a user