Add ability to associate drone sets with jobs. This restricts a job to
running on a specified set of drones.
Signed-off-by: James Ren <jamesren@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@4439 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/rpc_interface.py b/frontend/afe/rpc_interface.py
index ab2596a..fc60a75 100644
--- a/frontend/afe/rpc_interface.py
+++ b/frontend/afe/rpc_interface.py
@@ -403,7 +403,7 @@
timeout=None, max_runtime_hrs=None, run_verify=True,
email_list='', dependencies=(), reboot_before=None,
reboot_after=None, parse_failed_repair=None, hostless=False,
- keyvals=None):
+ keyvals=None, drone_set=None):
"""\
Create and enqueue a job.
@@ -432,6 +432,7 @@
one host will be chosen from that label to run the job on.
@param one_time_hosts List of hosts not in the database to run the job on.
@param atomic_group_name The name of an atomic group to schedule the job on.
+ @param drone_set The name of the drone set to run this test on.
@returns The created Job id number.
@@ -529,7 +530,8 @@
reboot_before=reboot_before,
reboot_after=reboot_after,
parse_failed_repair=parse_failed_repair,
- keyvals=keyvals)
+ keyvals=keyvals,
+ drone_set=drone_set)
return rpc_utils.create_new_job(owner=owner,
options=options,
host_objects=host_objects,
@@ -656,6 +658,7 @@
else:
info['atomic_group_name'] = None
info['hostless'] = job_info['hostless']
+ info['drone_set'] = job.drone_set and job.drone_set.name
return rpc_utils.prepare_for_serialization(info)
@@ -802,6 +805,11 @@
"""
job_fields = models.Job.get_field_dict()
+ default_drone_set_name = models.DroneSet.default_drone_set_name()
+ drone_sets = ([default_drone_set_name] +
+ sorted(drone_set.name for drone_set in
+ models.DroneSet.objects.exclude(
+ name=default_drone_set_name)))
result = {}
result['priorities'] = models.Job.Priority.choices()
@@ -824,6 +832,8 @@
result['reboot_before_options'] = model_attributes.RebootBefore.names
result['reboot_after_options'] = model_attributes.RebootAfter.names
result['motd'] = rpc_utils.get_motd()
+ result['drone_sets_enabled'] = models.DroneSet.drone_sets_enabled()
+ result['drone_sets'] = drone_sets
result['status_dictionary'] = {"Aborted": "Aborted",
"Verifying": "Verifying Host",