| #!/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) | 
 |  | 
 | ############################################################################### |