diff options
author | Tim Burke <tim.burke@gmail.com> | 2023-03-20 11:27:50 -0700 |
---|---|---|
committer | Tim Burke <tim.burke@gmail.com> | 2023-03-20 17:23:38 -0700 |
commit | 9e703b9345cffd90d723e0ce5c180a385c75c62e (patch) | |
tree | 47706cf818b87f90126015cb03425c7a8ced1d02 /swiftclient | |
parent | 779cf7484e44855ddbf6f29d48af79104e42a0a6 (diff) | |
download | python-swiftclient-9e703b9345cffd90d723e0ce5c180a385c75c62e.tar.gz |
shell: Allow timeouts to have units
Related-Change: Ibbe7e5aa8aa8e54935da76109c2ea13fb83bc7ab
Change-Id: Ifeaaea790d1dadc84b157a7cf2be7590949c70f0
Diffstat (limited to 'swiftclient')
-rwxr-xr-x | swiftclient/shell.py | 4 | ||||
-rw-r--r-- | swiftclient/utils.py | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/swiftclient/shell.py b/swiftclient/shell.py index 882a1c0..dc68aa9 100755 --- a/swiftclient/shell.py +++ b/swiftclient/shell.py @@ -31,7 +31,7 @@ from time import gmtime, strftime from swiftclient import RequestException from swiftclient.utils import config_true_value, generate_temp_url, \ - prt_bytes, JSONableIterable + prt_bytes, parse_timeout, JSONableIterable from swiftclient.multithreading import OutputManager from swiftclient.exceptions import ClientException from swiftclient import __version__ as client_version @@ -1746,7 +1746,7 @@ def add_default_args(parser): parser.add_argument('-K', '--key', dest='key', default=environ.get('ST_KEY'), help='Key for obtaining an auth token.') - parser.add_argument('-T', '--timeout', type=int, dest='timeout', + parser.add_argument('-T', '--timeout', type=parse_timeout, dest='timeout', default=None, help='Timeout in seconds to wait for response.') parser.add_argument('-R', '--retries', type=int, default=5, dest='retries', diff --git a/swiftclient/utils.py b/swiftclient/utils.py index 0a67537..39481e4 100644 --- a/swiftclient/utils.py +++ b/swiftclient/utils.py @@ -70,6 +70,20 @@ def prt_bytes(num_bytes, human_flag): return '%.1f%s' % (num, suffix) +def parse_timeout(value): + for suffix, multiplier in ( + ('s', 1), + ('m', 60), + ('min', 60), + ('h', 60 * 60), + ('hr', 60 * 60), + ('d', 24 * 60 * 60), + ): + if value.endswith(suffix): + return multiplier * float(value[:-len(suffix)]) + return float(value) + + def parse_timestamp(seconds, absolute=False): try: try: |