diff --git a/changelogs/fragments/770-fix-k8s-drain-doesnt-wait-for-single-pod.yaml b/changelogs/fragments/770-fix-k8s-drain-doesnt-wait-for-single-pod.yaml new file mode 100644 index 0000000000..a063d79c81 --- /dev/null +++ b/changelogs/fragments/770-fix-k8s-drain-doesnt-wait-for-single-pod.yaml @@ -0,0 +1,2 @@ +bugfixes: + - k8s_drain - Fix k8s_drain does not wait for single pod (https://github.com/ansible-collections/kubernetes.core/issues/769). diff --git a/plugins/modules/k8s_drain.py b/plugins/modules/k8s_drain.py index d23c8212a8..6544553b0d 100644 --- a/plugins/modules/k8s_drain.py +++ b/plugins/modules/k8s_drain.py @@ -303,10 +303,10 @@ def _elapsed_time(): return (datetime.now() - start).seconds response = None - pod = pods.pop() + pod = None while (_elapsed_time() < wait_timeout or wait_timeout == 0) and pods: if not pod: - pod = pods.pop() + pod = pods[-1] try: response = self._api_instance.read_namespaced_pod( namespace=pod[0], name=pod[1] @@ -315,6 +315,7 @@ def _elapsed_time(): "name" ): pod = None + del pods[-1] time.sleep(wait_sleep) except ApiException as exc: if exc.reason != "Not Found": @@ -322,6 +323,7 @@ def _elapsed_time(): msg="Exception raised: {0}".format(exc.reason) ) pod = None + del pods[-1] except Exception as e: self._module.fail_json(msg="Exception raised: {0}".format(to_native(e))) if not pods: