aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVratko Polak <vrpolak@cisco.com>2021-05-12 10:56:45 +0200
committerVratko Polak <vrpolak@cisco.com>2021-05-12 10:56:45 +0200
commitbd5eec0c49d4db896eab08ab3feb467f5d14ccc8 (patch)
treea6ecfa993afe1a422b8646448a1a42e8864aefd1
parent78a8427cc50c137e5d59ad3448ae128fdda369b2 (diff)
PAPI stats: Use single dump
There is only one call site (VppCounters.vpp_show_runtime) which uses a single path ("^/sys/node"), so we do not need to split the replies anymore. This simplifies investigating bugs related to VPP stats. Change-Id: Idfc029c795cd78cf6d41c2f461f7844aed53410d Signed-off-by: Vratko Polak <vrpolak@cisco.com>
-rw-r--r--resources/libraries/python/PapiExecutor.py2
-rwxr-xr-xresources/tools/papi/vpp_papi_provider.py18
2 files changed, 7 insertions, 13 deletions
diff --git a/resources/libraries/python/PapiExecutor.py b/resources/libraries/python/PapiExecutor.py
index 76d7daf3ed..7bfc8614a5 100644
--- a/resources/libraries/python/PapiExecutor.py
+++ b/resources/libraries/python/PapiExecutor.py
@@ -872,6 +872,8 @@ class PapiExecutor:
is "stats".
- the second parameter must be 'path' as it is used by PapiExecutor
method 'add'.
+ - even if the parameter contains multiple paths, there is only one
+ reply item (for each .add).
"""
def __init__(self, node):
diff --git a/resources/tools/papi/vpp_papi_provider.py b/resources/tools/papi/vpp_papi_provider.py
index c9a43447f9..ff52de501b 100755
--- a/resources/tools/papi/vpp_papi_provider.py
+++ b/resources/tools/papi/vpp_papi_provider.py
@@ -209,6 +209,8 @@ def process_json_request(args):
def process_stats(args):
"""Process the VPP Stats.
+ The reply contains single item covering all paths.
+
:param args: Command line arguments passed to VPP PAPI Provider.
:type args: ArgumentParser
:returns: JSON formatted string.
@@ -221,19 +223,9 @@ def process_stats(args):
except Exception as err:
raise RuntimeError(f"PAPI init failed:\n{err!r}")
- json_data = json.loads(args.data)
-
- reply = list()
-
- for path in json_data:
- # The ls method can match multiple patterns,
- # but we feed it one path at a time anyway, because the caller
- # expect results in a list, one item per path.
- # Most VPP versions understand a string is a single pattern,
- # but some blindly iterate (as if it was a list of chars).
- directory = stats.ls([path])
- data = stats.dump(directory)
- reply.append(data)
+ paths = json.loads(args.data)
+ directory = stats.ls(paths)
+ reply = [stats.dump(directory)]
try:
return json.dumps(reply)