mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
centralized TERM signal handling
This commit is contained in:
parent
1b8dec9c88
commit
5a88478ccc
3 changed files with 9 additions and 15 deletions
|
@ -27,6 +27,7 @@ import time
|
|||
import yaml
|
||||
import re
|
||||
import getpass
|
||||
import signal
|
||||
import subprocess
|
||||
|
||||
from ansible import __version__
|
||||
|
@ -77,6 +78,11 @@ class CLI(object):
|
|||
self.action = None
|
||||
self.callback = callback
|
||||
|
||||
def _terminate(self, signum=None, framenum=None):
|
||||
if signum is not None:
|
||||
display.debug("Termination signal detected, shutting down gracefully: %d" % os.getpid() )
|
||||
raise SystemExit
|
||||
|
||||
def set_action(self):
|
||||
"""
|
||||
Get the action the user wants to execute from the sys argv list.
|
||||
|
@ -109,6 +115,9 @@ class CLI(object):
|
|||
else:
|
||||
display.display(u"No config file found; using defaults")
|
||||
|
||||
# Manage user interruptions
|
||||
signal.signal(signal.SIGTERM, self._terminate)
|
||||
|
||||
@staticmethod
|
||||
def ask_vault_passwords(ask_new_vault_pass=False, rekey=False):
|
||||
''' prompt for vault password and/or password change '''
|
||||
|
|
|
@ -21,7 +21,6 @@ __metaclass__ = type
|
|||
########################################################
|
||||
|
||||
import os
|
||||
import signal
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.cli import CLI
|
||||
|
@ -89,10 +88,6 @@ class AdHocCLI(CLI):
|
|||
tasks = [ dict(action=dict(module=self.options.module_name, args=parse_kv(self.options.module_args)), async=async, poll=poll) ]
|
||||
)
|
||||
|
||||
def _terminate(self, signum=None, framenum=None):
|
||||
if signum is not None:
|
||||
display.debug("Termination signal detected, shutting down gracefully")
|
||||
raise SystemExit
|
||||
|
||||
def run(self):
|
||||
''' use Runner lib to do SSH things '''
|
||||
|
@ -176,9 +171,6 @@ class AdHocCLI(CLI):
|
|||
# now create a task queue manager to execute the play
|
||||
self._tqm = None
|
||||
try:
|
||||
# Manage user interruptions
|
||||
signal.signal(signal.SIGTERM, self._terminate)
|
||||
|
||||
self._tqm = TaskQueueManager(
|
||||
inventory=inventory,
|
||||
variable_manager=variable_manager,
|
||||
|
|
|
@ -22,7 +22,6 @@ __metaclass__ = type
|
|||
import getpass
|
||||
import locale
|
||||
import os
|
||||
import signal
|
||||
import sys
|
||||
|
||||
from ansible.compat.six import string_types
|
||||
|
@ -69,8 +68,6 @@ class PlaybookExecutor:
|
|||
may limit the runs to serialized groups, etc.
|
||||
'''
|
||||
|
||||
signal.signal(signal.SIGTERM, self._terminate)
|
||||
|
||||
result = 0
|
||||
entrylist = []
|
||||
entry = {}
|
||||
|
@ -207,10 +204,6 @@ class PlaybookExecutor:
|
|||
|
||||
return result
|
||||
|
||||
def _terminate(self, signum=None, framenum=None):
|
||||
display.debug("Termination signal detected, shutting down gracefully")
|
||||
raise SystemExit
|
||||
|
||||
def _get_serialized_batches(self, play):
|
||||
'''
|
||||
Returns a list of hosts, subdivided into batches based on
|
||||
|
|
Loading…
Reference in a new issue