Add a "pool" option to Suite and Reimager

A pool is a set of machines with a specific label. The concept of pools is
needed to be able to ensure scheduling priority and to segrate our machine
population.

If no pool is set the previous behavior is followed. Jobs will be scheduled
against chromeos versions and reimager jobs will be scheduled against "board"

Modify VERSION_PREFIX to use a : instead of -.

Uodate run_suite to offer the optional --pool flag.
Update create_suite RPC interface to accept the pool option.
Update create_suite to assume all "suite names" are under
	test_suites/control.<suite name>
TEST=Unittest and development server end to end runs.
BUG=chromium-os:26491

Change-Id: I3677c956bee195e20ad63b4e034fa7c6611b1ce1
Reviewed-on: https://gerrit.chromium.org/gerrit/16130
Reviewed-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Tested-by: Scott Zawalski <scottz@chromium.org>
Commit-Ready: Frank Farzan <frankf@chromium.org>
diff --git a/frontend/afe/site_rpc_interface.py b/frontend/afe/site_rpc_interface.py
index 6793645..e817217 100644
--- a/frontend/afe/site_rpc_interface.py
+++ b/frontend/afe/site_rpc_interface.py
@@ -31,16 +31,18 @@
     return rpc_utils
 
 
-def create_suite_job(suite_name, board, build):
+def create_suite_job(suite_name, board, build, pool):
     """
     Create a job to run a test suite on the given device with the given image.
 
     When the timeout specified in the control file is reached, the
     job is guaranteed to have completed and results will be available.
 
-    @param suite_name: the test suite to run, e.g. 'control.bvt'.
+    @param suite_name: the test suite to run, e.g. 'bvt'.
     @param board: the kind of device to run the tests on.
     @param build: unique name by which to refer to the image from now on.
+    @param pool: Specify the pool of machines to use for scheduling
+            purposes.
 
     @throws ControlFileNotFound if a unique suite control file doesn't exist.
     @throws NoControlFileList if we can't list the control files at all.
@@ -50,6 +52,8 @@
 
     @return: the job ID of the suite; -1 on error.
     """
+    # All suite names are assumed under test_suites/control.XX.
+    suite_name = 'test_suites/control.%s' % suite_name
     # Ensure |build| is staged is on the dev server.
     ds = dev_server.DevServer.create()
     if not ds.trigger_download(build):
@@ -62,8 +66,10 @@
         raise ControlFileEmpty("Fetching %s returned no data." % suite_name)
 
     # prepend build and board to the control file
-    control_file = dynamic_suite.inject_vars({'board': board, 'build': build},
-                                             control_file_in)
+    inject_dict = {'board': board,
+                   'build': build,
+                   'pool': pool}
+    control_file = dynamic_suite.inject_vars(inject_dict, control_file_in)
 
     return _rpc_utils().create_job_common('%s-%s' % (build, suite_name),
                                           priority='Medium',