blob: 8729fd5b07ee20e3c7619505eb8cdddf533de104 [file] [log] [blame]
#!/usr/bin/env python
r"""
This module provides many valuable bmc ssh functions such as
bmc_execute_command.
"""
import sys
import exceptions
import re
import gen_print as gp
import gen_valid as gv
import gen_robot_ssh as grs
from robot.libraries.BuiltIn import BuiltIn
def bmc_execute_command(cmd_buf,
print_out=0,
print_err=0,
ignore_err=0,
fork=0,
quiet=None,
test_mode=None):
r"""
Run the given command in an BMC SSH session and return the stdout, stderr
and the return code.
This function will obtain the global values for OPENBMC_HOST,
OPENBMC_USERNAME, etc.
Description of arguments:
cmd_buf The command string to be run in an SSH
session.
print_out If this is set, this function will print
the stdout/stderr generated by the shell
command.
print_err If show_err is set, this function will
print a standardized error report if the
shell command returns non-zero.
ignore_err Indicates that errors encountered on the
sshlib.execute_command are to be ignored.
fork Indicates that sshlib.start is to be used
rather than sshlib.execute_command.
quiet Indicates whether this function should run
the pissuing() function prints an
"Issuing: <cmd string>" to stdout. This
defaults to the global quiet value.
test_mode If test_mode is set, this function will
not actually run the command. This
defaults to the global test_mode value.
"""
# Get global BMC variable values.
openbmc_host = BuiltIn().get_variable_value("${OPENBMC_HOST}", default="")
openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}",
default="")
openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}",
default="")
if not gv.valid_value(openbmc_host):
return "", "", 1
if not gv.valid_value(openbmc_username):
return "", "", 1
if not gv.valid_value(openbmc_password):
return "", "", 1
open_connection_args = {'host': openbmc_host, 'alias': 'bmc_connection',
'timeout': '25.0', 'prompt': '# '}
login_args = {'username': openbmc_username, 'password': openbmc_password}
return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
print_out, print_err, ignore_err, fork,
quiet, test_mode)
def os_execute_command(cmd_buf,
print_out=0,
print_err=0,
ignore_err=0,
fork=0,
quiet=None,
test_mode=None):
r"""
Run the given command in an OS SSH session and return the stdout, stderr
and the return code.
This function will obtain the global values for OS_HOST, OS_USERNAME, etc.
Description of arguments:
cmd_buf The command string to be run in an SSH
session.
print_out If this is set, this function will print
the stdout/stderr generated by the shell
command.
print_err If show_err is set, this function will
print a standardized error report if the
shell command returns non-zero.
ignore_err Indicates that errors encountered on the
sshlib.execute_command are to be ignored.
fork Indicates that sshlib.start is to be used
rather than sshlib.execute_command.
quiet Indicates whether this function should run
the pissuing() function prints an
"Issuing: <cmd string>" to stdout. This
defaults to the global quiet value.
test_mode If test_mode is set, this function will
not actually run the command. This
defaults to the global test_mode value.
"""
# Get global OS variable values.
os_host = BuiltIn().get_variable_value("${OS_HOST}", default="")
os_username = BuiltIn().get_variable_value("${OS_USERNAME}",
default="")
os_password = BuiltIn().get_variable_value("${OS_PASSWORD}",
default="")
if not gv.valid_value(os_host):
return "", "", 1
if not gv.valid_value(os_username):
return "", "", 1
if not gv.valid_value(os_password):
return "", "", 1
open_connection_args = {'host': os_host, 'alias': 'os_connection'}
login_args = {'username': os_username, 'password': os_password}
return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
print_out, print_err, ignore_err, fork,
quiet, test_mode)
def xcat_execute_command(cmd_buf,
print_out=0,
print_err=0,
ignore_err=0,
fork=0,
quiet=None,
test_mode=None):
r"""
Run the given command in an XCAT SSH session and return the stdout, stderr
and the return code.
This function will obtain the global values for XCAT_HOST, XCAT_USERNAME,
etc.
Description of arguments:
cmd_buf The command string to be run in an SSH
session.
print_out If this is set, this function will print
the stdout/stderr generated by the shell
command.
print_err If show_err is set, this function will
print a standardized error report if the
shell command returns non-zero.
ignore_err Indicates that errors encountered on the
sshlib.execute_command are to be ignored.
fork Indicates that sshlib.start is to be used
rather than sshlib.execute_command.
quiet Indicates whether this function should run
the pissuing() function prints an
"Issuing: <cmd string>" to stdout. This
defaults to the global quiet value.
test_mode If test_mode is set, this function will
not actually run the command. This
defaults to the global test_mode value.
"""
# Get global XCAT variable values.
xcat_host = BuiltIn().get_variable_value("${XCAT_HOST}", default="")
xcat_username = BuiltIn().get_variable_value("${XCAT_USERNAME}",
default="")
xcat_password = BuiltIn().get_variable_value("${XCAT_PASSWORD}",
default="")
xcat_port = BuiltIn().get_variable_value("${XCAT_PORT}",
default="22")
if not gv.valid_value(xcat_host):
return "", "", 1
if not gv.valid_value(xcat_username):
return "", "", 1
if not gv.valid_value(xcat_password):
return "", "", 1
if not gv.valid_value(xcat_port):
return "", "", 1
open_connection_args = {'host': xcat_host, 'alias': 'xcat_connection',
'port': xcat_port}
login_args = {'username': xcat_username, 'password': xcat_password}
return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
print_out, print_err, ignore_err, fork,
quiet, test_mode)
def device_write(cmd_buf,
print_out=0,
quiet=None,
test_mode=None):
r"""
Write the given command in a device SSH session and return the stdout,
stderr and the return code.
This function is useful for writing to a switch.
This function will obtain the global values for DEVICE_HOST,
DEVICE_USERNAME, etc.
Description of arguments:
cmd_buf The command string to be run in an SSH
session.
print_out If this is set, this function will print
the stdout/stderr generated by the shell
command.
print_err If show_err is set, this function will
print a standardized error report if the
shell command returns non-zero.
ignore_err Indicates that errors encountered on the
sshlib.execute_command are to be ignored.
fork Indicates that sshlib.start is to be used
rather than sshlib.execute_command.
quiet Indicates whether this function should run
the pissuing() function prints an
"Issuing: <cmd string>" to stdout. This
defaults to the global quiet value.
test_mode If test_mode is set, this function will
not actually run the command. This
defaults to the global test_mode value.
"""
# Get global DEVICE variable values.
device_host = BuiltIn().get_variable_value("${DEVICE_HOST}", default="")
device_username = BuiltIn().get_variable_value("${DEVICE_USERNAME}",
default="")
device_password = BuiltIn().get_variable_value("${DEVICE_PASSWORD}",
default="")
device_port = BuiltIn().get_variable_value("${DEVICE_PORT}",
default="22")
if not gv.valid_value(device_host):
return "", "", 1
if not gv.valid_value(device_username):
return "", "", 1
if not gv.valid_value(device_password):
return "", "", 1
if not gv.valid_value(device_port):
return "", "", 1
open_connection_args = {'host': device_host, 'alias': 'device_connection',
'port': device_port}
login_args = {'username': device_username, 'password': device_password}
return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
print_out, print_err=0, ignore_err=1,
fork=0, quiet=quiet, test_mode=test_mode)