(2 of 2) Refactor and move Autotest downloader to the Dev Server.
Added two new Dev Server handlers:
1. Given GS url, download and install the build image.
2. Return the control file for a particular build.
BUG=chromium-os:22954
TEST=update_engine_client --update and gmerge.
Change-Id: Id383ca3aa3314d61a690b5278f190d492f98cd32
Reviewed-on: https://gerrit.chromium.org/gerrit/12803
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Frank Farzan <frankf@chromium.org>
Tested-by: Frank Farzan <frankf@chromium.org>
diff --git a/devserver.py b/devserver.py
index f87d0dd..2abd0a6 100755
--- a/devserver.py
+++ b/devserver.py
@@ -14,12 +14,14 @@
import autoupdate
+
CACHED_ENTRIES = 12
# Sets up global to share between classes.
global updater
updater = None
+
def _GetConfig(options):
"""Returns the configuration for the devserver."""
base_config = { 'global':
@@ -41,6 +43,16 @@
{
'response.timeout': 100000,
},
+ '/download':
+ {
+ # Gets rid of cherrypy parsing post file for args.
+ 'request.process_request_body': False,
+ },
+ '/controlfile':
+ {
+ # Gets rid of cherrypy parsing post file for args.
+ 'request.process_request_body': False,
+ },
'/update':
{
# Gets rid of cherrypy parsing post file for args.
@@ -137,6 +149,7 @@
def __init__(self):
self._builder = None
+ self._downloader = None
@cherrypy.expose
def build(self, board, pkg, **kwargs):
@@ -147,6 +160,23 @@
return self._builder.Build(board, pkg, kwargs)
@cherrypy.expose
+ def download(self, *args):
+ """Downloads and archives full/delta payloads from Google Storage."""
+ import downloader
+ archive_url = '/'.join(args)
+ if self._downloader is None:
+ self._downloader = downloader.Downloader(updater.static_dir)
+ return self._downloader.Download(archive_url)
+
+ @cherrypy.expose
+ def controlfile(self, board, build, *args):
+ """Return the content of the control file."""
+ import devserver_util
+ control_path = os.path.sep.join(args)
+ return devserver_util.GetControlFile(updater.static_dir, board, build,
+ control_path)
+
+ @cherrypy.expose
def index(self):
return 'Welcome to the Dev Server!'