diff options
author | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2019-01-05 19:37:27 -0800 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2019-01-06 23:59:50 +0000 |
commit | 356824fa3ccd1adb96fe6834458923aa9536517a (patch) | |
tree | 2c37e1b26136fdefd512c39716e4644c4a4d0b16 /src/vpp-api/python/vpp_papi/vpp_stats.py | |
parent | 3c8e14684d32c19529c471a747bc9693a2801335 (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/vpp_papi/vpp_stats.py')
-rw-r--r-- | src/vpp-api/python/vpp_papi/vpp_stats.py | 28 |
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) |