Use dev_server to determine the url of the devserver.

The dynamic_suite code assumed the devserver variable in the autotest
config was a string that represented the url for the devserver.
This is no longer a correct assumption as it can be a list of devservers.
This change modifies the dynamic_suite logic to use a DevServer instance
to tell it the URL it should use for the devserver.

BUG=chromium-os:26451
TEST=Unittests

Change-Id: I0bc63029630d9e884a23b16ccdf75da1756e6518
Reviewed-on: https://gerrit.chromium.org/gerrit/28447
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
Commit-Ready: Chris Sosa <sosa@chromium.org>
diff --git a/server/cros/dynamic_suite.py b/server/cros/dynamic_suite.py
index fa4a7fa..86e935d 100644
--- a/server/cros/dynamic_suite.py
+++ b/server/cros/dynamic_suite.py
@@ -277,7 +277,6 @@
                                         debug=False)
     manager = host_lock_manager.HostLockManager(afe=afe)
     reimager = Reimager(job.autodir, afe, tko, results_dir=job.resultdir)
-
     try:
         if skip_reimage or reimager.attempt(build, board, pool,
                                             job.record_entry, check_hosts,
@@ -368,6 +367,12 @@
     return CONFIG.get_config_value('CROS', 'package_url_pattern', type=str)
 
 
+def get_package_url(build):
+    """Returns the package url for the given build."""
+    devserver_url = dev_server.DevServer.devserver_url_for_build(build)
+    return _package_url_pattern() % (devserver_url, build)
+
+
 def skip_reimage(g):
     return g.get('SKIP_IMAGE')
 
@@ -493,7 +498,7 @@
         return job_status.gather_per_host_results(self._afe,
                                                   self._tko,
                                                   [canary_job],
-                                                  REIMAGE_JOB_NAME+'-')
+                                                  REIMAGE_JOB_NAME + '-')
 
 
     def _ensure_enough_hosts(self, board, pool, num):
@@ -601,8 +606,10 @@
         @param num_machines: how many devices to reimage.
         @return a frontend.Job object for the reimaging job we scheduled.
         """
+        image_url = _image_url_pattern() % (
+            dev_server.DevServer.devserver_url_for_build(build), build)
         control_file = inject_vars(
-            {'image_url': _image_url_pattern() % build, 'image_name': build},
+            dict(image_url=image_url, image_name=build),
             self._cf_getter.get_control_file_contents_by_name('autoupdate'))
         job_deps = []
         if pool: