Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: server/hosts/serial.py

Issue 3554003: Merge remote branch 'cros/upstream' into tempbranch3 (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « server/hosts/remote.py ('k') | server/server_job.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 import os, sys, subprocess, logging 1 import os, sys, subprocess, logging
2 2
3 from autotest_lib.client.common_lib import utils, error 3 from autotest_lib.client.common_lib import utils, error
4 from autotest_lib.server import utils as server_utils 4 from autotest_lib.server import utils as server_utils
5 from autotest_lib.server.hosts import remote 5 from autotest_lib.server.hosts import remote
6 6
7 7
8 SiteHost = utils.import_site_class( 8 SiteHost = utils.import_site_class(
9 __file__, "autotest_lib.server.hosts.site_host", "SiteHost", 9 __file__, "autotest_lib.server.hosts.site_host", "SiteHost",
10 remote.RemoteHost) 10 remote.RemoteHost)
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 if not self.conmux_attach or not os.path.exists(self.conmux_attach): 107 if not self.conmux_attach or not os.path.exists(self.conmux_attach):
108 return False 108 return False
109 cmd = '%s %s echo %s 2> /dev/null' % (self.conmux_attach, 109 cmd = '%s %s echo %s 2> /dev/null' % (self.conmux_attach,
110 self.get_conmux_hostname(), 110 self.get_conmux_hostname(),
111 cmd) 111 cmd)
112 result = utils.system(cmd, ignore_status=True) 112 result = utils.system(cmd, ignore_status=True)
113 return result == 0 113 return result == 0
114 114
115 115
116 def hardreset(self, timeout=DEFAULT_REBOOT_TIMEOUT, wait=True, 116 def hardreset(self, timeout=DEFAULT_REBOOT_TIMEOUT, wait=True,
117 conmux_command='hardreset', num_attempts=1, 117 conmux_command='hardreset', num_attempts=1, halt=False,
118 **wait_for_restart_kwargs): 118 **wait_for_restart_kwargs):
119 """ 119 """
120 Reach out and slap the box in the power switch. 120 Reach out and slap the box in the power switch.
121 @params conmux_command: The command to run via the conmux interface 121 @params conmux_command: The command to run via the conmux interface
122 @params timeout: timelimit in seconds before the machine is 122 @params timeout: timelimit in seconds before the machine is
123 considered unreachable 123 considered unreachable
124 @params wait: Whether or not to wait for the machine to reboot 124 @params wait: Whether or not to wait for the machine to reboot
125 @params num_attempts: Number of times to attempt hard reset erroring 125 @params num_attempts: Number of times to attempt hard reset erroring
126 on the last attempt. 126 on the last attempt.
127 @params halt: Halts the machine before hardresetting.
127 @params **wait_for_restart_kwargs: keyword arguments passed to 128 @params **wait_for_restart_kwargs: keyword arguments passed to
128 wait_for_restart() 129 wait_for_restart()
129 """ 130 """
130 conmux_command = "'~$%s'" % conmux_command 131 conmux_command = "'~$%s'" % conmux_command
131 132
132 # if the machine is up, grab the old boot id, otherwise use a dummy 133 # if the machine is up, grab the old boot id, otherwise use a dummy
133 # string and NOT None to ensure that wait_down always returns True, 134 # string and NOT None to ensure that wait_down always returns True,
134 # even if the machine comes back up before it's called 135 # even if the machine comes back up before it's called
135 try: 136 try:
136 old_boot_id = self.get_boot_id() 137 old_boot_id = self.get_boot_id()
137 except error.AutoservSSHTimeout: 138 except error.AutoservSSHTimeout:
138 old_boot_id = 'unknown boot_id prior to SerialHost.hardreset' 139 old_boot_id = 'unknown boot_id prior to SerialHost.hardreset'
139 140
140 def reboot(): 141 def reboot():
142 if halt:
143 self.halt()
141 if not self.run_conmux(conmux_command): 144 if not self.run_conmux(conmux_command):
142 self.record("ABORT", None, "reboot.start", 145 self.record("ABORT", None, "reboot.start",
143 "hard reset unavailable") 146 "hard reset unavailable")
144 raise error.AutoservUnsupportedError( 147 raise error.AutoservUnsupportedError(
145 'Hard reset unavailable') 148 'Hard reset unavailable')
146 self.record("GOOD", None, "reboot.start", "hard reset") 149 self.record("GOOD", None, "reboot.start", "hard reset")
147 if wait: 150 if wait:
148 warning_msg = ('Serial console failed to respond to hard reset ' 151 warning_msg = ('Serial console failed to respond to hard reset '
149 'attempt (%s/%s)') 152 'attempt (%s/%s)')
150 for attempt in xrange(num_attempts-1): 153 for attempt in xrange(num_attempts-1):
(...skipping 20 matching lines...) Expand all
171 if self.job: 174 if self.job:
172 self.job.disable_warnings("POWER_FAILURE") 175 self.job.disable_warnings("POWER_FAILURE")
173 try: 176 try:
174 if wait: 177 if wait:
175 self.log_reboot(reboot) 178 self.log_reboot(reboot)
176 else: 179 else:
177 reboot() 180 reboot()
178 finally: 181 finally:
179 if self.job: 182 if self.job:
180 self.job.enable_warnings("POWER_FAILURE") 183 self.job.enable_warnings("POWER_FAILURE")
OLDNEW
« no previous file with comments | « server/hosts/remote.py ('k') | server/server_job.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698