diff options
-rw-r--r-- | resources/libraries/python/PapiExecutor.py | 2 | ||||
-rwxr-xr-x | resources/tools/papi/vpp_papi_provider.py | 18 |
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) |