import binascii
import json
+from pprint import pformat
+
from robot.api import logger
from resources.libraries.python.Constants import Constants
return json.loads(stdout)
+ def get_stats_reply(self, err_msg="Failed to get statistics.", timeout=120):
+ """Get VPP Stats reply from VPP Python API.
+
+ :param err_msg: The message used if the PAPI command(s) execution fails.
+ :param timeout: Timeout in seconds.
+ :type err_msg: str
+ :type timeout: int
+ :returns: Requested VPP statistics.
+ :rtype: list
+ """
+
+ args = self._api_command_list[0]['api_args']
+ self._api_command_list = list()
+
+ stdout, _ = self._execute_papi(
+ args, method='stats_request', err_msg=err_msg, timeout=timeout)
+
+ return json.loads(stdout)
+
def get_replies(self, err_msg="Failed to get replies.",
process_reply=True, ignore_errors=False, timeout=120):
"""Get reply/replies from VPP Python API.
method='dump', process_reply=process_reply,
ignore_errors=ignore_errors, err_msg=err_msg, timeout=timeout)
+ @staticmethod
+ def dump_and_log(node, cmds):
+ """Dump and log requested information.
+
+ :param node: DUT node.
+ :param cmds: Dump commands to be executed.
+ :type node: dict
+ :type cmds: list
+ """
+ with PapiExecutor(node) as papi_exec:
+ for cmd in cmds:
+ dump = papi_exec.add(cmd).get_dump()
+ logger.debug("{cmd}:\n{data}".format(
+ cmd=cmd, data=pformat(dump.reply[0]["api_reply"])))
+
@staticmethod
def run_cli_cmd(node, cmd, log=True):
"""Run a CLI command.
if not api_data:
RuntimeError("No API data provided.")
- json_data = json.dumps(api_data) if method == "stats" \
+ json_data = json.dumps(api_data) \
+ if method in ("stats", "stats_request") \
else json.dumps(self._process_api_data(api_data))
cmd = "{fw_dir}/{papi_provider} --method {method} --data '{json}'".\