blob: 94ccf3df0a536de131da5b66579926b6a6dc538c [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###############################################################################