1#!/usr/bin/env python 2 3r""" 4This module provides many valuable bmc ssh functions such as bmc_execute_command. 5""" 6 7import gen_valid as gv 8import gen_robot_ssh as grs 9from robot.libraries.BuiltIn import BuiltIn 10 11 12def bmc_execute_command(cmd_buf, 13 print_out=0, 14 print_err=0, 15 ignore_err=0, 16 fork=0, 17 quiet=None, 18 test_mode=None, 19 time_out=None): 20 r""" 21 Run the given command in an BMC SSH session and return the stdout, stderr and the return code. 22 23 This function will obtain the global values for OPENBMC_HOST, OPENBMC_USERNAME, etc. 24 25 Description of arguments: 26 cmd_buf The command string to be run in an SSH session. 27 print_out If this is set, this function will print the stdout/stderr generated by 28 the shell command. 29 print_err If show_err is set, this function will print a standardized error report 30 if the shell command returns non-zero. 31 ignore_err Indicates that errors encountered on the sshlib.execute_command are to be 32 ignored. 33 fork Indicates that sshlib.start is to be used rather than 34 sshlib.execute_command. 35 quiet Indicates whether this function should run the pissuing() function prints 36 an "Issuing: <cmd string>" to stdout. This defaults to the global quiet 37 value. 38 test_mode If test_mode is set, this function will not actually run the command. 39 This defaults to the global test_mode value. 40 time_out The amount of time to allow for the execution of cmd_buf. A value of 41 None means that there is no limit to how long the command may take. 42 """ 43 44 # Get global BMC variable values. 45 openbmc_host = BuiltIn().get_variable_value("${OPENBMC_HOST}", default="") 46 openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}", 47 default="") 48 openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}", 49 default="") 50 51 if not gv.valid_value(openbmc_host): 52 return "", "", 1 53 if not gv.valid_value(openbmc_username): 54 return "", "", 1 55 if not gv.valid_value(openbmc_password): 56 return "", "", 1 57 58 open_connection_args = {'host': openbmc_host, 'alias': 'bmc_connection', 59 'timeout': '25.0', 'prompt': '# '} 60 login_args = {'username': openbmc_username, 'password': openbmc_password} 61 62 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args, 63 print_out, print_err, ignore_err, fork, 64 quiet, test_mode, time_out) 65 66 67def os_execute_command(cmd_buf, 68 print_out=0, 69 print_err=0, 70 ignore_err=0, 71 fork=0, 72 quiet=None, 73 test_mode=None, 74 time_out=None): 75 r""" 76 Run the given command in an OS SSH session and return the stdout, stderr and the return code. 77 78 This function will obtain the global values for OS_HOST, OS_USERNAME, etc. 79 80 Description of arguments: 81 cmd_buf The command string to be run in an SSH session. 82 print_out If this is set, this function will print the stdout/stderr generated by 83 the shell command. 84 print_err If show_err is set, this function will print a standardized error report 85 if the shell command returns non-zero. 86 ignore_err Indicates that errors encountered on the sshlib.execute_command are to be 87 ignored. 88 fork Indicates that sshlib.start is to be used rather than 89 sshlib.execute_command. 90 quiet Indicates whether this function should run the pissuing() function prints 91 an "Issuing: <cmd string>" to stdout. This defaults to the global quiet 92 value. 93 test_mode If test_mode is set, this function will not actually run the command. 94 This defaults to the global test_mode value. 95 time_out The amount of time to allow for the execution of cmd_buf. A value of 96 None means that there is no limit to how long the command may take. 97 """ 98 99 # Get global OS variable values. 100 os_host = BuiltIn().get_variable_value("${OS_HOST}", default="") 101 os_username = BuiltIn().get_variable_value("${OS_USERNAME}", 102 default="") 103 os_password = BuiltIn().get_variable_value("${OS_PASSWORD}", 104 default="") 105 106 if not gv.valid_value(os_host): 107 return "", "", 1 108 if not gv.valid_value(os_username): 109 return "", "", 1 110 if not gv.valid_value(os_password): 111 return "", "", 1 112 113 open_connection_args = {'host': os_host, 'alias': 'os_connection'} 114 login_args = {'username': os_username, 'password': os_password} 115 116 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args, 117 print_out, print_err, ignore_err, fork, 118 quiet, test_mode, time_out) 119 120 121def xcat_execute_command(cmd_buf, 122 print_out=0, 123 print_err=0, 124 ignore_err=0, 125 fork=0, 126 quiet=None, 127 test_mode=None): 128 r""" 129 Run the given command in an XCAT SSH session and return the stdout, stderr and the return code. 130 131 This function will obtain the global values for XCAT_HOST, XCAT_USERNAME, etc. 132 133 Description of arguments: 134 cmd_buf The command string to be run in an SSH session. 135 print_out If this is set, this function will print the stdout/stderr generated by 136 the shell command. 137 print_err If show_err is set, this function will print a standardized error report 138 if the shell command returns non-zero. 139 ignore_err Indicates that errors encountered on the sshlib.execute_command are to be 140 ignored. 141 fork Indicates that sshlib.start is to be used rather than 142 sshlib.execute_command. 143 quiet Indicates whether this function should run the pissuing() function prints 144 an "Issuing: <cmd string>" to stdout. This defaults to the global quiet 145 value. 146 test_mode If test_mode is set, this function will not actually run the command. 147 This defaults to the global test_mode value. 148 """ 149 150 # Get global XCAT variable values. 151 xcat_host = BuiltIn().get_variable_value("${XCAT_HOST}", default="") 152 xcat_username = BuiltIn().get_variable_value("${XCAT_USERNAME}", 153 default="") 154 xcat_password = BuiltIn().get_variable_value("${XCAT_PASSWORD}", 155 default="") 156 xcat_port = BuiltIn().get_variable_value("${XCAT_PORT}", 157 default="22") 158 159 if not gv.valid_value(xcat_host): 160 return "", "", 1 161 if not gv.valid_value(xcat_username): 162 return "", "", 1 163 if not gv.valid_value(xcat_password): 164 return "", "", 1 165 if not gv.valid_value(xcat_port): 166 return "", "", 1 167 168 open_connection_args = {'host': xcat_host, 'alias': 'xcat_connection', 169 'port': xcat_port} 170 login_args = {'username': xcat_username, 'password': xcat_password} 171 172 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args, 173 print_out, print_err, ignore_err, fork, 174 quiet, test_mode) 175 176 177def device_write(cmd_buf, 178 print_out=0, 179 quiet=None, 180 test_mode=None): 181 r""" 182 Write the given command in a device SSH session and return the stdout, stderr and the return code. 183 184 This function is useful for writing to a switch. 185 186 This function will obtain the global values for DEVICE_HOST, DEVICE_USERNAME, etc. 187 188 Description of arguments: 189 cmd_buf The command string to be run in an SSH session. 190 print_out If this is set, this function will print the stdout/stderr generated by 191 the shell command. 192 print_err If show_err is set, this function will print a standardized error report 193 if the shell command returns non-zero. 194 ignore_err Indicates that errors encountered on the sshlib.execute_command are to be 195 ignored. 196 fork Indicates that sshlib.start is to be used rather than 197 sshlib.execute_command. 198 quiet Indicates whether this function should run the pissuing() function prints 199 an "Issuing: <cmd string>" to stdout. This defaults to the global quiet 200 value. 201 test_mode If test_mode is set, this function will not actually run the command. 202 This defaults to the global test_mode value. 203 """ 204 205 # Get global DEVICE variable values. 206 device_host = BuiltIn().get_variable_value("${DEVICE_HOST}", default="") 207 device_username = BuiltIn().get_variable_value("${DEVICE_USERNAME}", 208 default="") 209 device_password = BuiltIn().get_variable_value("${DEVICE_PASSWORD}", 210 default="") 211 device_port = BuiltIn().get_variable_value("${DEVICE_PORT}", 212 default="22") 213 214 if not gv.valid_value(device_host): 215 return "", "", 1 216 if not gv.valid_value(device_username): 217 return "", "", 1 218 if not gv.valid_value(device_password): 219 return "", "", 1 220 if not gv.valid_value(device_port): 221 return "", "", 1 222 223 open_connection_args = {'host': device_host, 'alias': 'device_connection', 224 'port': device_port} 225 login_args = {'username': device_username, 'password': device_password} 226 227 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args, 228 print_out, print_err=0, ignore_err=1, 229 fork=0, quiet=quiet, test_mode=test_mode) 230