When we get a new job from afe, we might also get a list of profiles to
go with the hosts, and need to pass this down into the HostQueueEntry
logic eventually.

Signed-off-by: Nishanth Aravamudan <[email protected]>

---
 frontend/afe/models.py        |   14 +++++++-------
 frontend/afe/rpc_interface.py |    3 ++-
 frontend/afe/rpc_utils.py     |    7 ++++---
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index 96c56e9..1d16140 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -414,9 +414,9 @@ class Host(model_logic.ModelWithInvalid, dbmodels.Model,
         logging.info(self.hostname + ' -> ' + self.status)
 
 
-    def enqueue_job(self, job, atomic_group=None, is_template=False):
+    def enqueue_job(self, job, profile, atomic_group=None, is_template=False):
         """Enqueue a job on this host."""
-        queue_entry = HostQueueEntry.create(host=self, job=job,
+        queue_entry = HostQueueEntry.create(host=self, job=job, 
profile=profile,
                                             is_template=is_template,
                                             atomic_group=atomic_group)
         # allow recovery of dead hosts from the frontend
@@ -1040,7 +1040,7 @@ class Job(dbmodels.Model, model_logic.ModelExtensions):
         super(Job, self).save(*args, **kwargs)
 
 
-    def queue(self, hosts, atomic_group=None, is_template=False):
+    def queue(self, hosts, profiles, atomic_group=None, is_template=False):
         """Enqueue a job on the given hosts."""
         if not hosts:
             if atomic_group:
@@ -1053,8 +1053,8 @@ class Job(dbmodels.Model, model_logic.ModelExtensions):
                 entry.save()
             return
 
-        for host in hosts:
-            host.enqueue_job(self, atomic_group=atomic_group,
+        for host,profile in zip(hosts,profiles):
+            host.enqueue_job(self, profile=profile, atomic_group=atomic_group,
                              is_template=is_template)
 
 
@@ -1148,14 +1148,14 @@ class HostQueueEntry(dbmodels.Model, 
model_logic.ModelExtensions):
 
 
     @classmethod
-    def create(cls, job, host=None, meta_host=None, atomic_group=None,
+    def create(cls, job, host=None, profile=None, meta_host=None, 
atomic_group=None,
                  is_template=False):
         if is_template:
             status = cls.Status.TEMPLATE
         else:
             status = cls.Status.QUEUED
 
-        return cls(job=job, host=host, meta_host=meta_host,
+        return cls(job=job, host=host, profile=profile, meta_host=meta_host,
                    atomic_group=atomic_group, status=status)
 
 
diff --git a/frontend/afe/rpc_interface.py b/frontend/afe/rpc_interface.py
index 3a302dc..bd08715 100644
--- a/frontend/afe/rpc_interface.py
+++ b/frontend/afe/rpc_interface.py
@@ -496,7 +496,7 @@ def create_parameterized_job(name, priority, test, 
parameters, kernel=None,
 
 
 def create_job(name, priority, control_file, control_type,
-               hosts=(), meta_hosts=(), one_time_hosts=(),
+               hosts=(), profiles=(), meta_hosts=(), one_time_hosts=(),
                atomic_group_name=None, synch_count=None, is_template=False,
                timeout=None, max_runtime_hrs=None, run_verify=True,
                email_list='', dependencies=(), reboot_before=None,
@@ -526,6 +526,7 @@ def create_job(name, priority, control_file, control_type,
     @param keyvals dict of keyvals to associate with the job
 
     @param hosts List of hosts to run job on.
+    @param profiles List of profiles to use, in sync with @hosts list
     @param meta_hosts List where each entry is a label name, and for each entry
     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.
diff --git a/frontend/afe/rpc_utils.py b/frontend/afe/rpc_utils.py
index 7250d92..8527d39 100644
--- a/frontend/afe/rpc_utils.py
+++ b/frontend/afe/rpc_utils.py
@@ -454,7 +454,7 @@ def check_for_duplicate_hosts(host_objects):
                  % ', '.join(duplicate_hostnames)})
 
 
-def create_new_job(owner, options, host_objects, metahost_objects,
+def create_new_job(owner, options, host_objects, profiles, metahost_objects,
                    atomic_group=None):
     labels_by_name = dict((label.name, label)
                           for label in models.Label.objects.all())
@@ -507,7 +507,7 @@ def create_new_job(owner, options, host_objects, 
metahost_objects,
 
     job = models.Job.create(owner=owner, options=options,
                             hosts=all_host_objects)
-    job.queue(all_host_objects, atomic_group=atomic_group,
+    job.queue(all_host_objects, profiles=profiles, atomic_group=atomic_group,
               is_template=options.get('is_template', False))
     return job.id
 
@@ -636,7 +636,7 @@ def get_create_job_common_args(local_args):
 
 
 def create_job_common(name, priority, control_type, control_file=None,
-                      hosts=(), meta_hosts=(), one_time_hosts=(),
+                      hosts=(), profiles=(), meta_hosts=(), one_time_hosts=(),
                       atomic_group_name=None, synch_count=None,
                       is_template=False, timeout=None, max_runtime_hrs=None,
                       run_verify=True, email_list='', dependencies=(),
@@ -749,5 +749,6 @@ def create_job_common(name, priority, control_type, 
control_file=None,
     return create_new_job(owner=owner,
                           options=options,
                           host_objects=host_objects,
+                          profiles=profiles,
                           metahost_objects=metahost_objects,
                           atomic_group=atomic_group)
-- 
1.7.7.6


-- 
Nishanth Aravamudan <[email protected]>
IBM Linux Technology Center

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to