Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Newbie08
salt
backport-thread.is_alive-fix-390.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File backport-thread.is_alive-fix-390.patch of Package salt
From a782af246a2f3d4b91afee2ee847c87f71e8904b Mon Sep 17 00:00:00 2001 From: Alexander Graul <agraul@suse.com> Date: Fri, 25 Jun 2021 13:34:38 +0200 Subject: [PATCH] Backport Thread.is_alive fix (#390) * Change thread.isAlive() to thread.is_alive() (cherry picked from commit b1dc0cee03896c8abad55a609805b0be6c7aaefa) * Run pre-commit on salt/utils/timed_subprocess.py (cherry picked from commit 178e3b83e6c21abf5d6db454c19c104ceb8bd92c) * Fix the six removal made by pre-commit (cherry picked from commit aaa8ca3b7f129568637799d6d49d7ad3708f73bc) * Remove the PY2 code in salt/utils/timed_subprocess.py (cherry picked from commit 3a702a510b965e9af1ad318c953e19114925357e) Co-authored-by: Petr Messner <petr@leadhub.co> Co-authored-by: Petr Messner <petr.messner@gmail.com> --- salt/utils/timed_subprocess.py | 39 ++++++++++++++-------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/salt/utils/timed_subprocess.py b/salt/utils/timed_subprocess.py index 5c4ac35ac3..b043a3bde2 100644 --- a/salt/utils/timed_subprocess.py +++ b/salt/utils/timed_subprocess.py @@ -1,8 +1,6 @@ -# -*- coding: utf-8 -*- """ For running command line executables with a timeout """ -from __future__ import absolute_import, print_function, unicode_literals import shlex import subprocess @@ -10,10 +8,9 @@ import threading import salt.exceptions import salt.utils.data -from salt.ext import six -class TimedProc(object): +class TimedProc: """ Create a TimedProc object, calls subprocess.Popen with passed args and **kwargs """ @@ -46,7 +43,7 @@ class TimedProc(object): if self.timeout and not isinstance(self.timeout, (int, float)): raise salt.exceptions.TimedProcTimeoutError( - "Error: timeout {0} must be a number".format(self.timeout) + "Error: timeout {} must be a number".format(self.timeout) ) if kwargs.get("shell", False): args = salt.utils.data.decode(args, to_str=True) @@ -59,28 +56,24 @@ class TimedProc(object): try: args = shlex.split(args) except AttributeError: - args = shlex.split(six.text_type(args)) + args = shlex.split(str(args)) str_args = [] for arg in args: - if not isinstance(arg, six.string_types): - str_args.append(six.text_type(arg)) + if not isinstance(arg, str): + str_args.append(str(arg)) else: str_args.append(arg) args = str_args else: - if not isinstance(args, (list, tuple, six.string_types)): + if not isinstance(args, (list, tuple, str)): # Handle corner case where someone does a 'cmd.run 3' - args = six.text_type(args) + args = str(args) # Ensure that environment variables are strings - for key, val in six.iteritems(kwargs.get("env", {})): - if not isinstance(val, six.string_types): - kwargs["env"][key] = six.text_type(val) - if not isinstance(key, six.string_types): - kwargs["env"][six.text_type(key)] = kwargs["env"].pop(key) - if six.PY2 and "env" in kwargs: - # Ensure no unicode in custom env dict, as it can cause - # problems with subprocess. - kwargs["env"] = salt.utils.data.encode_dict(kwargs["env"]) + for key, val in kwargs.get("env", {}).items(): + if not isinstance(val, str): + kwargs["env"][key] = str(val) + if not isinstance(key, str): + kwargs["env"][str(key)] = kwargs["env"].pop(key) args = salt.utils.data.decode(args) self.process = subprocess.Popen(args, **kwargs) self.command = args @@ -103,18 +96,18 @@ class TimedProc(object): rt = threading.Thread(target=receive) rt.start() rt.join(self.timeout) - if rt.isAlive(): + if rt.is_alive(): # Subprocess cleanup (best effort) self.process.kill() def terminate(): - if rt.isAlive(): + if rt.is_alive(): self.process.terminate() threading.Timer(10, terminate).start() raise salt.exceptions.TimedProcTimeoutError( - "{0} : Timed out after {1} seconds".format( - self.command, six.text_type(self.timeout), + "{} : Timed out after {} seconds".format( + self.command, str(self.timeout), ) ) return self.process.returncode -- 2.32.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor