Merge lp:~stylesen/lava-scheduler/multinode into lp:lava-scheduler/multinode

Proposed by Senthil Kumaran S
Status: Merged
Approved by: Neil Williams
Approved revision: no longer in the source branch.
Merged at revision: 251
Proposed branch: lp:~stylesen/lava-scheduler/multinode
Merge into: lp:lava-scheduler/multinode
Diff against target: 106 lines (+11/-26)
3 files modified
lava_scheduler_app/models.py (+3/-8)
lava_scheduler_daemon/dbjobsource.py (+4/-0)
lava_scheduler_daemon/utils.py (+4/-18)
To merge this branch: bzr merge lp:~stylesen/lava-scheduler/multinode
Reviewer Review Type Date Requested Status
Neil Williams Approve
Review via email: mp+171725@code.launchpad.net

Description of the change

The job definition sent to lava-dispatcher via lava-scheduler will have target device information in it.

To post a comment you must log in.
Revision history for this message
Neil Williams (codehelp) wrote :

Looks good, thanks.

review: Approve
251. By Neil Williams

Senthil Kumaran 2013-06-27 Inject actual target device in job definition.
modified:
  lava_scheduler_app/models.py
  lava_scheduler_daemon/dbjobsource.py
  lava_scheduler_daemon/utils.py

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lava_scheduler_app/models.py'
2--- lava_scheduler_app/models.py 2013-06-25 12:35:39 +0000
3+++ lava_scheduler_app/models.py 2013-06-27 07:34:27 +0000
4@@ -1,6 +1,5 @@
5 import logging
6 import os
7-import json
8 import uuid
9 import simplejson
10 import urlparse
11@@ -488,30 +487,26 @@
12
13 if 'device_group' in job_data:
14 target_group = str(uuid.uuid4())
15- node_json, group_json = utils.split_multi_job(job_data,
16- target_group)
17+ node_json = utils.split_multi_job(job_data, target_group)
18 job_list = []
19 try:
20 parent_id = (TestJob.objects.latest('id')).id + 1
21 except:
22 parent_id = 1
23 child_id = 0
24- parent_job = str(parent_id) + '.' + str(child_id)
25
26 for role in node_json:
27 role_count = len(node_json[role])
28 for c in range(0, role_count):
29 device_type = DeviceType.objects.get(
30 name=node_json[role][c]["device_type"])
31- sub_id = str(parent_id) + '.' + str(child_id)
32- logger = logging.getLogger("SUBMITLOGGER")
33- logger.info(json.dumps(node_json[role][c]))
34+ sub_id = '.'.join([str(parent_id), str(child_id)])
35
36 job = TestJob(
37 sub_id=sub_id, submitter=submitter,
38 requested_device=target, description=job_name,
39 requested_device_type=device_type,
40- definition=json.dumps(node_json[role][c]),
41+ definition=simplejson.dumps(node_json[role][c]),
42 health_check=health_check, user=user, group=group,
43 is_public=is_public, priority=priority,
44 target_group=target_group)
45
46=== modified file 'lava_scheduler_daemon/dbjobsource.py'
47--- lava_scheduler_daemon/dbjobsource.py 2013-06-20 11:41:39 +0000
48+++ lava_scheduler_daemon/dbjobsource.py 2013-06-27 07:34:27 +0000
49@@ -130,6 +130,10 @@
50 return None
51 else:
52 job.actual_device = device
53+ job.log_file.save(
54+ 'job-%s.log' % job.id, ContentFile(''), save=False)
55+ job.submit_token = AuthToken.objects.create(user=job.submitter)
56+ job.definition = simplejson.dumps(self._get_json_data(job))
57 job.save()
58 transaction.commit()
59 return job
60
61=== modified file 'lava_scheduler_daemon/utils.py'
62--- lava_scheduler_daemon/utils.py 2013-06-25 06:11:41 +0000
63+++ lava_scheduler_daemon/utils.py 2013-06-27 07:34:27 +0000
64@@ -17,28 +17,15 @@
65 # You should have received a copy of the GNU Affero General Public License
66 # along with LAVA Scheduler. If not, see <http://www.gnu.org/licenses/>.
67
68-import json
69 import copy
70-from socket import gethostname
71-
72-
73-def split_multi_job(multi_job_data, target_group):
74- group_json = {}
75+
76+
77+def split_multi_job(json_jobdata, target_group):
78 node_json = {}
79 all_nodes = {}
80 node_actions = {}
81- hostname = gethostname()
82 port = 3079
83- json_jobdata = multi_job_data
84 if "device_group" in json_jobdata:
85- # multinode start, group stage 1
86- group_json["timeout"] = json_jobdata["timeout"]
87- group_json["group_dispatcher"] = True
88- # group stage 2 - configurable values
89- # all the groupd_dispatcher really needs is the port number to use
90- group_json["logging_level"] = "DEBUG"
91- group_json["port"] = port
92- group_json["hostname"] = hostname
93 # multinode node stage 1
94 for actions in json_jobdata["actions"]:
95 if "parameters" not in actions \
96@@ -78,9 +65,8 @@
97 # multinode node stage 2
98 node_json[role][c]["logging_level"] = "DEBUG"
99 node_json[role][c]["port"] = port
100- node_json[role][c]["hostname"] = hostname
101 node_json[role][c]["device_type"] = clients["device_type"]
102
103- return (node_json, group_json)
104+ return node_json
105
106 return 0

Subscribers

People subscribed via source and target branches

to status/vote changes: