summaryrefslogtreecommitdiff
path: root/swiftclient
diff options
context:
space:
mode:
authorTim Burke <tim.burke@gmail.com>2023-03-20 11:27:50 -0700
committerTim Burke <tim.burke@gmail.com>2023-03-20 17:23:38 -0700
commit9e703b9345cffd90d723e0ce5c180a385c75c62e (patch)
tree47706cf818b87f90126015cb03425c7a8ced1d02 /swiftclient
parent779cf7484e44855ddbf6f29d48af79104e42a0a6 (diff)
downloadpython-swiftclient-9e703b9345cffd90d723e0ce5c180a385c75c62e.tar.gz
shell: Allow timeouts to have units
Related-Change: Ibbe7e5aa8aa8e54935da76109c2ea13fb83bc7ab Change-Id: Ifeaaea790d1dadc84b157a7cf2be7590949c70f0
Diffstat (limited to 'swiftclient')
-rwxr-xr-xswiftclient/shell.py4
-rw-r--r--swiftclient/utils.py14
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: