summaryrefslogtreecommitdiff
path: root/ceilometerclient/shell.py
diff options
context:
space:
mode:
authorZhiQiang Fan <zhiqiang.fan@huawei.com>2014-11-13 11:49:16 +0800
committerZhiQiang Fan <aji.zqfan@gmail.com>2014-11-14 22:00:48 +0800
commit878e32e525bdb0ed3ca125597ea83dd64a4884d9 (patch)
treee99ab679664235e567aefc45db688801d34a214e /ceilometerclient/shell.py
parent13bbf186811d7770a47a943039d5a6e3d2ae6e08 (diff)
downloadpython-ceilometerclient-878e32e525bdb0ed3ca125597ea83dd64a4884d9.tar.gz
Fix timeout argument not treated as integer
Currently, if we specify --timeout 30 in CLI commands. we will get 'a float is required' error. Since we already specify timeout is ingeter in ceilometer.v2.client, this patch converts CLI argument timeout to integer. Note, if zero is passed to v2.client, we treat it as disable timeout. Change-Id: I213b6c24964095297cb4e87c25bb871ebd668bb4 Closes-Bug: #1391606
Diffstat (limited to 'ceilometerclient/shell.py')
-rw-r--r--ceilometerclient/shell.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/ceilometerclient/shell.py b/ceilometerclient/shell.py
index e8f5752..7356789 100644
--- a/ceilometerclient/shell.py
+++ b/ceilometerclient/shell.py
@@ -30,6 +30,20 @@ from ceilometerclient import exc
from ceilometerclient.openstack.common import cliutils
+def _positive_non_zero_int(argument_value):
+ if argument_value is None:
+ return None
+ try:
+ value = int(argument_value)
+ except ValueError:
+ msg = "%s must be an integer" % argument_value
+ raise argparse.ArgumentTypeError(msg)
+ if value <= 0:
+ msg = "%s must be greater than 0" % argument_value
+ raise argparse.ArgumentTypeError(msg)
+ return value
+
+
class CeilometerShell(object):
def get_base_parser(self):
@@ -64,6 +78,7 @@ class CeilometerShell(object):
parser.add_argument('--timeout',
default=600,
+ type=_positive_non_zero_int,
help='Number of seconds to wait for a response.')
parser.add_argument('--ceilometer-url',