blob: c5fdc58380dc9528f9537a49760ed4edbfb4cd5e [file] [log] [blame]
Michael Walsh3cc126a2017-06-30 17:02:10 -05001#!/usr/bin/env python
2
3r"""
4This module provides many valuable bmc ssh functions such as
5bmc_execute_command.
6"""
7
8import sys
9import exceptions
10import re
11import gen_print as gp
12import gen_valid as gv
13import gen_robot_ssh as grs
14from robot.libraries.BuiltIn import BuiltIn
15
16
Michael Walsh3cc126a2017-06-30 17:02:10 -050017def bmc_execute_command(cmd_buf,
18 print_out=0,
19 print_err=0,
20 ignore_err=0,
21 fork=0,
22 quiet=None,
23 test_mode=None):
Michael Walsh3cc126a2017-06-30 17:02:10 -050024 r"""
25 Run the given command in an BMC SSH session and return the stdout, stderr
26 and the return code.
27
28 This function will obtain the global values for OPENBMC_HOST,
29 OPENBMC_USERNAME, etc.
30
31 Description of arguments:
32 cmd_buf The command string to be run in an SSH
33 session.
34 print_out If this is set, this function will print
35 the stdout/stderr generated by the shell
36 command.
37 print_err If show_err is set, this function will
38 print a standardized error report if the
39 shell command returns non-zero.
40 ignore_err Indicates that errors encountered on the
41 sshlib.execute_command are to be ignored.
42 fork Indicates that sshlib.start is to be used
43 rather than sshlib.execute_command.
44 quiet Indicates whether this function should run
45 the pissuing() function prints an
46 "Issuing: <cmd string>" to stdout. This
47 defaults to the global quiet value.
48 test_mode If test_mode is set, this function will
49 not actually run the command. This
50 defaults to the global test_mode value.
51 """
52
53 # Get global BMC variable values.
54 openbmc_host = BuiltIn().get_variable_value("${OPENBMC_HOST}", default="")
55 openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}",
56 default="")
57 openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}",
58 default="")
59
60 if not gv.valid_value(openbmc_host):
61 return "", "", 1
62 if not gv.valid_value(openbmc_username):
63 return "", "", 1
64 if not gv.valid_value(openbmc_password):
65 return "", "", 1
66
67 open_connection_args = {'host': openbmc_host, 'alias': 'bmc_connection',
68 'timeout': '25.0', 'prompt': '# '}
69 login_args = {'username': openbmc_username, 'password': openbmc_password}
70
71 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
72 print_out, print_err, ignore_err, fork,
73 quiet, test_mode)
74
Michael Walsh3cc126a2017-06-30 17:02:10 -050075
Michael Walsh3cc126a2017-06-30 17:02:10 -050076def os_execute_command(cmd_buf,
77 print_out=0,
78 print_err=0,
79 ignore_err=0,
80 fork=0,
81 quiet=None,
82 test_mode=None):
Michael Walsh3cc126a2017-06-30 17:02:10 -050083 r"""
84 Run the given command in an OS SSH session and return the stdout, stderr
85 and the return code.
86
87 This function will obtain the global values for OS_HOST, OS_USERNAME, etc.
88
89 Description of arguments:
90 cmd_buf The command string to be run in an SSH
91 session.
92 print_out If this is set, this function will print
93 the stdout/stderr generated by the shell
94 command.
95 print_err If show_err is set, this function will
96 print a standardized error report if the
97 shell command returns non-zero.
98 ignore_err Indicates that errors encountered on the
99 sshlib.execute_command are to be ignored.
100 fork Indicates that sshlib.start is to be used
101 rather than sshlib.execute_command.
102 quiet Indicates whether this function should run
103 the pissuing() function prints an
104 "Issuing: <cmd string>" to stdout. This
105 defaults to the global quiet value.
106 test_mode If test_mode is set, this function will
107 not actually run the command. This
108 defaults to the global test_mode value.
109 """
110
111 # Get global OS variable values.
112 os_host = BuiltIn().get_variable_value("${OS_HOST}", default="")
113 os_username = BuiltIn().get_variable_value("${OS_USERNAME}",
114 default="")
115 os_password = BuiltIn().get_variable_value("${OS_PASSWORD}",
116 default="")
117
118 if not gv.valid_value(os_host):
119 return "", "", 1
120 if not gv.valid_value(os_username):
121 return "", "", 1
122 if not gv.valid_value(os_password):
123 return "", "", 1
124
125 open_connection_args = {'host': os_host, 'alias': 'os_connection'}
126 login_args = {'username': os_username, 'password': os_password}
127
128 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
129 print_out, print_err, ignore_err, fork,
130 quiet, test_mode)
131
Michael Walsh78fa29a2017-07-31 15:35:02 -0500132
Michael Walsh78fa29a2017-07-31 15:35:02 -0500133def xcat_execute_command(cmd_buf,
134 print_out=0,
135 print_err=0,
136 ignore_err=0,
137 fork=0,
138 quiet=None,
139 test_mode=None):
Michael Walsh78fa29a2017-07-31 15:35:02 -0500140 r"""
141 Run the given command in an XCAT SSH session and return the stdout, stderr
142 and the return code.
143
144 This function will obtain the global values for XCAT_HOST, XCAT_USERNAME,
145 etc.
146
147 Description of arguments:
148 cmd_buf The command string to be run in an SSH
149 session.
150 print_out If this is set, this function will print
151 the stdout/stderr generated by the shell
152 command.
153 print_err If show_err is set, this function will
154 print a standardized error report if the
155 shell command returns non-zero.
156 ignore_err Indicates that errors encountered on the
157 sshlib.execute_command are to be ignored.
158 fork Indicates that sshlib.start is to be used
159 rather than sshlib.execute_command.
160 quiet Indicates whether this function should run
161 the pissuing() function prints an
162 "Issuing: <cmd string>" to stdout. This
163 defaults to the global quiet value.
164 test_mode If test_mode is set, this function will
165 not actually run the command. This
166 defaults to the global test_mode value.
167 """
168
169 # Get global XCAT variable values.
170 xcat_host = BuiltIn().get_variable_value("${XCAT_HOST}", default="")
171 xcat_username = BuiltIn().get_variable_value("${XCAT_USERNAME}",
172 default="")
173 xcat_password = BuiltIn().get_variable_value("${XCAT_PASSWORD}",
174 default="")
175 xcat_port = BuiltIn().get_variable_value("${XCAT_PORT}",
176 default="22")
177
178 if not gv.valid_value(xcat_host):
179 return "", "", 1
180 if not gv.valid_value(xcat_username):
181 return "", "", 1
182 if not gv.valid_value(xcat_password):
183 return "", "", 1
184 if not gv.valid_value(xcat_port):
185 return "", "", 1
186
187 open_connection_args = {'host': xcat_host, 'alias': 'xcat_connection',
188 'port': xcat_port}
189 login_args = {'username': xcat_username, 'password': xcat_password}
190
191 return grs.execute_ssh_command(cmd_buf, open_connection_args, login_args,
192 print_out, print_err, ignore_err, fork,
193 quiet, test_mode)