def test_list_pod_with_continue_token(self, load_incluster_config, list_namespaced_pod, delete_pod): pod1 = MagicMock() pod1.metadata.name = 'dummy' pod1.status.phase = 'Succeeded' pod1.status.reason = None pods = MagicMock() pods.metadata._continue = 'dummy-token' pods.items = [pod1] next_pods = MagicMock() next_pods.metadata._continue = None next_pods.items = [pod1] list_namespaced_pod.side_effect = [pods, next_pods] kubernetes_command.cleanup_pods( self.parser.parse_args([ 'kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace' ])) calls = [ call.first(namespace='awesome-namespace', limit=500), call.second(namespace='awesome-namespace', limit=500, _continue='dummy-token'), ] list_namespaced_pod.assert_has_calls(calls) delete_pod.assert_called_with('dummy', 'awesome-namespace') load_incluster_config.assert_called_once()
def test_cleanup_succeeded_pods(self, load_incluster_config, list_namespaced_pod, delete_pod): pod1 = MagicMock() pod1.metadata.name = 'dummy' pod1.status.phase = 'Succeeded' pod1.status.reason = None pods = list_namespaced_pod() pods.metadata._continue = None pods.items = [pod1] kubernetes_command.cleanup_pods( self.parser.parse_args(['kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace']) ) delete_pod.assert_called_with('dummy', 'awesome-namespace') load_incluster_config.assert_called_once()
def test_cleanup_api_exception_continue(self, load_incluster_config, list_namespaced_pod, delete_pod): delete_pod.side_effect = kubernetes.client.rest.ApiException(status=0) pod1 = MagicMock() pod1.metadata.name = 'dummy' pod1.status.phase = 'Succeeded' pod1.status.reason = None pods = list_namespaced_pod() pods.metadata._continue = None pods.items = [pod1] kubernetes_command.cleanup_pods( self.parser.parse_args(['kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace']) ) load_incluster_config.assert_called_once()
def test_no_cleanup_failed_pods_wo_restart_policy_never( self, load_incluster_config, list_namespaced_pod, delete_pod ): pod1 = MagicMock() pod1.metadata.name = 'dummy2' pod1.status.phase = 'Failed' pod1.status.reason = None pod1.spec.restart_policy = 'Always' pods = list_namespaced_pod() pods.metadata._continue = None pods.items = [pod1] kubernetes_command.cleanup_pods( self.parser.parse_args(['kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace']) ) delete_pod.assert_not_called() load_incluster_config.assert_called_once()
def test_running_pods_are_not_cleaned(self, load_incluster_config, list_namespaced_pod, delete_pod): pod1 = MagicMock() pod1.metadata.name = 'dummy' pod1.status.phase = 'Running' pod1.status.reason = None pods = MagicMock() pods.metadata._continue = None pods.items = [pod1] list_namespaced_pod.return_value = pods kubernetes_command.cleanup_pods( self.parser.parse_args([ 'kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace' ])) list_namespaced_pod.assert_called_once_with( namespace='awesome-namespace', limit=500) delete_pod.assert_not_called() load_incluster_config.assert_called_once()
def test_cleanup_evicted_pods(self, load_incluster_config, list_namespaced_pod, delete_pod): pod1 = MagicMock() pod1.metadata.name = 'dummy4' pod1.status.phase = 'Failed' pod1.status.reason = 'Evicted' pod1.spec.restart_policy = 'Never' pods = MagicMock() pods.metadata._continue = None pods.items = [pod1] list_namespaced_pod.return_value = pods kubernetes_command.cleanup_pods( self.parser.parse_args([ 'kubernetes', 'cleanup-pods', '--namespace', 'awesome-namespace' ])) list_namespaced_pod.assert_called_once_with( namespace='awesome-namespace', limit=500) delete_pod.assert_called_with('dummy4', 'awesome-namespace') load_incluster_config.assert_called_once()