mirror of
https://github.com/containers/podman.git
synced 2025-08-01 16:24:58 +08:00

* Change all store_true or store_false to use store_bool. New behavior documented in BooleanAction docstring. * Remove any extraneous code identified by pylint in files from above. Fixes #1869 Signed-off-by: Jhon Honce <jhonce@redhat.com>
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""Remote client command for signaling pods and their containers."""
|
|
import signal
|
|
import sys
|
|
|
|
import podman
|
|
from pypodman.lib import AbstractActionBase, SignalAction
|
|
from pypodman.lib import query_model as query_pods
|
|
|
|
|
|
class KillPod(AbstractActionBase):
|
|
"""Class for sending signal to processes in pod."""
|
|
|
|
@classmethod
|
|
def subparser(cls, parent):
|
|
"""Add Pod Kill command to parent parser."""
|
|
parser = parent.add_parser('kill', help='signal containers in pod')
|
|
|
|
parser.add_flag(
|
|
'--all',
|
|
'-a',
|
|
help='Sends signal to all pods.')
|
|
parser.add_argument(
|
|
'-s',
|
|
'--signal',
|
|
action=SignalAction,
|
|
default=9,
|
|
help='Signal to send to the pod. (default: %(default)s)')
|
|
parser.add_argument('pod', nargs='*', help='pod(s) to signal')
|
|
parser.set_defaults(class_=cls, method='kill')
|
|
|
|
def __init__(self, args):
|
|
"""Construct Pod Kill object."""
|
|
if args.all and args.pod:
|
|
raise ValueError('You may give a pod or use --all, but not both')
|
|
super().__init__(args)
|
|
|
|
def kill(self):
|
|
"""Signal provided pods."""
|
|
idents = None if self._args.all else self._args.pod
|
|
pods = query_pods(self.client.pods, idents)
|
|
|
|
for pod in pods:
|
|
try:
|
|
pod.kill(self._args.signal)
|
|
print(pod.id)
|
|
except podman.PodNotFound as ex:
|
|
print(
|
|
'Pod "{}" not found.'.format(ex.name),
|
|
file=sys.stderr,
|
|
flush=True)
|
|
except podman.ErrorOccurred as e:
|
|
print(
|
|
'{}'.format(e.reason).capitalize(),
|
|
file=sys.stderr,
|
|
flush=True)
|
|
return 1
|
|
return 0
|