summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
authorxiexs <xiexs@cn.fujitsu.com>2015-11-09 04:22:00 -0500
committerxiexs <xiexs@cn.fujitsu.com>2015-11-09 04:22:09 -0500
commitea63553925bce0432958ae4a15536f7f83b1f28d (patch)
tree0bc70fe5c474f7b76f8ab018d032029794cb4499 /openstackclient/common
parent6dfa304617255f8f5d3011ee92648e3c2dbbe2fa (diff)
downloadpython-openstackclient-ea63553925bce0432958ae4a15536f7f83b1f28d.tar.gz
Fix the bug of "openstack console log show"
The behaviors are inconsistent while different negative line numbers specified. Change-Id: I2573f3e789f5603c896758971830ffc0b94c5e2b Closes-Bug: #1512263
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/parseractions.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/openstackclient/common/parseractions.py b/openstackclient/common/parseractions.py
index 8f6008e2..fd90369a 100644
--- a/openstackclient/common/parseractions.py
+++ b/openstackclient/common/parseractions.py
@@ -65,3 +65,18 @@ class RangeAction(argparse.Action):
# Too many values
msg = "Invalid range, too many values"
raise argparse.ArgumentError(self, msg)
+
+
+class NonNegativeAction(argparse.Action):
+ """A custom action to check whether the value is non-negative or not
+
+ Ensures the value is >= 0.
+ """
+
+ def __call__(self, parser, namespace, values, option_string=None):
+ try:
+ assert(int(values) >= 0)
+ setattr(namespace, self.dest, values)
+ except Exception:
+ msg = "%s expected a non-negative integer" % (str(option_string))
+ raise argparse.ArgumentTypeError(self, msg)