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