Rollback: check for can_rollback before performing rollback.
This CL also removes the list_dir_contents calls as rollback
doesn't actually stage anything itself nor require something
on the devserver (it's call client-side).
BUG=chromium:356898
TEST=Tryjob + rollback test.
Change-Id: I1ac19dd40fecbc31b9d3c5ff001332b116856f68
Reviewed-on: https://chromium-review.googlesource.com/195449
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Prashanth B <beeps@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Chris Sosa <sosa@chromium.org>
diff --git a/client/common_lib/cros/autoupdater.py b/client/common_lib/cros/autoupdater.py
index abd523a..f0acc90 100644
--- a/client/common_lib/cros/autoupdater.py
+++ b/client/common_lib/cros/autoupdater.py
@@ -319,18 +319,22 @@
@raise RootFSUpdateError if anything went wrong.
"""
- #TODO(sosa): crbug.com/309051 - Make this one update_engine_client call.
- rollback_cmd = '%s --rollback' % (UPDATER_BIN)
- wait_for_update_to_complete_cmd = '%s --update' % (UPDATER_BIN)
+ can_rollback_cmd = '%s --can_rollback' % (UPDATER_BIN)
+ logging.info('Checking for rollback.')
+ try:
+ self._run(can_rollback_cmd)
+ except error.AutoservRunError as e:
+ raise RootFSUpdateError("Rollback isn't possible on %s: %s" %
+ (self.host.hostname, str(e)))
+
+ rollback_cmd = '%s --rollback --follow' % (UPDATER_BIN)
if not powerwash:
rollback_cmd += ' --nopowerwash'
- logging.info('Triggering rollback.')
+ logging.info('Performing rollback.')
try:
self._run(rollback_cmd)
- self._run(wait_for_update_to_complete_cmd)
except error.AutoservRunError as e:
- list_image_dir_contents(self.update_url)
raise RootFSUpdateError('Rollback failed on %s: %s' %
(self.host.hostname, str(e)))