diff options
author | Vratko Polak <vrpolak@cisco.com> | 2019-07-09 12:17:09 +0200 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2019-07-12 13:00:49 +0000 |
commit | 33fb34665214bbbd0a4b3154169b21c2da01f69b (patch) | |
tree | 9ebb70889824451cf8411875159a6fafd70b60ac /resources/libraries/python/VppCounters.py | |
parent | ccfe499e2a27f2caf234ecbb2ec948120810eab6 (diff) |
PapiExecutor always verifies
Do not support returning unverified replies anymore.
Basically, ".get_replies().verify_replies()" is now just ".get_replies()".
This allows fairly large simplifications both at call sites
and in PapiExecutor.py
+ Rename get_dumps to get_details.
+ Introduce get_reply and get_sw_if_index.
+ Rename variables holding get_*() value,
+ e.g. get_stats() value is stored to variable named "stats".
+ Rename "item" of subsequent loop to hint the type instead.
+ Rename "details" function argument to "verbose".
+ Process reply details in place, instead of building new list.
- Except hybrid blocks which can return both list or single item.
- Except human readable text building blocks.
+ Rename most similar names to sw_if_index.
- Except "vpp_sw_index" and some function names.
+ Use single run_cli_cmd from PapiExecutor.
+ Do not chain methods over multiple lines.
+ Small space gain is not worth readability loss.
+ Include minor code and docstrings improvement.
+ Add some TODOs.
Change-Id: Ib2110a3d2101a74d5837baab3a58dc46aafc6ce3
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'resources/libraries/python/VppCounters.py')
-rw-r--r-- | resources/libraries/python/VppCounters.py | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/resources/libraries/python/VppCounters.py b/resources/libraries/python/VppCounters.py index cc3554829e..dd1553538d 100644 --- a/resources/libraries/python/VppCounters.py +++ b/resources/libraries/python/VppCounters.py @@ -29,33 +29,6 @@ class VppCounters(object): self._stats_table = None @staticmethod - def _run_cli_cmd(node, cmd, log=True): - """Run a CLI command. - - :param node: Node to run command on. - :param cmd: The CLI command to be run on the node. - :param log: If True, the response is logged. - :type node: dict - :type cmd: str - :type log: bool - :returns: Verified data from PAPI response. - :rtype: dict - """ - cli = 'cli_inband' - args = dict(cmd=cmd) - err_msg = "Failed to run 'cli_inband {cmd}' PAPI command on host " \ - "{host}".format(host=node['host'], cmd=cmd) - - with PapiExecutor(node) as papi_exec: - data = papi_exec.add(cli, **args).get_replies(err_msg). \ - verify_reply(err_msg=err_msg) - - if log: - logger.info("{cmd}:\n{data}".format(cmd=cmd, data=data["reply"])) - - return data - - @staticmethod def _get_non_zero_items(data): """Extract and return non-zero items from the input data. @@ -73,7 +46,7 @@ class VppCounters(object): :param node: Node to run command on. :type node: dict """ - VppCounters._run_cli_cmd(node, 'show errors') + PapiExecutor.run_cli_cmd(node, 'show errors') @staticmethod def vpp_show_errors_verbose(node): @@ -82,7 +55,7 @@ class VppCounters(object): :param node: Node to run command on. :type node: dict """ - VppCounters._run_cli_cmd(node, 'show errors verbose') + PapiExecutor.run_cli_cmd(node, 'show errors verbose') @staticmethod def vpp_show_errors_on_all_duts(nodes, verbose=False): @@ -112,6 +85,7 @@ class VppCounters(object): args = dict(path='^/sys/node') with PapiExecutor(node) as papi_exec: stats = papi_exec.add("vpp-stats", **args).get_stats()[0] + # TODO: Introduce get_stat? names = stats['/sys/node/names'] @@ -187,7 +161,7 @@ class VppCounters(object): :param node: Node to run command on. :type node: dict """ - VppCounters._run_cli_cmd(node, 'show hardware detail') + PapiExecutor.run_cli_cmd(node, 'show hardware detail') @staticmethod def vpp_clear_runtime(node): @@ -198,7 +172,7 @@ class VppCounters(object): :returns: Verified data from PAPI response. :rtype: dict """ - return VppCounters._run_cli_cmd(node, 'clear runtime', log=False) + return PapiExecutor.run_cli_cmd(node, 'clear runtime', log=False) @staticmethod def clear_runtime_counters_on_all_duts(nodes): @@ -220,7 +194,7 @@ class VppCounters(object): :returns: Verified data from PAPI response. :rtype: dict """ - return VppCounters._run_cli_cmd(node, 'clear interfaces', log=False) + return PapiExecutor.run_cli_cmd(node, 'clear interfaces', log=False) @staticmethod def clear_interface_counters_on_all_duts(nodes): @@ -242,7 +216,7 @@ class VppCounters(object): :returns: Verified data from PAPI response. :rtype: dict """ - return VppCounters._run_cli_cmd(node, 'clear hardware', log=False) + return PapiExecutor.run_cli_cmd(node, 'clear hardware', log=False) @staticmethod def clear_hardware_counters_on_all_duts(nodes): @@ -264,7 +238,7 @@ class VppCounters(object): :returns: Verified data from PAPI response. :rtype: dict """ - return VppCounters._run_cli_cmd(node, 'clear errors', log=False) + return PapiExecutor.run_cli_cmd(node, 'clear errors', log=False) @staticmethod def clear_error_counters_on_all_duts(nodes): @@ -315,9 +289,9 @@ class VppCounters(object): """ version = 'ip6' if is_ipv6 else 'ip4' topo = Topology() - if_index = topo.get_interface_sw_index(node, interface) - if if_index is None: - logger.trace('{i} sw_index not found.'.format(i=interface)) + sw_if_index = topo.get_interface_sw_index(node, interface) + if sw_if_index is None: + logger.trace('{i} sw_if_index not found.'.format(i=interface)) return 0 if_counters = self._stats_table.get('interface_counters') @@ -327,7 +301,7 @@ class VppCounters(object): for counter in if_counters: if counter['vnet_counter_type'] == version: data = counter['data'] - return data[if_index] + return data[sw_if_index] logger.trace('{i} {v} counter not found.'.format( i=interface, v=version)) return 0 |