aboutsummaryrefslogtreecommitdiffstats
path: root/src/vpp-api/python
diff options
context:
space:
mode:
authorPaul Vinciguerra <pvinci@vinciconsulting.com>2019-01-05 19:37:27 -0800
committerFlorin Coras <florin.coras@gmail.com>2019-01-06 23:59:50 +0000
commit356824fa3ccd1adb96fe6834458923aa9536517a (patch)
tree2c37e1b26136fdefd512c39716e4644c4a4d0b16 /src/vpp-api/python
parent3c8e14684d32c19529c471a747bc9693a2801335 (diff)
vpp-api: Add context to VPPStatsIOError.
* Provide context information and return meaningful information. VPPStatsIOError: Stat segment client connection returned: -2 Stat client socket open but couldn't connect. Change-Id: I14ea35c58452a2cb7598a7efd136f0c7e1f5743a Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
Diffstat (limited to 'src/vpp-api/python')
-rw-r--r--src/vpp-api/python/vpp_papi/vpp_stats.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/vpp-api/python/vpp_papi/vpp_stats.py b/src/vpp-api/python/vpp_papi/vpp_stats.py
index 06daaf86f50..0afed26215d 100644
--- a/src/vpp-api/python/vpp_papi/vpp_stats.py
+++ b/src/vpp-api/python/vpp_papi/vpp_stats.py
@@ -128,7 +128,6 @@ def stat_entry_to_python(api, e):
# Scalar index
if e.type == 1:
return e.scalar_value
- return None
if e.type == 2:
return simple_counter_vec_list(api, e.simple_counter_vec)
if e.type == 3:
@@ -139,7 +138,30 @@ def stat_entry_to_python(api, e):
class VPPStatsIOError(IOError):
- pass
+ message = "Stat segment client connection returned: " \
+ "%(retval)s %(strerror)s."
+
+ strerror = {-1: "Stat client couldn't open socket",
+ -2: "Stat client socket open but couldn't connect",
+ -3: "Receiving file descriptor failed",
+ -4: "mmap fstat failed",
+ -5: "mmap map failed"
+ }
+
+ def __init__(self, message=None, **kwargs):
+ if 'retval' in kwargs:
+ self.retval = kwargs['retval']
+ kwargs['strerror'] = self.strerror[int(self.retval)]
+
+ if not message:
+ try:
+ message = self.message % kwargs
+ except Exception as e:
+ message = self.message
+ else:
+ message = message % kwargs
+
+ super(VPPStatsIOError, self).__init__(message)
class VPPStatsClientLoadError(RuntimeError):
@@ -168,7 +190,7 @@ class VPPStats(object):
break
if rv != 0:
- raise VPPStatsIOError()
+ raise VPPStatsIOError(retval=rv)
def heartbeat(self):
return self.api.stat_segment_heartbeat_r(self.client)