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

Side by Side Diff: client/common_lib/cros/autoupdater.py

Issue 6021006: Add stateful partition reset to upgrade process. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: Bootstrap stateful_update. Created 9 years, 9 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.common_lib import error 11 from autotest_lib.client.common_lib import error
12 from autotest_lib.client.cros import constants as chromeos_constants 12 from autotest_lib.client.cros import constants as chromeos_constants
13 13
14 STATEFULDEV_UPDATER = '/usr/local/bin/stateful_update' 14 # TODO(dalecurtis): HACK to bootstrap stateful updater until crosbug.com/8960 is
15 # fixed.
16 LOCAL_STATEFULDEV_UPDATER = ('/home/chromeos-test/chromeos-src/chromeos/src'
17 '/platform/dev/stateful_update')
18 STATEFULDEV_UPDATER = '/tmp/stateful_update'
15 UPDATER_BIN = '/usr/bin/update_engine_client' 19 UPDATER_BIN = '/usr/bin/update_engine_client'
16 UPDATER_IDLE = 'UPDATE_STATUS_IDLE' 20 UPDATER_IDLE = 'UPDATE_STATUS_IDLE'
17 UPDATER_NEED_REBOOT = 'UPDATE_STATUS_UPDATED_NEED_REBOOT' 21 UPDATER_NEED_REBOOT = 'UPDATE_STATUS_UPDATED_NEED_REBOOT'
18 UPDATED_MARKER = '/var/run/update_engine_autoupdate_completed' 22 UPDATED_MARKER = '/var/run/update_engine_autoupdate_completed'
19 23
20 24
21 class ChromiumOSError(error.InstallError): 25 class ChromiumOSError(error.InstallError):
22 """Generic error for ChromiumOS-specific exceptions.""" 26 """Generic error for ChromiumOS-specific exceptions."""
23 pass 27 pass
24 28
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 if status != UPDATER_NEED_REBOOT: 114 if status != UPDATER_NEED_REBOOT:
111 raise ChromiumOSError('update-engine error on %s: ' 115 raise ChromiumOSError('update-engine error on %s: '
112 '"%s" from update-engine' % 116 '"%s" from update-engine' %
113 (self.host.hostname, status)) 117 (self.host.hostname, status))
114 118
115 # Attempt dev & test tools update (which don't live on the 119 # Attempt dev & test tools update (which don't live on the
116 # rootfs). This must succeed so that the newly installed host 120 # rootfs). This must succeed so that the newly installed host
117 # is testable after we run the autoupdater. 121 # is testable after we run the autoupdater.
118 statefuldev_url = self.update_url.replace('update', 'static/archive') 122 statefuldev_url = self.update_url.replace('update', 'static/archive')
119 123
120 statefuldev_cmd = ' '.join([STATEFULDEV_UPDATER, statefuldev_url, 124 # TODO(dalecurtis): HACK to bootstrap stateful updater until
121 '2>&1']) 125 # crosbug.com/8960 is fixed.
126 self.host.send_file(LOCAL_STATEFULDEV_UPDATER, STATEFULDEV_UPDATER,
127 delete_dest=True)
128 statefuldev_cmd = [STATEFULDEV_UPDATER, statefuldev_url]
129
130 # TODO(dalecurtis): HACK necessary until R10 builds are out of testing.
131 if int(self.update_version.split('.')[1]) > 10:
132 statefuldev_cmd.append('--stateful_change=clean')
133
134 statefuldev_cmd.append('2>&1')
135 statefuldev_cmd = ' '.join(statefuldev_cmd)
136
122 logging.info(statefuldev_cmd) 137 logging.info(statefuldev_cmd)
123 try: 138 try:
124 self._run(statefuldev_cmd, timeout=600) 139 self._run(statefuldev_cmd, timeout=600)
125 except error.AutoservRunError, e: 140 except error.AutoservRunError, e:
126 # TODO(seano): If statefuldev update failed, we must mark 141 # TODO(seano): If statefuldev update failed, we must mark
127 # the update as failed, and keep the same rootfs after 142 # the update as failed, and keep the same rootfs after
128 # reboot. 143 # reboot.
129 self.revert_boot_partition() 144 self.revert_boot_partition()
130 raise ChromiumOSError('stateful_update failed on %s.' % 145 raise ChromiumOSError('stateful_update failed on %s.' %
131 self.host.hostname) 146 self.host.hostname)
(...skipping 29 matching lines...) Expand all
161 builder_num = '-b%s' % build_match.group(1) 176 builder_num = '-b%s' % build_match.group(1)
162 else: 177 else:
163 builder_num = '' 178 builder_num = ''
164 return '%s-r%s%s' % (version, build_id, builder_num) 179 return '%s-r%s%s' % (version, build_id, builder_num)
165 180
166 181
167 def get_dev_build_id(self): 182 def get_dev_build_id(self):
168 """Pulls the CHROMEOS_RELEASE_VERSION string from /etc/lsb-release.""" 183 """Pulls the CHROMEOS_RELEASE_VERSION string from /etc/lsb-release."""
169 return self._run('grep CHROMEOS_RELEASE_VERSION' 184 return self._run('grep CHROMEOS_RELEASE_VERSION'
170 ' /etc/lsb-release').stdout.split('=')[1].strip() 185 ' /etc/lsb-release').stdout.split('=')[1].strip()
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