+ vat_path=vat_name)
+
+ with open(vat_name, 'r') as tmp_f:
+ VatHistory.add_to_vat_history(node, tmp_f.read())
+
+ try:
+ ret_code, stdout, stderr = ssh.exec_command_sudo(cmd=cmd,
+ timeout=timeout)
+ except SSHTimeout:
+ logger.error("VAT script execution timeout: {cmd}".format(cmd=cmd))
+ raise
+ except:
+ raise RuntimeError("VAT script execution failed: {cmd}"
+ .format(cmd=cmd))
+
+ self._ret_code = ret_code
+ self._stdout = stdout
+ self._stderr = stderr
+ self._script_name = vat_name
+
+ self._delete_files(node, vat_name)
+
+ def scp_and_execute_cli_script(self, vat_name, node, timeout=120,
+ json_out=True):
+ """Copy vat_name script to node, execute it and return result.
+ Store the content of vat script in VAT history.
+
+ :param vat_name: Name of the VPP script file.
+ Full path and name of the script is required.
+ :param node: Node to execute the VPP script on.
+ :param timeout: Seconds to allow the script to run.
+ :param json_out: Require JSON output.
+ :type vat_name: str
+ :type node: dict
+ :type timeout: int
+ :type json_out: bool
+ :raises RuntimeError: If CLI script execution failed.
+ """
+ ssh = SSH()
+ try:
+ ssh.connect(node)
+ except:
+ raise SSHException("Cannot open SSH connection to execute VAT "
+ "command(s) from vat script {name}"
+ .format(name=vat_name))
+
+ ssh.scp(vat_name, vat_name)
+
+ cmd = "{vat_bin} {json}".format(vat_bin=Constants.VAT_BIN_NAME,
+ json="json" if json_out is True else "")
+ cmd_input = "exec exec {vat_path}".format(vat_path=vat_name)
+
+ VatHistory.add_to_vat_history(node, cmd_input)
+ with open(vat_name, 'r') as tmp_f:
+ VatHistory.add_to_vat_history(node, tmp_f.read())
+
+ try:
+ ret_code, stdout, stderr = ssh.exec_command_sudo(cmd, cmd_input,
+ timeout)
+ except SSHTimeout:
+ logger.error("CLI script execution timeout: {0}{1}".
+ format(cmd, "<<< " + cmd_input if cmd_input else ""))
+ raise
+ except:
+ raise RuntimeError("CLI script execution failed: {0}{1}".format(
+ cmd, "<<< " + cmd_input if cmd_input else ""))
+