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

Unified Diff: autoupdate.py

Issue 3533003: Fix devserver with handling custom labels. (Closed) Base URL: http://git.chromium.org/git/dev-util.git
Patch Set: petkov 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | devserver.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: autoupdate.py
diff --git a/autoupdate.py b/autoupdate.py
index ddd0178d07f3ee3259b2b799660ad5d7aa99cc5d..917e268d37848a9fce05c955eedb4375b7a5d7e4 100644
--- a/autoupdate.py
+++ b/autoupdate.py
@@ -27,14 +27,21 @@ class Autoupdate(BuildObject):
def __init__(self, serve_only=None, test_image=False, urlbase=None,
factory_config_path=None, client_prefix=None, forced_image=None,
- *args, **kwargs):
+ use_cached=False, *args, **kwargs):
super(Autoupdate, self).__init__(*args, **kwargs)
self.serve_only = serve_only
self.factory_config = factory_config_path
self.use_test_image = test_image
- self.static_urlbase = urlbase
+ if urlbase:
+ self.static_urlbase = urlbase
+ elif self.serve_only:
+ self.static_urlbase = 'http://%(host)s/static/archive'
+ else:
+ self.static_urlbase = 'http://%(host)s/static'
+
self.client_prefix = client_prefix
self.forced_image = forced_image
+ self.use_cached = use_cached
def _GetSecondsSinceMidnight(self):
"""Returns the seconds since midnight as a decimal value."""
@@ -109,7 +116,7 @@ class Autoupdate(BuildObject):
def _IsImageNewerThanCached(self, image_path, cached_file_path):
"""Returns true if the image is newer than the cached image."""
if os.path.exists(cached_file_path) and os.path.exists(image_path):
- web.debug('Usable cached image found.')
+ web.debug('Usable cached image found at %s.' % cached_file_path)
return os.path.getmtime(image_path) > os.path.getmtime(cached_file_path)
elif not os.path.exists(cached_file_path) and not os.path.exists(image_path):
raise Exception('Image does not exist and cached image missing')
@@ -119,7 +126,7 @@ class Autoupdate(BuildObject):
web.debug('No cached image found - image generation required.')
return True
else:
- web.debug('Only cached image found to serve.')
+ web.debug('Cached image found to serve at %s.' % cached_file_path)
return False
def _GetSize(self, update_path):
@@ -440,6 +447,10 @@ class Autoupdate(BuildObject):
update_dom = minidom.parseString(data)
root = update_dom.firstChild
+ # Parse host if not done yet.
+ if '%(host)' in self.static_urlbase:
+ self.static_urlbase = self.static_urlbase % {'host' : web.ctx.host}
+
# Check the client prefix to make sure you can support this type of update.
if (root.hasAttribute('updaterversion') and
not root.getAttribute('updaterversion').startswith(self.client_prefix)):
@@ -472,31 +483,36 @@ class Autoupdate(BuildObject):
if label:
static_image_dir = os.path.join(static_image_dir, label)
- # Not for factory, find and serve the correct image given the options.
- if self.forced_image:
- has_built_image = self.GenerateUpdateImage(
- self.forced_image, move_to_static_dir=True,
- static_image_dir=static_image_dir)
- # Now that we've generated it, clear out so that other pings of same
- # devserver instance do not generate new images.
- self.forced_image = None
- elif self.serve_only:
- has_built_image = self.GenerateImageFromZip(static_image_dir)
+ # Prefer cached image if it exists.
+ if self.use_cached and os.path.exists(os.path.join(static_image_dir,
+ 'update.gz')):
+ web.debug('Using cached image regardless of timestamps.')
+ has_built_image = True
else:
- has_built_image = self.GenerateLatestUpdateImage(board_id,
- client_version,
- static_image_dir)
+ if self.forced_image:
+ has_built_image = self.GenerateUpdateImage(
+ self.forced_image, move_to_static_dir=True,
+ static_image_dir=static_image_dir)
+ # Now that we've generated it, clear out so that other pings of same
+ # devserver instance do not generate new images.
+ self.forced_image = None
+ elif self.serve_only:
+ has_built_image = self.GenerateImageFromZip(static_image_dir)
+ else:
+ has_built_image = self.GenerateLatestUpdateImage(board_id,
+ client_version,
+ static_image_dir)
if has_built_image:
hash = self._GetHash(os.path.join(static_image_dir, 'update.gz'))
sha256 = self._GetSHA256(os.path.join(static_image_dir, 'update.gz'))
size = self._GetSize(os.path.join(static_image_dir, 'update.gz'))
- if self.static_urlbase and label:
+ if label:
url = '%s/%s/update.gz' % (self.static_urlbase, label)
- elif self.serve_only:
- url = 'http://%s/static/archive/update.gz' % hostname
else:
- url = 'http://%s/static/update.gz' % hostname
+ url = '%s/update.gz' % self.static_urlbase
+
+ web.debug('Responding to client to use url %s to get image.' % url)
return self.GetUpdatePayload(hash, sha256, size, url)
else:
return self.GetNoUpdatePayload()
« no previous file with comments | « no previous file | devserver.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698