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

Side by Side Diff: client/common_lib/chromiumos_updater.py

Issue 3382017: AU: moved updated marker from /tmp to /var/run. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git
Patch Set: Created 10 years, 3 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import httplib 5 import httplib
6 import logging 6 import logging
7 import re 7 import re
8 import socket 8 import socket
9 import urlparse 9 import urlparse
10 10
11 from autotest_lib.client.bin import chromeos_constants 11 from autotest_lib.client.bin import chromeos_constants
12 from autotest_lib.client.common_lib import error 12 from autotest_lib.client.common_lib import error
13 13
14 STATEFULDEV_UPDATER = '/usr/local/bin/stateful_update' 14 STATEFULDEV_UPDATER = '/usr/local/bin/stateful_update'
15 UPDATER_BIN = '/usr/bin/update_engine_client' 15 UPDATER_BIN = '/usr/bin/update_engine_client'
16 UPDATER_IDLE = 'UPDATE_STATUS_IDLE' 16 UPDATER_IDLE = 'UPDATE_STATUS_IDLE'
17 UPDATER_NEED_REBOOT = 'UPDATE_STATUS_UPDATED_NEED_REBOOT' 17 UPDATER_NEED_REBOOT = 'UPDATE_STATUS_UPDATED_NEED_REBOOT'
18 UPDATED_MARKER = '/var/run/update_engine_autoupdate_completed'
18 19
19 20
20 class ChromiumOSError(error.InstallError): 21 class ChromiumOSError(error.InstallError):
21 """Generic error for ChromiumOS-specific exceptions.""" 22 """Generic error for ChromiumOS-specific exceptions."""
22 pass 23 pass
23 24
24 25
25 def url_to_version(update_url): 26 def url_to_version(update_url):
26 # The ChromiumOS updater respects the last element in the path as 27 # The ChromiumOS updater respects the last element in the path as
27 # the requested version. Parse it out. 28 # the requested version. Parse it out.
28 return urlparse.urlparse(update_url).path.split('/')[-1] 29 return urlparse.urlparse(update_url).path.split('/')[-1]
29 30
30 31
31 class ChromiumOSUpdater(): 32 class ChromiumOSUpdater():
32 def __init__(self, host=None, update_url=None): 33 def __init__(self, host=None, update_url=None):
33 self.host = host 34 self.host = host
34 self.update_url = update_url 35 self.update_url = update_url
35 self.update_version = url_to_version(update_url) 36 self.update_version = url_to_version(update_url)
36 37
37 38
38 def check_update_status(self): 39 def check_update_status(self):
39 update_status_cmd = ' '.join([UPDATER_BIN, '-status', '2>&1', 40 update_status_cmd = ' '.join([UPDATER_BIN, '-status', '2>&1',
40 '| grep CURRENT_OP']) 41 '| grep CURRENT_OP'])
41 update_status = self._run(update_status_cmd) 42 update_status = self._run(update_status_cmd)
42 return update_status.stdout.strip().split('=')[-1] 43 return update_status.stdout.strip().split('=')[-1]
43 44
44 45
45 def reset_update_engine(self): 46 def reset_update_engine(self):
46 logging.info('Resetting update-engine.') 47 logging.info('Resetting update-engine.')
47 self._run('rm -f /tmp/update_engine_autoupdate_completed') 48 self._run('rm -f %s' % UPDATED_MARKER)
48 try: 49 try:
49 self._run('initctl stop update-engine') 50 self._run('initctl stop update-engine')
50 except error.AutoservRunError, e: 51 except error.AutoservRunError, e:
51 logging.warn('Stopping update-engine service failed. Already dead?') 52 logging.warn('Stopping update-engine service failed. Already dead?')
52 self._run('initctl start update-engine') 53 self._run('initctl start update-engine')
53 # May need to wait if service becomes slow to restart. 54 # May need to wait if service becomes slow to restart.
54 if self.check_update_status() != UPDATER_IDLE: 55 if self.check_update_status() != UPDATER_IDLE:
55 raise ChromiumOSError('%s is not in an installable state' % 56 raise ChromiumOSError('%s is not in an installable state' %
56 self.host.hostname) 57 self.host.hostname)
57 58
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 if not version_match: 156 if not version_match:
156 raise ChromiumOSError('Unable to get build ID from %s. Found "%s"', 157 raise ChromiumOSError('Unable to get build ID from %s. Found "%s"',
157 self.host.hostname, version) 158 self.host.hostname, version)
158 version, build_id, builder = version_match.groups() 159 version, build_id, builder = version_match.groups()
159 build_match = re.match(r'.*: (\d+)', builder) 160 build_match = re.match(r'.*: (\d+)', builder)
160 if build_match: 161 if build_match:
161 builder_num = '-b%s' % build_match.group(1) 162 builder_num = '-b%s' % build_match.group(1)
162 else: 163 else:
163 builder_num = '' 164 builder_num = ''
164 return '%s-r%s%s' % (version, build_id, builder_num) 165 return '%s-r%s%s' % (version, build_id, builder_num)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698