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