Merge lp:~codehelp/lava-scheduler/multinode-pep8 into lp:lava-scheduler/multinode
- multinode-pep8
- Merge into multinode
Proposed by
Neil Williams
Status: | Merged |
---|---|
Approved by: | Senthil Kumaran S |
Approved revision: | 264 |
Merged at revision: | 267 |
Proposed branch: | lp:~codehelp/lava-scheduler/multinode-pep8 |
Merge into: | lp:lava-scheduler/multinode |
Diff against target: |
2254 lines (+296/-386) 47 files modified
doc/conf.py (+2/-2) lava_scheduler_app/admin.py (+6/-1) lava_scheduler_app/api.py (+11/-12) lava_scheduler_app/extension.py (+3/-3) lava_scheduler_app/logfile_helper.py (+15/-9) lava_scheduler_app/management/commands/__init__.py (+4/-9) lava_scheduler_app/management/commands/scheduler.py (+2/-1) lava_scheduler_app/migrations/0001_initial.py (+3/-6) lava_scheduler_app/migrations/0002_auto__chg_field_testjob_device_type.py (+3/-6) lava_scheduler_app/migrations/0003_auto__add_field_testjob_requested_device__add_field_testjob_requested_.py (+3/-6) lava_scheduler_app/migrations/0004_fill_out_device_fields.py (+1/-4) lava_scheduler_app/migrations/0005_auto__del_field_testjob_device_type__del_field_testjob_target.py (+3/-6) lava_scheduler_app/migrations/0006_auto__add_field_testjob_log_file.py (+3/-6) lava_scheduler_app/migrations/0007_merged_migration.py (+1/-5) lava_scheduler_app/migrations/0008_auto__add_field_testjob_results_link.py (+3/-6) lava_scheduler_app/migrations/0009_auto__add_field_testjob_description.py (+3/-6) lava_scheduler_app/migrations/0010_auto__chg_field_testjob_description.py (+3/-6) lava_scheduler_app/migrations/0011_auto__add_tag.py (+3/-5) lava_scheduler_app/migrations/0012_auto__add_field_testjob_submit_token.py (+3/-6) lava_scheduler_app/migrations/0013_auto__add_devicestatetransition.py (+3/-6) lava_scheduler_app/migrations/0014_auto__add_field_device_health_status__add_field_device_last_health_rep.py (+3/-6) lava_scheduler_app/migrations/0015_auto__add_field_testjob_health_check.py (+3/-6) lava_scheduler_app/migrations/0016_auto__add_field_devicetype_health_check_job.py (+3/-6) lava_scheduler_app/migrations/0017_add_lava_health_user.py (+1/-2) lava_scheduler_app/migrations/0018_auto__add_field_testjob_user__add_field_testjob_group__add_field_testj.py (+3/-6) lava_scheduler_app/migrations/0019_set_testjob_owner.py (+1/-4) lava_scheduler_app/migrations/0020_auto__add_field_testjob__results_bundle.py (+1/-5) lava_scheduler_app/migrations/0021_rename_results_link.py (+0/-4) lava_scheduler_app/migrations/0022_auto__chg_field_testjob__results_bundle__add_unique_testjob__results_b.py (+1/-5) lava_scheduler_app/migrations/0023_auto__add_field_devicetype_use_celery.py (+1/-5) lava_scheduler_app/migrations/0024_auto__add_field_devicetype_display.py (+1/-5) lava_scheduler_app/migrations/0025_auto__chg_field_testjob__results_bundle__chg_field_testjob_submit_toke.py (+1/-2) lava_scheduler_app/migrations/0026_auto__add_field_device_device_version.py (+1/-5) lava_scheduler_app/migrations/0027_auto__add_field_testjob_priority.py (+1/-5) lava_scheduler_app/migrations/0028_auto__del_field_devicetype_use_celery.py (+1/-5) lava_scheduler_app/migrations/0029_auto__add_jobfailuretag__add_field_testjob_failure_comment.py (+1/-4) lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py (+1/-5) lava_scheduler_app/models.py (+57/-59) lava_scheduler_app/tests.py (+3/-3) lava_scheduler_app/urls.py (+7/-7) lava_scheduler_app/views.py (+100/-103) lava_scheduler_daemon/board.py (+7/-9) lava_scheduler_daemon/config.py (+3/-2) lava_scheduler_daemon/dbjobsource.py (+9/-7) lava_scheduler_daemon/job.py (+3/-2) lava_scheduler_daemon/jobsource.py (+1/-1) lava_scheduler_daemon/tests/test_board.py (+4/-2) |
To merge this branch: | bzr merge lp:~codehelp/lava-scheduler/multinode-pep8 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Senthil Kumaran S | Approve | ||
Linaro Automation & Validation | Pending | ||
Review via email: mp+175271@code.launchpad.net |
Commit message
Description of the change
PEP8 changes for MultiNode merge
To post a comment you must log in.
Revision history for this message
Senthil Kumaran S (stylesen) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'doc/conf.py' |
2 | --- doc/conf.py 2011-11-16 21:02:31 +0000 |
3 | +++ doc/conf.py 2013-07-17 12:55:41 +0000 |
4 | @@ -178,8 +178,8 @@ |
5 | # Grouping the document tree into LaTeX files. List of tuples |
6 | # (source start file, target name, title, author, documentclass [howto/manual]). |
7 | latex_documents = [ |
8 | - ('index', 'LAVAScheduler.tex', u'LAVA Scheduler Documentation', |
9 | - u'Linaro Validation Team', 'manual'), |
10 | + ('index', 'LAVAScheduler.tex', u'LAVA Scheduler Documentation', |
11 | + u'Linaro Validation Team', 'manual'), |
12 | ] |
13 | |
14 | # The name of an image file (relative to this directory) to place at the top of |
15 | |
16 | === modified file 'lava_scheduler_app/admin.py' |
17 | --- lava_scheduler_app/admin.py 2013-01-14 21:01:59 +0000 |
18 | +++ lava_scheduler_app/admin.py 2013-07-17 12:55:41 +0000 |
19 | @@ -1,23 +1,26 @@ |
20 | from django.contrib import admin |
21 | from lava_scheduler_app.models import ( |
22 | Device, DeviceStateTransition, DeviceType, TestJob, Tag, JobFailureTag, |
23 | - ) |
24 | +) |
25 | |
26 | # XXX These actions should really go to another screen that asks for a reason. |
27 | # Sounds tedious to implement though. |
28 | |
29 | + |
30 | def offline_action(modeladmin, request, queryset): |
31 | for device in queryset.filter(status__in=[Device.IDLE, Device.RUNNING]): |
32 | if device.can_admin(request.user): |
33 | device.put_into_maintenance_mode(request.user, "admin action") |
34 | offline_action.short_description = "take offline" |
35 | |
36 | + |
37 | def online_action(modeladmin, request, queryset): |
38 | for device in queryset.filter(status__in=[Device.OFFLINE, Device.OFFLINING]): |
39 | if device.can_admin(request.user): |
40 | device.put_into_online_mode(request.user, "admin action") |
41 | online_action.short_description = "take online" |
42 | |
43 | + |
44 | def retire_action(modeladmin, request, queryset): |
45 | for device in queryset: |
46 | if device.can_admin(request.user): |
47 | @@ -29,12 +32,14 @@ |
48 | device.save() |
49 | retire_action.short_description = "retire" |
50 | |
51 | + |
52 | def health_unknown(modeladmin, request, queryset): |
53 | for device in queryset.filter(health_status=Device.HEALTH_PASS): |
54 | device.health_status = Device.HEALTH_UNKNOWN |
55 | device.save() |
56 | health_unknown.short_description = "set health_status to unknown" |
57 | |
58 | + |
59 | class DeviceAdmin(admin.ModelAdmin): |
60 | actions = [online_action, offline_action, health_unknown, retire_action] |
61 | list_filter = ['device_type', 'status'] |
62 | |
63 | === modified file 'lava_scheduler_app/api.py' |
64 | --- lava_scheduler_app/api.py 2013-07-03 07:49:32 +0000 |
65 | +++ lava_scheduler_app/api.py 2013-07-17 12:55:41 +0000 |
66 | @@ -8,9 +8,8 @@ |
67 | DeviceType, |
68 | JSONDataError, |
69 | TestJob, |
70 | - ) |
71 | +) |
72 | from lava_scheduler_app.views import ( |
73 | - SumIfSQL, |
74 | SumIf |
75 | ) |
76 | |
77 | @@ -164,12 +163,12 @@ |
78 | device_type_list = [] |
79 | keys = ['busy', 'name', 'idle', 'offline'] |
80 | |
81 | - device_types = DeviceType.objects.filter(display=True).annotate( |
82 | - idle=SumIf('device', condition='status=%s' % Device.IDLE), |
83 | - offline=SumIf('device', condition='status in (%s,%s)' % ( |
84 | - Device.OFFLINE, Device.OFFLINING)), |
85 | - busy=SumIf('device', condition='status=%s' % Device.RUNNING), |
86 | - ).order_by('name') |
87 | + device_types = DeviceType.objects.filter(display=True)\ |
88 | + .annotate(idle=SumIf('device', condition='status=%s' % Device.IDLE), |
89 | + offline=SumIf('device', condition='status in (%s,%s)' |
90 | + % (Device.OFFLINE, Device.OFFLINING)), |
91 | + busy=SumIf('device', condition='status=%s' |
92 | + % Device.RUNNING), ).order_by('name') |
93 | |
94 | for dev_type in device_types: |
95 | device_type = {} |
96 | @@ -204,9 +203,9 @@ |
97 | |
98 | pending_jobs_by_device = {} |
99 | |
100 | - jobs = TestJob.objects.filter(status=TestJob.SUBMITTED).values_list( |
101 | - 'requested_device_type_id').annotate( |
102 | - pending_jobs=(Count('id'))) |
103 | + jobs = TestJob.objects.filter(status=TestJob.SUBMITTED)\ |
104 | + .values_list('requested_device_type_id')\ |
105 | + .annotate(pending_jobs=(Count('id'))) |
106 | pending_jobs_by_device.update(dict(jobs)) |
107 | |
108 | # Get rest of the devices and put number of pending jobs as 0. |
109 | @@ -214,7 +213,7 @@ |
110 | for device_type in device_types: |
111 | if device_type not in pending_jobs_by_device: |
112 | pending_jobs_by_device[device_type] = 0 |
113 | - |
114 | + |
115 | return pending_jobs_by_device |
116 | |
117 | def job_details(self, job_id): |
118 | |
119 | === modified file 'lava_scheduler_app/extension.py' |
120 | --- lava_scheduler_app/extension.py 2013-06-24 13:26:57 +0000 |
121 | +++ lava_scheduler_app/extension.py 2013-07-17 12:55:41 +0000 |
122 | @@ -72,11 +72,11 @@ |
123 | 'LOG_FILE_PATH': None, |
124 | 'LOG_LEVEL': "WARNING", |
125 | # 500 megs should be enough for anyone |
126 | - 'LOG_FILE_SIZE_LIMIT': 500*1024*1024, |
127 | + 'LOG_FILE_SIZE_LIMIT': 500 * 1024 * 1024, |
128 | # Jobs always specify a timeout, but I suspect its often too low. |
129 | # So we don't let it go below this value, which defaults to a day. |
130 | - 'MIN_JOB_TIMEOUT': 24*60*60, |
131 | - } |
132 | + 'MIN_JOB_TIMEOUT': 24 * 60 * 60, |
133 | + } |
134 | settings_module['SCHEDULER_DAEMON_OPTIONS'].update(from_module) |
135 | prepend_label_apps = settings_module.get('STATICFILES_PREPEND_LABEL_APPS', []) |
136 | if self.app_name in prepend_label_apps: |
137 | |
138 | === modified file 'lava_scheduler_app/logfile_helper.py' |
139 | --- lava_scheduler_app/logfile_helper.py 2012-03-19 02:00:36 +0000 |
140 | +++ lava_scheduler_app/logfile_helper.py 2013-07-17 12:55:41 +0000 |
141 | @@ -1,14 +1,16 @@ |
142 | import re |
143 | |
144 | + |
145 | def getDispatcherErrors(logfile): |
146 | errors = "" |
147 | for line in logfile: |
148 | if line.find("CriticalError:") != -1 or \ |
149 | - line.find("Lava failed on test:") != -1 : |
150 | + line.find("Lava failed on test:") != -1: |
151 | errors += line |
152 | |
153 | return errors |
154 | |
155 | + |
156 | def getDispatcherLogMessages(logfile): |
157 | logs = [] |
158 | log_prefix = '<LAVA_DISPATCHER>' |
159 | @@ -17,9 +19,9 @@ |
160 | for line in logfile: |
161 | # log_prefix not always start at beginning of the line |
162 | pos = line.find(log_prefix) |
163 | - if (pos == -1): # log_prefix not found |
164 | + if pos == -1: # log_prefix not found |
165 | continue |
166 | - if (pos > 0): # remove log_prefix leading characters |
167 | + if pos > 0: # remove log_prefix leading characters |
168 | line = line[pos:-1] |
169 | |
170 | line = line[len(log_prefix):].strip() |
171 | @@ -35,16 +37,19 @@ |
172 | logs.append((match.group(2), line, "")) |
173 | return logs |
174 | |
175 | + |
176 | class Sections: |
177 | def __init__(self): |
178 | self.sections = [] |
179 | self.cur_section_type = None |
180 | self.cur_section = [] |
181 | - def push(self, type, line): |
182 | - if type != self.cur_section_type: |
183 | + |
184 | + def push(self, sect_type, line): |
185 | + if sect_type != self.cur_section_type: |
186 | self.close() |
187 | - self.cur_section_type = type |
188 | + self.cur_section_type = sect_type |
189 | self.cur_section.append(line) |
190 | + |
191 | def close(self): |
192 | if self.cur_section_type is not None: |
193 | self.sections.append( |
194 | @@ -54,6 +59,7 @@ |
195 | self.cur_section_type = None |
196 | self.cur_section = [] |
197 | |
198 | + |
199 | def formatLogFile(logfile): |
200 | if not logfile: |
201 | return [('log', 1, "Log file is missing")] |
202 | @@ -72,9 +78,9 @@ |
203 | if not line.startswith(' '): |
204 | sections.close() |
205 | continue |
206 | - elif line.find("<LAVA_DISPATCHER>") != -1 or \ |
207 | - line.find("lava_dispatcher") != -1 or \ |
208 | - line.find("CriticalError:") != -1 : |
209 | + elif line.find("<LAVA_DISPATCHER>") != -1 \ |
210 | + or line.find("lava_dispatcher") != -1 \ |
211 | + or line.find("CriticalError:") != -1: |
212 | sections.push('log', line) |
213 | else: |
214 | sections.push('console', line) |
215 | |
216 | === modified file 'lava_scheduler_app/management/commands/__init__.py' |
217 | --- lava_scheduler_app/management/commands/__init__.py 2012-03-30 03:04:34 +0000 |
218 | +++ lava_scheduler_app/management/commands/__init__.py 2013-07-17 12:55:41 +0000 |
219 | @@ -15,11 +15,10 @@ |
220 | action='store', |
221 | default=None, |
222 | help="Path to log file, default is taken from settings."), |
223 | - ) |
224 | + ) |
225 | |
226 | log_prefix = '' |
227 | |
228 | - |
229 | _DEFAULT_LOGGING = { |
230 | 'version': 1, |
231 | 'disable_existing_loggers': True, |
232 | @@ -41,7 +40,6 @@ |
233 | }, |
234 | } |
235 | |
236 | - |
237 | def _configure(self, options): |
238 | from django.conf import settings |
239 | |
240 | @@ -56,20 +54,19 @@ |
241 | 'level': 'DEBUG', |
242 | 'class': 'logging.StreamHandler', |
243 | 'formatter': 'default', |
244 | - } |
245 | + } |
246 | else: |
247 | handler = { |
248 | 'level': 'DEBUG', |
249 | 'class': 'logging.FileHandler', |
250 | 'filename': daemon_options['LOG_FILE_PATH'], |
251 | 'formatter': 'default' |
252 | - } |
253 | + } |
254 | |
255 | fmt = "%(asctime)s [%(levelname)s] [%(name)s] %(message)s" |
256 | if self.log_prefix: |
257 | fmt = self.log_prefix + ' ' + fmt |
258 | |
259 | - |
260 | LOGGING = { |
261 | 'version': 1, |
262 | 'disable_existing_loggers': True, |
263 | @@ -79,7 +76,7 @@ |
264 | }, |
265 | 'formatters': {'default': {'format': fmt}}, |
266 | 'handlers': {'default': handler} |
267 | - } |
268 | + } |
269 | |
270 | try: |
271 | import lava.raven |
272 | @@ -92,8 +89,6 @@ |
273 | } |
274 | LOGGING['root']['handlers'].append('sentry') |
275 | |
276 | - |
277 | logging.config.dictConfig(LOGGING) |
278 | |
279 | return daemon_options |
280 | - |
281 | |
282 | === modified file 'lava_scheduler_app/management/commands/scheduler.py' |
283 | --- lava_scheduler_app/management/commands/scheduler.py 2013-06-20 11:41:39 +0000 |
284 | +++ lava_scheduler_app/management/commands/scheduler.py 2013-07-17 12:55:41 +0000 |
285 | @@ -21,6 +21,7 @@ |
286 | |
287 | from lava_scheduler_app.management.commands import SchedulerCommand |
288 | |
289 | + |
290 | class Command(SchedulerCommand): |
291 | |
292 | help = "Run the LAVA test job scheduler" |
293 | @@ -42,7 +43,7 @@ |
294 | |
295 | from twisted.internet import reactor |
296 | |
297 | - from lava_scheduler_daemon.service import BoardSet, JobQueue |
298 | + from lava_scheduler_daemon.service import JobQueue |
299 | from lava_scheduler_daemon.dbjobsource import DatabaseJobSource |
300 | |
301 | daemon_options = self._configure(options) |
302 | |
303 | === modified file 'lava_scheduler_app/migrations/0001_initial.py' |
304 | --- lava_scheduler_app/migrations/0001_initial.py 2011-07-07 11:01:57 +0000 |
305 | +++ lava_scheduler_app/migrations/0001_initial.py 2013-07-17 12:55:41 +0000 |
306 | @@ -1,13 +1,12 @@ |
307 | # encoding: utf-8 |
308 | -import datetime |
309 | from south.db import db |
310 | from south.v2 import SchemaMigration |
311 | -from django.db import models |
312 | + |
313 | |
314 | class Migration(SchemaMigration): |
315 | |
316 | def forwards(self, orm): |
317 | - |
318 | + |
319 | # Adding model 'DeviceType' |
320 | db.create_table('lava_scheduler_app_devicetype', ( |
321 | ('name', self.gf('django.db.models.fields.SlugField')(max_length=50, primary_key=True, db_index=True)), |
322 | @@ -37,9 +36,8 @@ |
323 | )) |
324 | db.send_create_signal('lava_scheduler_app', ['TestJob']) |
325 | |
326 | - |
327 | def backwards(self, orm): |
328 | - |
329 | + |
330 | # Deleting model 'DeviceType' |
331 | db.delete_table('lava_scheduler_app_devicetype') |
332 | |
333 | @@ -49,7 +47,6 @@ |
334 | # Deleting model 'TestJob' |
335 | db.delete_table('lava_scheduler_app_testjob') |
336 | |
337 | - |
338 | models = { |
339 | 'auth.group': { |
340 | 'Meta': {'object_name': 'Group'}, |
341 | |
342 | === modified file 'lava_scheduler_app/migrations/0002_auto__chg_field_testjob_device_type.py' |
343 | --- lava_scheduler_app/migrations/0002_auto__chg_field_testjob_device_type.py 2011-07-26 02:48:55 +0000 |
344 | +++ lava_scheduler_app/migrations/0002_auto__chg_field_testjob_device_type.py 2013-07-17 12:55:41 +0000 |
345 | @@ -1,23 +1,20 @@ |
346 | # encoding: utf-8 |
347 | -import datetime |
348 | from south.db import db |
349 | from south.v2 import SchemaMigration |
350 | -from django.db import models |
351 | + |
352 | |
353 | class Migration(SchemaMigration): |
354 | |
355 | def forwards(self, orm): |
356 | - |
357 | + |
358 | # Changing field 'TestJob.device_type' |
359 | db.alter_column('lava_scheduler_app_testjob', 'device_type_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['lava_scheduler_app.DeviceType'], null=True)) |
360 | |
361 | - |
362 | def backwards(self, orm): |
363 | - |
364 | + |
365 | # User chose to not deal with backwards NULL issues for 'TestJob.device_type' |
366 | raise RuntimeError("Cannot reverse this migration. 'TestJob.device_type' and its values cannot be restored.") |
367 | |
368 | - |
369 | models = { |
370 | 'auth.group': { |
371 | 'Meta': {'object_name': 'Group'}, |
372 | |
373 | === modified file 'lava_scheduler_app/migrations/0003_auto__add_field_testjob_requested_device__add_field_testjob_requested_.py' |
374 | --- lava_scheduler_app/migrations/0003_auto__add_field_testjob_requested_device__add_field_testjob_requested_.py 2011-07-26 03:13:10 +0000 |
375 | +++ lava_scheduler_app/migrations/0003_auto__add_field_testjob_requested_device__add_field_testjob_requested_.py 2013-07-17 12:55:41 +0000 |
376 | @@ -1,13 +1,12 @@ |
377 | # encoding: utf-8 |
378 | -import datetime |
379 | from south.db import db |
380 | from south.v2 import SchemaMigration |
381 | -from django.db import models |
382 | + |
383 | |
384 | class Migration(SchemaMigration): |
385 | |
386 | def forwards(self, orm): |
387 | - |
388 | + |
389 | # Adding field 'TestJob.requested_device' |
390 | db.add_column('lava_scheduler_app_testjob', 'requested_device', self.gf('django.db.models.fields.related.ForeignKey')(default=None, related_name='+', null=True, to=orm['lava_scheduler_app.Device']), keep_default=False) |
391 | |
392 | @@ -17,9 +16,8 @@ |
393 | # Adding field 'TestJob.actual_device' |
394 | db.add_column('lava_scheduler_app_testjob', 'actual_device', self.gf('django.db.models.fields.related.ForeignKey')(default=None, related_name='+', null=True, to=orm['lava_scheduler_app.Device']), keep_default=False) |
395 | |
396 | - |
397 | def backwards(self, orm): |
398 | - |
399 | + |
400 | # Deleting field 'TestJob.requested_device' |
401 | db.delete_column('lava_scheduler_app_testjob', 'requested_device_id') |
402 | |
403 | @@ -29,7 +27,6 @@ |
404 | # Deleting field 'TestJob.actual_device' |
405 | db.delete_column('lava_scheduler_app_testjob', 'actual_device_id') |
406 | |
407 | - |
408 | models = { |
409 | 'auth.group': { |
410 | 'Meta': {'object_name': 'Group'}, |
411 | |
412 | === modified file 'lava_scheduler_app/migrations/0004_fill_out_device_fields.py' |
413 | --- lava_scheduler_app/migrations/0004_fill_out_device_fields.py 2011-07-26 04:08:41 +0000 |
414 | +++ lava_scheduler_app/migrations/0004_fill_out_device_fields.py 2013-07-17 12:55:41 +0000 |
415 | @@ -1,8 +1,6 @@ |
416 | # encoding: utf-8 |
417 | -import datetime |
418 | -from south.db import db |
419 | from south.v2 import DataMigration |
420 | -from django.db import models |
421 | + |
422 | |
423 | class Migration(DataMigration): |
424 | |
425 | @@ -23,7 +21,6 @@ |
426 | job.device_type = job.requested_device.device_type |
427 | job.save() |
428 | |
429 | - |
430 | models = { |
431 | 'auth.group': { |
432 | 'Meta': {'object_name': 'Group'}, |
433 | |
434 | === modified file 'lava_scheduler_app/migrations/0005_auto__del_field_testjob_device_type__del_field_testjob_target.py' |
435 | --- lava_scheduler_app/migrations/0005_auto__del_field_testjob_device_type__del_field_testjob_target.py 2011-07-26 03:15:21 +0000 |
436 | +++ lava_scheduler_app/migrations/0005_auto__del_field_testjob_device_type__del_field_testjob_target.py 2013-07-17 12:55:41 +0000 |
437 | @@ -1,29 +1,26 @@ |
438 | # encoding: utf-8 |
439 | -import datetime |
440 | from south.db import db |
441 | from south.v2 import SchemaMigration |
442 | -from django.db import models |
443 | + |
444 | |
445 | class Migration(SchemaMigration): |
446 | |
447 | def forwards(self, orm): |
448 | - |
449 | + |
450 | # Deleting field 'TestJob.device_type' |
451 | db.delete_column('lava_scheduler_app_testjob', 'device_type_id') |
452 | |
453 | # Deleting field 'TestJob.target' |
454 | db.delete_column('lava_scheduler_app_testjob', 'target_id') |
455 | |
456 | - |
457 | def backwards(self, orm): |
458 | - |
459 | + |
460 | # Adding field 'TestJob.device_type' |
461 | db.add_column('lava_scheduler_app_testjob', 'device_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['lava_scheduler_app.DeviceType'], null=True), keep_default=False) |
462 | |
463 | # Adding field 'TestJob.target' |
464 | db.add_column('lava_scheduler_app_testjob', 'target', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['lava_scheduler_app.Device'], null=True), keep_default=False) |
465 | |
466 | - |
467 | models = { |
468 | 'auth.group': { |
469 | 'Meta': {'object_name': 'Group'}, |
470 | |
471 | === modified file 'lava_scheduler_app/migrations/0006_auto__add_field_testjob_log_file.py' |
472 | --- lava_scheduler_app/migrations/0006_auto__add_field_testjob_log_file.py 2011-07-26 04:33:05 +0000 |
473 | +++ lava_scheduler_app/migrations/0006_auto__add_field_testjob_log_file.py 2013-07-17 12:55:41 +0000 |
474 | @@ -1,23 +1,20 @@ |
475 | # encoding: utf-8 |
476 | -import datetime |
477 | from south.db import db |
478 | from south.v2 import SchemaMigration |
479 | -from django.db import models |
480 | + |
481 | |
482 | class Migration(SchemaMigration): |
483 | |
484 | def forwards(self, orm): |
485 | - |
486 | + |
487 | # Adding field 'TestJob.log_file' |
488 | db.add_column('lava_scheduler_app_testjob', 'log_file', self.gf('django.db.models.fields.files.FileField')(default=None, max_length=100, null=True), keep_default=False) |
489 | |
490 | - |
491 | def backwards(self, orm): |
492 | - |
493 | + |
494 | # Deleting field 'TestJob.log_file' |
495 | db.delete_column('lava_scheduler_app_testjob', 'log_file') |
496 | |
497 | - |
498 | models = { |
499 | 'auth.group': { |
500 | 'Meta': {'object_name': 'Group'}, |
501 | |
502 | === modified file 'lava_scheduler_app/migrations/0007_merged_migration.py' |
503 | --- lava_scheduler_app/migrations/0007_merged_migration.py 2011-08-05 09:25:47 +0000 |
504 | +++ lava_scheduler_app/migrations/0007_merged_migration.py 2013-07-17 12:55:41 +0000 |
505 | @@ -1,19 +1,15 @@ |
506 | # encoding: utf-8 |
507 | -import datetime |
508 | -from south.db import db |
509 | from south.v2 import SchemaMigration |
510 | -from django.db import models |
511 | + |
512 | |
513 | class Migration(SchemaMigration): |
514 | |
515 | def forwards(self, orm): |
516 | pass |
517 | |
518 | - |
519 | def backwards(self, orm): |
520 | pass |
521 | |
522 | - |
523 | models = { |
524 | 'auth.group': { |
525 | 'Meta': {'object_name': 'Group'}, |
526 | |
527 | === modified file 'lava_scheduler_app/migrations/0008_auto__add_field_testjob_results_link.py' |
528 | --- lava_scheduler_app/migrations/0008_auto__add_field_testjob_results_link.py 2011-08-17 03:02:01 +0000 |
529 | +++ lava_scheduler_app/migrations/0008_auto__add_field_testjob_results_link.py 2013-07-17 12:55:41 +0000 |
530 | @@ -1,23 +1,20 @@ |
531 | # encoding: utf-8 |
532 | -import datetime |
533 | from south.db import db |
534 | from south.v2 import SchemaMigration |
535 | -from django.db import models |
536 | + |
537 | |
538 | class Migration(SchemaMigration): |
539 | |
540 | def forwards(self, orm): |
541 | - |
542 | + |
543 | # Adding field 'TestJob.results_link' |
544 | db.add_column('lava_scheduler_app_testjob', 'results_link', self.gf('django.db.models.fields.CharField')(default=None, max_length=400, null=True, blank=True), keep_default=False) |
545 | |
546 | - |
547 | def backwards(self, orm): |
548 | - |
549 | + |
550 | # Deleting field 'TestJob.results_link' |
551 | db.delete_column('lava_scheduler_app_testjob', 'results_link') |
552 | |
553 | - |
554 | models = { |
555 | 'auth.group': { |
556 | 'Meta': {'object_name': 'Group'}, |
557 | |
558 | === modified file 'lava_scheduler_app/migrations/0009_auto__add_field_testjob_description.py' |
559 | --- lava_scheduler_app/migrations/0009_auto__add_field_testjob_description.py 2011-10-01 03:27:42 +0000 |
560 | +++ lava_scheduler_app/migrations/0009_auto__add_field_testjob_description.py 2013-07-17 12:55:41 +0000 |
561 | @@ -1,23 +1,20 @@ |
562 | # encoding: utf-8 |
563 | -import datetime |
564 | from south.db import db |
565 | from south.v2 import SchemaMigration |
566 | -from django.db import models |
567 | + |
568 | |
569 | class Migration(SchemaMigration): |
570 | |
571 | def forwards(self, orm): |
572 | - |
573 | + |
574 | # Adding field 'TestJob.description' |
575 | db.add_column('lava_scheduler_app_testjob', 'description', self.gf('django.db.models.fields.CharField')(default='', max_length=200), keep_default=False) |
576 | |
577 | - |
578 | def backwards(self, orm): |
579 | - |
580 | + |
581 | # Deleting field 'TestJob.description' |
582 | db.delete_column('lava_scheduler_app_testjob', 'description') |
583 | |
584 | - |
585 | models = { |
586 | 'auth.group': { |
587 | 'Meta': {'object_name': 'Group'}, |
588 | |
589 | === modified file 'lava_scheduler_app/migrations/0010_auto__chg_field_testjob_description.py' |
590 | --- lava_scheduler_app/migrations/0010_auto__chg_field_testjob_description.py 2011-11-03 21:50:39 +0000 |
591 | +++ lava_scheduler_app/migrations/0010_auto__chg_field_testjob_description.py 2013-07-17 12:55:41 +0000 |
592 | @@ -1,23 +1,20 @@ |
593 | # encoding: utf-8 |
594 | -import datetime |
595 | from south.db import db |
596 | from south.v2 import SchemaMigration |
597 | -from django.db import models |
598 | + |
599 | |
600 | class Migration(SchemaMigration): |
601 | |
602 | def forwards(self, orm): |
603 | - |
604 | + |
605 | # Changing field 'TestJob.description' |
606 | db.alter_column('lava_scheduler_app_testjob', 'description', self.gf('django.db.models.fields.CharField')(max_length=200, null=True)) |
607 | |
608 | - |
609 | def backwards(self, orm): |
610 | - |
611 | + |
612 | # Changing field 'TestJob.description' |
613 | db.alter_column('lava_scheduler_app_testjob', 'description', self.gf('django.db.models.fields.CharField')(max_length=200)) |
614 | |
615 | - |
616 | models = { |
617 | 'auth.group': { |
618 | 'Meta': {'object_name': 'Group'}, |
619 | |
620 | === modified file 'lava_scheduler_app/migrations/0011_auto__add_tag.py' |
621 | --- lava_scheduler_app/migrations/0011_auto__add_tag.py 2011-12-15 03:16:40 +0000 |
622 | +++ lava_scheduler_app/migrations/0011_auto__add_tag.py 2013-07-17 12:55:41 +0000 |
623 | @@ -1,13 +1,13 @@ |
624 | # encoding: utf-8 |
625 | -import datetime |
626 | from south.db import db |
627 | from south.v2 import SchemaMigration |
628 | from django.db import models |
629 | |
630 | + |
631 | class Migration(SchemaMigration): |
632 | |
633 | def forwards(self, orm): |
634 | - |
635 | + |
636 | # Adding model 'Tag' |
637 | db.create_table('lava_scheduler_app_tag', ( |
638 | ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
639 | @@ -32,9 +32,8 @@ |
640 | )) |
641 | db.create_unique('lava_scheduler_app_testjob_tags', ['testjob_id', 'tag_id']) |
642 | |
643 | - |
644 | def backwards(self, orm): |
645 | - |
646 | + |
647 | # Deleting model 'Tag' |
648 | db.delete_table('lava_scheduler_app_tag') |
649 | |
650 | @@ -44,7 +43,6 @@ |
651 | # Removing M2M table for field tags on 'TestJob' |
652 | db.delete_table('lava_scheduler_app_testjob_tags') |
653 | |
654 | - |
655 | models = { |
656 | 'auth.group': { |
657 | 'Meta': {'object_name': 'Group'}, |
658 | |
659 | === modified file 'lava_scheduler_app/migrations/0012_auto__add_field_testjob_submit_token.py' |
660 | --- lava_scheduler_app/migrations/0012_auto__add_field_testjob_submit_token.py 2012-02-09 19:23:51 +0000 |
661 | +++ lava_scheduler_app/migrations/0012_auto__add_field_testjob_submit_token.py 2013-07-17 12:55:41 +0000 |
662 | @@ -1,23 +1,20 @@ |
663 | # encoding: utf-8 |
664 | -import datetime |
665 | from south.db import db |
666 | from south.v2 import SchemaMigration |
667 | -from django.db import models |
668 | + |
669 | |
670 | class Migration(SchemaMigration): |
671 | |
672 | def forwards(self, orm): |
673 | - |
674 | + |
675 | # Adding field 'TestJob.submit_token' |
676 | db.add_column('lava_scheduler_app_testjob', 'submit_token', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['linaro_django_xmlrpc.AuthToken'], null=True), keep_default=False) |
677 | |
678 | - |
679 | def backwards(self, orm): |
680 | - |
681 | + |
682 | # Deleting field 'TestJob.submit_token' |
683 | db.delete_column('lava_scheduler_app_testjob', 'submit_token_id') |
684 | |
685 | - |
686 | models = { |
687 | 'auth.group': { |
688 | 'Meta': {'object_name': 'Group'}, |
689 | |
690 | === modified file 'lava_scheduler_app/migrations/0013_auto__add_devicestatetransition.py' |
691 | --- lava_scheduler_app/migrations/0013_auto__add_devicestatetransition.py 2012-02-09 19:37:19 +0000 |
692 | +++ lava_scheduler_app/migrations/0013_auto__add_devicestatetransition.py 2013-07-17 12:55:41 +0000 |
693 | @@ -1,13 +1,12 @@ |
694 | # encoding: utf-8 |
695 | -import datetime |
696 | from south.db import db |
697 | from south.v2 import SchemaMigration |
698 | -from django.db import models |
699 | + |
700 | |
701 | class Migration(SchemaMigration): |
702 | |
703 | def forwards(self, orm): |
704 | - |
705 | + |
706 | # Adding model 'DeviceStateTransition' |
707 | db.create_table('lava_scheduler_app_devicestatetransition', ( |
708 | ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), |
709 | @@ -21,13 +20,11 @@ |
710 | )) |
711 | db.send_create_signal('lava_scheduler_app', ['DeviceStateTransition']) |
712 | |
713 | - |
714 | def backwards(self, orm): |
715 | - |
716 | + |
717 | # Deleting model 'DeviceStateTransition' |
718 | db.delete_table('lava_scheduler_app_devicestatetransition') |
719 | |
720 | - |
721 | models = { |
722 | 'auth.group': { |
723 | 'Meta': {'object_name': 'Group'}, |
724 | |
725 | === modified file 'lava_scheduler_app/migrations/0014_auto__add_field_device_health_status__add_field_device_last_health_rep.py' |
726 | --- lava_scheduler_app/migrations/0014_auto__add_field_device_health_status__add_field_device_last_health_rep.py 2012-02-10 01:53:49 +0000 |
727 | +++ lava_scheduler_app/migrations/0014_auto__add_field_device_health_status__add_field_device_last_health_rep.py 2013-07-17 12:55:41 +0000 |
728 | @@ -1,29 +1,26 @@ |
729 | # encoding: utf-8 |
730 | -import datetime |
731 | from south.db import db |
732 | from south.v2 import SchemaMigration |
733 | -from django.db import models |
734 | + |
735 | |
736 | class Migration(SchemaMigration): |
737 | |
738 | def forwards(self, orm): |
739 | - |
740 | + |
741 | # Adding field 'Device.health_status' |
742 | db.add_column('lava_scheduler_app_device', 'health_status', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False) |
743 | |
744 | # Adding field 'Device.last_health_report_job' |
745 | db.add_column('lava_scheduler_app_device', 'last_health_report_job', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name=u'Health Report Job', unique=True, null=True, to=orm['lava_scheduler_app.TestJob']), keep_default=False) |
746 | |
747 | - |
748 | def backwards(self, orm): |
749 | - |
750 | + |
751 | # Deleting field 'Device.health_status' |
752 | db.delete_column('lava_scheduler_app_device', 'health_status') |
753 | |
754 | # Deleting field 'Device.last_health_report_job' |
755 | db.delete_column('lava_scheduler_app_device', 'last_health_report_job_id') |
756 | |
757 | - |
758 | models = { |
759 | 'auth.group': { |
760 | 'Meta': {'object_name': 'Group'}, |
761 | |
762 | === modified file 'lava_scheduler_app/migrations/0015_auto__add_field_testjob_health_check.py' |
763 | --- lava_scheduler_app/migrations/0015_auto__add_field_testjob_health_check.py 2012-02-10 01:53:49 +0000 |
764 | +++ lava_scheduler_app/migrations/0015_auto__add_field_testjob_health_check.py 2013-07-17 12:55:41 +0000 |
765 | @@ -1,23 +1,20 @@ |
766 | # encoding: utf-8 |
767 | -import datetime |
768 | from south.db import db |
769 | from south.v2 import SchemaMigration |
770 | -from django.db import models |
771 | + |
772 | |
773 | class Migration(SchemaMigration): |
774 | |
775 | def forwards(self, orm): |
776 | - |
777 | + |
778 | # Adding field 'TestJob.health_check' |
779 | db.add_column('lava_scheduler_app_testjob', 'health_check', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False) |
780 | |
781 | - |
782 | def backwards(self, orm): |
783 | - |
784 | + |
785 | # Deleting field 'TestJob.health_check' |
786 | db.delete_column('lava_scheduler_app_testjob', 'health_check') |
787 | |
788 | - |
789 | models = { |
790 | 'auth.group': { |
791 | 'Meta': {'object_name': 'Group'}, |
792 | |
793 | === modified file 'lava_scheduler_app/migrations/0016_auto__add_field_devicetype_health_check_job.py' |
794 | --- lava_scheduler_app/migrations/0016_auto__add_field_devicetype_health_check_job.py 2012-02-23 00:13:51 +0000 |
795 | +++ lava_scheduler_app/migrations/0016_auto__add_field_devicetype_health_check_job.py 2013-07-17 12:55:41 +0000 |
796 | @@ -1,23 +1,20 @@ |
797 | # encoding: utf-8 |
798 | -import datetime |
799 | from south.db import db |
800 | from south.v2 import SchemaMigration |
801 | -from django.db import models |
802 | + |
803 | |
804 | class Migration(SchemaMigration): |
805 | |
806 | def forwards(self, orm): |
807 | - |
808 | + |
809 | # Adding field 'DeviceType.health_check_job' |
810 | db.add_column('lava_scheduler_app_devicetype', 'health_check_job', self.gf('django.db.models.fields.TextField')(default=None, null=True, blank=True), keep_default=False) |
811 | |
812 | - |
813 | def backwards(self, orm): |
814 | - |
815 | + |
816 | # Deleting field 'DeviceType.health_check_job' |
817 | db.delete_column('lava_scheduler_app_devicetype', 'health_check_job') |
818 | |
819 | - |
820 | models = { |
821 | 'auth.group': { |
822 | 'Meta': {'object_name': 'Group'}, |
823 | |
824 | === modified file 'lava_scheduler_app/migrations/0017_add_lava_health_user.py' |
825 | --- lava_scheduler_app/migrations/0017_add_lava_health_user.py 2012-02-23 01:42:36 +0000 |
826 | +++ lava_scheduler_app/migrations/0017_add_lava_health_user.py 2013-07-17 12:55:41 +0000 |
827 | @@ -1,8 +1,7 @@ |
828 | # encoding: utf-8 |
829 | import datetime |
830 | -from south.db import db |
831 | from south.v2 import DataMigration |
832 | -from django.db import models |
833 | + |
834 | |
835 | class Migration(DataMigration): |
836 | |
837 | |
838 | === modified file 'lava_scheduler_app/migrations/0018_auto__add_field_testjob_user__add_field_testjob_group__add_field_testj.py' |
839 | --- lava_scheduler_app/migrations/0018_auto__add_field_testjob_user__add_field_testjob_group__add_field_testj.py 2012-02-28 03:53:06 +0000 |
840 | +++ lava_scheduler_app/migrations/0018_auto__add_field_testjob_user__add_field_testjob_group__add_field_testj.py 2013-07-17 12:55:41 +0000 |
841 | @@ -1,13 +1,12 @@ |
842 | # encoding: utf-8 |
843 | -import datetime |
844 | from south.db import db |
845 | from south.v2 import SchemaMigration |
846 | -from django.db import models |
847 | + |
848 | |
849 | class Migration(SchemaMigration): |
850 | |
851 | def forwards(self, orm): |
852 | - |
853 | + |
854 | # Adding field 'TestJob.user' |
855 | db.add_column('lava_scheduler_app_testjob', 'user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True), keep_default=False) |
856 | |
857 | @@ -17,9 +16,8 @@ |
858 | # Adding field 'TestJob.is_public' |
859 | db.add_column('lava_scheduler_app_testjob', 'is_public', self.gf('django.db.models.fields.BooleanField')(default=True), keep_default=False) |
860 | |
861 | - |
862 | def backwards(self, orm): |
863 | - |
864 | + |
865 | # Deleting field 'TestJob.user' |
866 | db.delete_column('lava_scheduler_app_testjob', 'user_id') |
867 | |
868 | @@ -29,7 +27,6 @@ |
869 | # Deleting field 'TestJob.is_public' |
870 | db.delete_column('lava_scheduler_app_testjob', 'is_public') |
871 | |
872 | - |
873 | models = { |
874 | 'auth.group': { |
875 | 'Meta': {'object_name': 'Group'}, |
876 | |
877 | === modified file 'lava_scheduler_app/migrations/0019_set_testjob_owner.py' |
878 | --- lava_scheduler_app/migrations/0019_set_testjob_owner.py 2012-03-07 01:56:57 +0000 |
879 | +++ lava_scheduler_app/migrations/0019_set_testjob_owner.py 2013-07-17 12:55:41 +0000 |
880 | @@ -1,9 +1,8 @@ |
881 | # encoding: utf-8 |
882 | -import datetime |
883 | -from south.db import db |
884 | from south.v2 import DataMigration |
885 | from django.db import models |
886 | |
887 | + |
888 | class Migration(DataMigration): |
889 | |
890 | def forwards(self, orm): |
891 | @@ -11,13 +10,11 @@ |
892 | orm['lava_scheduler_app.TestJob'].objects.update( |
893 | user=models.F('submitter')) |
894 | |
895 | - |
896 | def backwards(self, orm): |
897 | "Write your backwards methods here." |
898 | orm['lava_scheduler_app.TestJob'].objects.update( |
899 | user=None) |
900 | |
901 | - |
902 | models = { |
903 | 'auth.group': { |
904 | 'Meta': {'object_name': 'Group'}, |
905 | |
906 | === modified file 'lava_scheduler_app/migrations/0020_auto__add_field_testjob__results_bundle.py' |
907 | --- lava_scheduler_app/migrations/0020_auto__add_field_testjob__results_bundle.py 2012-06-29 00:12:08 +0000 |
908 | +++ lava_scheduler_app/migrations/0020_auto__add_field_testjob__results_bundle.py 2013-07-17 12:55:41 +0000 |
909 | @@ -1,15 +1,13 @@ |
910 | # -*- coding: utf-8 -*- |
911 | -import datetime |
912 | from south.db import db |
913 | from south.v2 import SchemaMigration |
914 | -from django.db import models |
915 | |
916 | |
917 | class Migration(SchemaMigration): |
918 | |
919 | depends_on = [ |
920 | ('dashboard_app', '0001_initial'), |
921 | - ] |
922 | + ] |
923 | |
924 | def forwards(self, orm): |
925 | # Adding field 'TestJob._results_bundle' |
926 | @@ -17,12 +15,10 @@ |
927 | self.gf('django.db.models.fields.related.OneToOneField')(to=orm['dashboard_app.Bundle'], unique=True, null=True, db_column='results_bundle_id', blank=True), |
928 | keep_default=False) |
929 | |
930 | - |
931 | def backwards(self, orm): |
932 | # Deleting field 'TestJob._results_bundle' |
933 | db.delete_column('lava_scheduler_app_testjob', 'results_bundle_id') |
934 | |
935 | - |
936 | models = { |
937 | 'auth.group': { |
938 | 'Meta': {'object_name': 'Group'}, |
939 | |
940 | === modified file 'lava_scheduler_app/migrations/0021_rename_results_link.py' |
941 | --- lava_scheduler_app/migrations/0021_rename_results_link.py 2012-06-22 01:56:33 +0000 |
942 | +++ lava_scheduler_app/migrations/0021_rename_results_link.py 2013-07-17 12:55:41 +0000 |
943 | @@ -1,8 +1,5 @@ |
944 | # -*- coding: utf-8 -*- |
945 | -import datetime |
946 | -from south.db import db |
947 | from south.v2 import SchemaMigration |
948 | -from django.db import models |
949 | |
950 | |
951 | class Migration(SchemaMigration): |
952 | @@ -22,7 +19,6 @@ |
953 | about this change without actually touching the db at all. |
954 | """ |
955 | |
956 | - |
957 | def forwards(self, orm): |
958 | pass |
959 | |
960 | |
961 | === modified file 'lava_scheduler_app/migrations/0022_auto__chg_field_testjob__results_bundle__add_unique_testjob__results_b.py' |
962 | --- lava_scheduler_app/migrations/0022_auto__chg_field_testjob__results_bundle__add_unique_testjob__results_b.py 2012-06-26 22:36:05 +0000 |
963 | +++ lava_scheduler_app/migrations/0022_auto__chg_field_testjob__results_bundle__add_unique_testjob__results_b.py 2013-07-17 12:55:41 +0000 |
964 | @@ -1,8 +1,6 @@ |
965 | # -*- coding: utf-8 -*- |
966 | -import datetime |
967 | from south.db import db |
968 | from south.v2 import SchemaMigration |
969 | -from django.db import models |
970 | |
971 | |
972 | class Migration(SchemaMigration): |
973 | @@ -14,12 +12,10 @@ |
974 | # Adding unique constraint on 'TestJob', fields ['_results_bundle'] |
975 | db.create_unique('lava_scheduler_app_testjob', ['results_bundle_id']) |
976 | |
977 | - |
978 | def backwards(self, orm): |
979 | # Removing unique constraint on 'TestJob', fields ['_results_bundle'] |
980 | db.delete_unique('lava_scheduler_app_testjob', ['results_bundle_id']) |
981 | |
982 | - |
983 | # Changing field 'TestJob._results_bundle' |
984 | db.alter_column('lava_scheduler_app_testjob', 'results_bundle_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['dashboard_app.Bundle'], null=True, db_column='results_bundle_id')) |
985 | |
986 | @@ -149,4 +145,4 @@ |
987 | } |
988 | } |
989 | |
990 | - complete_apps = ['lava_scheduler_app'] |
991 | \ No newline at end of file |
992 | + complete_apps = ['lava_scheduler_app'] |
993 | |
994 | === modified file 'lava_scheduler_app/migrations/0023_auto__add_field_devicetype_use_celery.py' |
995 | --- lava_scheduler_app/migrations/0023_auto__add_field_devicetype_use_celery.py 2012-07-08 16:48:10 +0000 |
996 | +++ lava_scheduler_app/migrations/0023_auto__add_field_devicetype_use_celery.py 2013-07-17 12:55:41 +0000 |
997 | @@ -1,8 +1,6 @@ |
998 | # -*- coding: utf-8 -*- |
999 | -import datetime |
1000 | from south.db import db |
1001 | from south.v2 import SchemaMigration |
1002 | -from django.db import models |
1003 | |
1004 | |
1005 | class Migration(SchemaMigration): |
1006 | @@ -13,12 +11,10 @@ |
1007 | self.gf('django.db.models.fields.BooleanField')(default=False), |
1008 | keep_default=False) |
1009 | |
1010 | - |
1011 | def backwards(self, orm): |
1012 | # Deleting field 'DeviceType.use_celery' |
1013 | db.delete_column('lava_scheduler_app_devicetype', 'use_celery') |
1014 | |
1015 | - |
1016 | models = { |
1017 | 'auth.group': { |
1018 | 'Meta': {'object_name': 'Group'}, |
1019 | @@ -146,4 +142,4 @@ |
1020 | } |
1021 | } |
1022 | |
1023 | - complete_apps = ['lava_scheduler_app'] |
1024 | \ No newline at end of file |
1025 | + complete_apps = ['lava_scheduler_app'] |
1026 | |
1027 | === modified file 'lava_scheduler_app/migrations/0024_auto__add_field_devicetype_display.py' |
1028 | --- lava_scheduler_app/migrations/0024_auto__add_field_devicetype_display.py 2012-08-03 16:12:09 +0000 |
1029 | +++ lava_scheduler_app/migrations/0024_auto__add_field_devicetype_display.py 2013-07-17 12:55:41 +0000 |
1030 | @@ -1,8 +1,6 @@ |
1031 | # -*- coding: utf-8 -*- |
1032 | -import datetime |
1033 | from south.db import db |
1034 | from south.v2 import SchemaMigration |
1035 | -from django.db import models |
1036 | |
1037 | |
1038 | class Migration(SchemaMigration): |
1039 | @@ -13,12 +11,10 @@ |
1040 | self.gf('django.db.models.fields.BooleanField')(default=True), |
1041 | keep_default=False) |
1042 | |
1043 | - |
1044 | def backwards(self, orm): |
1045 | # Deleting field 'DeviceType.display' |
1046 | db.delete_column('lava_scheduler_app_devicetype', 'display') |
1047 | |
1048 | - |
1049 | models = { |
1050 | 'auth.group': { |
1051 | 'Meta': {'object_name': 'Group'}, |
1052 | @@ -147,4 +143,4 @@ |
1053 | } |
1054 | } |
1055 | |
1056 | - complete_apps = ['lava_scheduler_app'] |
1057 | \ No newline at end of file |
1058 | + complete_apps = ['lava_scheduler_app'] |
1059 | |
1060 | === modified file 'lava_scheduler_app/migrations/0025_auto__chg_field_testjob__results_bundle__chg_field_testjob_submit_toke.py' |
1061 | --- lava_scheduler_app/migrations/0025_auto__chg_field_testjob__results_bundle__chg_field_testjob_submit_toke.py 2012-08-30 04:44:11 +0000 |
1062 | +++ lava_scheduler_app/migrations/0025_auto__chg_field_testjob__results_bundle__chg_field_testjob_submit_toke.py 2013-07-17 12:55:41 +0000 |
1063 | @@ -1,5 +1,4 @@ |
1064 | # -*- coding: utf-8 -*- |
1065 | -import datetime |
1066 | from south.db import db |
1067 | from south.v2 import SchemaMigration |
1068 | from django.db import models |
1069 | @@ -175,4 +174,4 @@ |
1070 | } |
1071 | } |
1072 | |
1073 | - complete_apps = ['lava_scheduler_app'] |
1074 | \ No newline at end of file |
1075 | + complete_apps = ['lava_scheduler_app'] |
1076 | |
1077 | === modified file 'lava_scheduler_app/migrations/0026_auto__add_field_device_device_version.py' |
1078 | --- lava_scheduler_app/migrations/0026_auto__add_field_device_device_version.py 2012-10-04 20:51:31 +0000 |
1079 | +++ lava_scheduler_app/migrations/0026_auto__add_field_device_device_version.py 2013-07-17 12:55:41 +0000 |
1080 | @@ -1,8 +1,6 @@ |
1081 | # -*- coding: utf-8 -*- |
1082 | -import datetime |
1083 | from south.db import db |
1084 | from south.v2 import SchemaMigration |
1085 | -from django.db import models |
1086 | |
1087 | |
1088 | class Migration(SchemaMigration): |
1089 | @@ -13,12 +11,10 @@ |
1090 | self.gf('django.db.models.fields.CharField')(default=None, max_length=200, null=True), |
1091 | keep_default=False) |
1092 | |
1093 | - |
1094 | def backwards(self, orm): |
1095 | # Deleting field 'Device.device_version' |
1096 | db.delete_column('lava_scheduler_app_device', 'device_version') |
1097 | |
1098 | - |
1099 | models = { |
1100 | 'auth.group': { |
1101 | 'Meta': {'object_name': 'Group'}, |
1102 | @@ -148,4 +144,4 @@ |
1103 | } |
1104 | } |
1105 | |
1106 | - complete_apps = ['lava_scheduler_app'] |
1107 | \ No newline at end of file |
1108 | + complete_apps = ['lava_scheduler_app'] |
1109 | |
1110 | === modified file 'lava_scheduler_app/migrations/0027_auto__add_field_testjob_priority.py' |
1111 | --- lava_scheduler_app/migrations/0027_auto__add_field_testjob_priority.py 2012-11-14 16:46:33 +0000 |
1112 | +++ lava_scheduler_app/migrations/0027_auto__add_field_testjob_priority.py 2013-07-17 12:55:41 +0000 |
1113 | @@ -1,8 +1,6 @@ |
1114 | # -*- coding: utf-8 -*- |
1115 | -import datetime |
1116 | from south.db import db |
1117 | from south.v2 import SchemaMigration |
1118 | -from django.db import models |
1119 | |
1120 | |
1121 | class Migration(SchemaMigration): |
1122 | @@ -13,12 +11,10 @@ |
1123 | self.gf('django.db.models.fields.IntegerField')(default=50), |
1124 | keep_default=False) |
1125 | |
1126 | - |
1127 | def backwards(self, orm): |
1128 | # Deleting field 'TestJob.priority' |
1129 | db.delete_column('lava_scheduler_app_testjob', 'priority') |
1130 | |
1131 | - |
1132 | models = { |
1133 | 'auth.group': { |
1134 | 'Meta': {'object_name': 'Group'}, |
1135 | @@ -149,4 +145,4 @@ |
1136 | } |
1137 | } |
1138 | |
1139 | - complete_apps = ['lava_scheduler_app'] |
1140 | \ No newline at end of file |
1141 | + complete_apps = ['lava_scheduler_app'] |
1142 | |
1143 | === modified file 'lava_scheduler_app/migrations/0028_auto__del_field_devicetype_use_celery.py' |
1144 | --- lava_scheduler_app/migrations/0028_auto__del_field_devicetype_use_celery.py 2012-12-03 05:12:52 +0000 |
1145 | +++ lava_scheduler_app/migrations/0028_auto__del_field_devicetype_use_celery.py 2013-07-17 12:55:41 +0000 |
1146 | @@ -1,8 +1,6 @@ |
1147 | # -*- coding: utf-8 -*- |
1148 | -import datetime |
1149 | from south.db import db |
1150 | from south.v2 import SchemaMigration |
1151 | -from django.db import models |
1152 | |
1153 | |
1154 | class Migration(SchemaMigration): |
1155 | @@ -11,14 +9,12 @@ |
1156 | # Deleting field 'DeviceType.use_celery' |
1157 | db.delete_column('lava_scheduler_app_devicetype', 'use_celery') |
1158 | |
1159 | - |
1160 | def backwards(self, orm): |
1161 | # Adding field 'DeviceType.use_celery' |
1162 | db.add_column('lava_scheduler_app_devicetype', 'use_celery', |
1163 | self.gf('django.db.models.fields.BooleanField')(default=False), |
1164 | keep_default=False) |
1165 | |
1166 | - |
1167 | models = { |
1168 | 'auth.group': { |
1169 | 'Meta': {'object_name': 'Group'}, |
1170 | @@ -148,4 +144,4 @@ |
1171 | } |
1172 | } |
1173 | |
1174 | - complete_apps = ['lava_scheduler_app'] |
1175 | \ No newline at end of file |
1176 | + complete_apps = ['lava_scheduler_app'] |
1177 | |
1178 | === modified file 'lava_scheduler_app/migrations/0029_auto__add_jobfailuretag__add_field_testjob_failure_comment.py' |
1179 | --- lava_scheduler_app/migrations/0029_auto__add_jobfailuretag__add_field_testjob_failure_comment.py 2013-01-02 19:27:56 +0000 |
1180 | +++ lava_scheduler_app/migrations/0029_auto__add_jobfailuretag__add_field_testjob_failure_comment.py 2013-07-17 12:55:41 +0000 |
1181 | @@ -1,5 +1,4 @@ |
1182 | # -*- coding: utf-8 -*- |
1183 | -import datetime |
1184 | from south.db import db |
1185 | from south.v2 import SchemaMigration |
1186 | from django.db import models |
1187 | @@ -29,7 +28,6 @@ |
1188 | )) |
1189 | db.create_unique('lava_scheduler_app_testjob_failure_tags', ['testjob_id', 'jobfailuretag_id']) |
1190 | |
1191 | - |
1192 | def backwards(self, orm): |
1193 | # Deleting model 'JobFailureTag' |
1194 | db.delete_table('lava_scheduler_app_jobfailuretag') |
1195 | @@ -40,7 +38,6 @@ |
1196 | # Removing M2M table for field failure_tags on 'TestJob' |
1197 | db.delete_table('lava_scheduler_app_testjob_failure_tags') |
1198 | |
1199 | - |
1200 | models = { |
1201 | 'auth.group': { |
1202 | 'Meta': {'object_name': 'Group'}, |
1203 | @@ -178,4 +175,4 @@ |
1204 | } |
1205 | } |
1206 | |
1207 | - complete_apps = ['lava_scheduler_app'] |
1208 | \ No newline at end of file |
1209 | + complete_apps = ['lava_scheduler_app'] |
1210 | |
1211 | === modified file 'lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py' |
1212 | --- lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py 2013-06-25 12:35:39 +0000 |
1213 | +++ lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py 2013-07-17 12:55:41 +0000 |
1214 | @@ -1,8 +1,6 @@ |
1215 | # -*- coding: utf-8 -*- |
1216 | -import datetime |
1217 | from south.db import db |
1218 | from south.v2 import SchemaMigration |
1219 | -from django.db import models |
1220 | |
1221 | |
1222 | class Migration(SchemaMigration): |
1223 | @@ -18,7 +16,6 @@ |
1224 | self.gf('django.db.models.fields.CharField')(default=None, max_length=64, null=True, blank=True), |
1225 | keep_default=False) |
1226 | |
1227 | - |
1228 | def backwards(self, orm): |
1229 | # Deleting field 'TestJob.sub_id' |
1230 | db.delete_column('lava_scheduler_app_testjob', 'sub_id') |
1231 | @@ -26,7 +23,6 @@ |
1232 | # Deleting field 'TestJob.target_group' |
1233 | db.delete_column('lava_scheduler_app_testjob', 'target_group') |
1234 | |
1235 | - |
1236 | models = { |
1237 | 'auth.group': { |
1238 | 'Meta': {'object_name': 'Group'}, |
1239 | @@ -166,4 +162,4 @@ |
1240 | } |
1241 | } |
1242 | |
1243 | - complete_apps = ['lava_scheduler_app'] |
1244 | \ No newline at end of file |
1245 | + complete_apps = ['lava_scheduler_app'] |
1246 | |
1247 | === modified file 'lava_scheduler_app/models.py' |
1248 | --- lava_scheduler_app/models.py 2013-07-04 05:22:29 +0000 |
1249 | +++ lava_scheduler_app/models.py 2013-07-17 12:55:41 +0000 |
1250 | @@ -3,7 +3,6 @@ |
1251 | import uuid |
1252 | import simplejson |
1253 | import urlparse |
1254 | -import copy |
1255 | |
1256 | from django.conf import settings |
1257 | from django.contrib.auth.models import User |
1258 | @@ -61,9 +60,9 @@ |
1259 | null=True, blank=True, default=None, validators=[validate_job_json]) |
1260 | |
1261 | display = models.BooleanField(default=True, |
1262 | - help_text=("Should this be displayed in the GUI or not. This can be " \ |
1263 | - "useful if you are removing all devices of this type but don't " \ |
1264 | - "want to loose the test results generated by the devices.")) |
1265 | + help_text=("Should this be displayed in the GUI or not. This can be " |
1266 | + "useful if you are removing all devices of this type but don't " |
1267 | + "want to loose the test results generated by the devices.")) |
1268 | |
1269 | @models.permalink |
1270 | def get_absolute_url(self): |
1271 | @@ -99,20 +98,20 @@ |
1272 | ) |
1273 | |
1274 | hostname = models.CharField( |
1275 | - verbose_name = _(u"Hostname"), |
1276 | - max_length = 200, |
1277 | - primary_key = True, |
1278 | + verbose_name=_(u"Hostname"), |
1279 | + max_length=200, |
1280 | + primary_key=True, |
1281 | ) |
1282 | |
1283 | device_type = models.ForeignKey( |
1284 | DeviceType, verbose_name=_(u"Device type")) |
1285 | |
1286 | device_version = models.CharField( |
1287 | - verbose_name = _(u"Device Version"), |
1288 | - max_length = 200, |
1289 | - null = True, |
1290 | - default = None, |
1291 | - blank = True, |
1292 | + verbose_name=_(u"Device Version"), |
1293 | + max_length=200, |
1294 | + null=True, |
1295 | + default=None, |
1296 | + blank=True, |
1297 | ) |
1298 | |
1299 | current_job = models.ForeignKey( |
1300 | @@ -122,15 +121,15 @@ |
1301 | tags = models.ManyToManyField(Tag, blank=True) |
1302 | |
1303 | status = models.IntegerField( |
1304 | - choices = STATUS_CHOICES, |
1305 | - default = IDLE, |
1306 | - verbose_name = _(u"Device status"), |
1307 | + choices=STATUS_CHOICES, |
1308 | + default=IDLE, |
1309 | + verbose_name=_(u"Device status"), |
1310 | ) |
1311 | |
1312 | health_status = models.IntegerField( |
1313 | - choices = HEALTH_CHOICES, |
1314 | - default = HEALTH_UNKNOWN, |
1315 | - verbose_name = _(u"Device Health"), |
1316 | + choices=HEALTH_CHOICES, |
1317 | + default=HEALTH_UNKNOWN, |
1318 | + verbose_name=_(u"Device Health"), |
1319 | ) |
1320 | |
1321 | last_health_report_job = models.ForeignKey( |
1322 | @@ -253,34 +252,34 @@ |
1323 | id = models.AutoField(primary_key=True) |
1324 | |
1325 | sub_id = models.CharField( |
1326 | - verbose_name = _(u"Sub ID"), |
1327 | - blank = True, |
1328 | - max_length = 200 |
1329 | - ) |
1330 | + verbose_name=_(u"Sub ID"), |
1331 | + blank=True, |
1332 | + max_length=200 |
1333 | + ) |
1334 | |
1335 | target_group = models.CharField( |
1336 | - verbose_name = _(u"Target Group"), |
1337 | - blank = True, |
1338 | - max_length = 64, |
1339 | - null = True, |
1340 | - default = None |
1341 | - ) |
1342 | + verbose_name=_(u"Target Group"), |
1343 | + blank=True, |
1344 | + max_length=64, |
1345 | + null=True, |
1346 | + default=None |
1347 | + ) |
1348 | |
1349 | submitter = models.ForeignKey( |
1350 | User, |
1351 | - verbose_name = _(u"Submitter"), |
1352 | - related_name = '+', |
1353 | + verbose_name=_(u"Submitter"), |
1354 | + related_name='+', |
1355 | ) |
1356 | |
1357 | submit_token = models.ForeignKey( |
1358 | AuthToken, null=True, blank=True, on_delete=models.SET_NULL) |
1359 | |
1360 | description = models.CharField( |
1361 | - verbose_name = _(u"Description"), |
1362 | - max_length = 200, |
1363 | - null = True, |
1364 | - blank = True, |
1365 | - default = None |
1366 | + verbose_name=_(u"Description"), |
1367 | + max_length=200, |
1368 | + null=True, |
1369 | + blank=True, |
1370 | + default=None |
1371 | ) |
1372 | |
1373 | health_check = models.BooleanField(default=False) |
1374 | @@ -298,25 +297,25 @@ |
1375 | Device, null=True, default=None, related_name='+', blank=True) |
1376 | |
1377 | submit_time = models.DateTimeField( |
1378 | - verbose_name = _(u"Submit time"), |
1379 | - auto_now = False, |
1380 | - auto_now_add = True |
1381 | + verbose_name=_(u"Submit time"), |
1382 | + auto_now=False, |
1383 | + auto_now_add=True |
1384 | ) |
1385 | start_time = models.DateTimeField( |
1386 | - verbose_name = _(u"Start time"), |
1387 | - auto_now = False, |
1388 | - auto_now_add = False, |
1389 | - null = True, |
1390 | - blank = True, |
1391 | - editable = False |
1392 | + verbose_name=_(u"Start time"), |
1393 | + auto_now=False, |
1394 | + auto_now_add=False, |
1395 | + null=True, |
1396 | + blank=True, |
1397 | + editable=False |
1398 | ) |
1399 | end_time = models.DateTimeField( |
1400 | - verbose_name = _(u"End time"), |
1401 | - auto_now = False, |
1402 | - auto_now_add = False, |
1403 | - null = True, |
1404 | - blank = True, |
1405 | - editable = False |
1406 | + verbose_name=_(u"End time"), |
1407 | + auto_now=False, |
1408 | + auto_now_add=False, |
1409 | + null=True, |
1410 | + blank=True, |
1411 | + editable=False |
1412 | ) |
1413 | |
1414 | @property |
1415 | @@ -326,19 +325,19 @@ |
1416 | return self.end_time - self.start_time |
1417 | |
1418 | status = models.IntegerField( |
1419 | - choices = STATUS_CHOICES, |
1420 | - default = SUBMITTED, |
1421 | - verbose_name = _(u"Status"), |
1422 | + choices=STATUS_CHOICES, |
1423 | + default=SUBMITTED, |
1424 | + verbose_name=_(u"Status"), |
1425 | ) |
1426 | |
1427 | priority = models.IntegerField( |
1428 | - choices = PRIORITY_CHOICES, |
1429 | - default = MEDIUM, |
1430 | - verbose_name = _(u"Priority"), |
1431 | + choices=PRIORITY_CHOICES, |
1432 | + default=MEDIUM, |
1433 | + verbose_name=_(u"Priority"), |
1434 | ) |
1435 | |
1436 | definition = models.TextField( |
1437 | - editable = False, |
1438 | + editable=False, |
1439 | ) |
1440 | |
1441 | log_file = models.FileField( |
1442 | @@ -417,7 +416,7 @@ |
1443 | device_type = DeviceType.objects.get(name=job_data['device_type']) |
1444 | elif 'device_group' in job_data: |
1445 | target = None |
1446 | - device_type = None |
1447 | + device_type = None |
1448 | else: |
1449 | raise JSONDataError( |
1450 | "No 'target' or 'device_type' or 'device_group' are found " |
1451 | @@ -477,7 +476,6 @@ |
1452 | if parsed_server.hostname is None: |
1453 | raise ValueError("invalid server: %s" % server) |
1454 | |
1455 | - |
1456 | tags = [] |
1457 | for tag_name in job_data.get('device_tags', []): |
1458 | try: |
1459 | |
1460 | === modified file 'lava_scheduler_app/tests.py' |
1461 | --- lava_scheduler_app/tests.py 2012-08-30 03:20:40 +0000 |
1462 | +++ lava_scheduler_app/tests.py 2013-07-17 12:55:41 +0000 |
1463 | @@ -227,13 +227,13 @@ |
1464 | return self.factory.make_job_json( |
1465 | actions=[ |
1466 | { |
1467 | - 'command':'submit_results', |
1468 | + 'command': 'submit_results', |
1469 | 'parameters': { |
1470 | 'server': '...', |
1471 | 'stream': stream_name, |
1472 | - } |
1473 | } |
1474 | - ]) |
1475 | + } |
1476 | + ]) |
1477 | |
1478 | def test_from_json_and_user_sets_group_from_bundlestream(self): |
1479 | group = Group.objects.create(name='group') |
1480 | |
1481 | === modified file 'lava_scheduler_app/urls.py' |
1482 | --- lava_scheduler_app/urls.py 2013-06-27 11:01:30 +0000 |
1483 | +++ lava_scheduler_app/urls.py 2013-07-17 12:55:41 +0000 |
1484 | @@ -79,14 +79,14 @@ |
1485 | 'job_definition', |
1486 | name='lava.scheduler.job.definition'), |
1487 | url(r'^job/(?P<pk>[0-9]+)/definition/plain$', |
1488 | - 'job_definition_plain', |
1489 | - name='lava.scheduler.job.definition.plain'), |
1490 | + 'job_definition_plain', |
1491 | + name='lava.scheduler.job.definition.plain'), |
1492 | url(r'^job/(?P<pk>[0-9]+)/log_file$', |
1493 | - 'job_log_file', |
1494 | - name='lava.scheduler.job.log_file'), |
1495 | + 'job_log_file', |
1496 | + name='lava.scheduler.job.log_file'), |
1497 | url(r'^job/(?P<pk>[0-9]+)/log_file/plain$', |
1498 | - 'job_log_file_plain', |
1499 | - name='lava.scheduler.job.log_file.plain'), |
1500 | + 'job_log_file_plain', |
1501 | + name='lava.scheduler.job.log_file.plain'), |
1502 | url(r'^job/(?P<pk>[0-9]+)/cancel$', |
1503 | 'job_cancel', |
1504 | name='lava.scheduler.job.cancel'), |
1505 | @@ -111,4 +111,4 @@ |
1506 | url(r'^get-remote-json', |
1507 | 'get_remote_json', |
1508 | name='lava.scheduler.get_remote_json'), |
1509 | - ) |
1510 | +) |
1511 | |
1512 | === modified file 'lava_scheduler_app/views.py' |
1513 | --- lava_scheduler_app/views.py 2013-07-04 08:50:24 +0000 |
1514 | +++ lava_scheduler_app/views.py 2013-07-17 12:55:41 +0000 |
1515 | @@ -18,7 +18,7 @@ |
1516 | HttpResponseBadRequest, |
1517 | HttpResponseForbidden, |
1518 | HttpResponseNotAllowed, |
1519 | - ) |
1520 | +) |
1521 | from django.shortcuts import ( |
1522 | get_object_or_404, |
1523 | redirect, |
1524 | @@ -45,17 +45,14 @@ |
1525 | formatLogFile, |
1526 | getDispatcherErrors, |
1527 | getDispatcherLogMessages |
1528 | - ) |
1529 | +) |
1530 | from lava_scheduler_app.models import ( |
1531 | - Tag, |
1532 | Device, |
1533 | DeviceType, |
1534 | DeviceStateTransition, |
1535 | - JobFailureTag, |
1536 | - JSONDataError, |
1537 | TestJob, |
1538 | validate_job_json, |
1539 | - ) |
1540 | +) |
1541 | |
1542 | |
1543 | def post_only(func): |
1544 | @@ -109,12 +106,10 @@ |
1545 | |
1546 | |
1547 | def all_jobs_with_device_sort(): |
1548 | - jobs = TestJob.objects.select_related( |
1549 | - "actual_device", "requested_device", "requested_device_type", |
1550 | - "submitter", "user", "group").extra( |
1551 | - select={ |
1552 | - 'device_sort': 'coalesce(actual_device_id, requested_device_id, requested_device_type_id)' |
1553 | - }).all() |
1554 | + jobs = TestJob.objects.select_related("actual_device", "requested_device", |
1555 | + "requested_device_type", "submitter", "user", "group")\ |
1556 | + .extra(select={'device_sort': 'coalesce(actual_device_id, ' |
1557 | + 'requested_device_id, requested_device_type_id)'}).all() |
1558 | return jobs.order_by('submit_time') |
1559 | |
1560 | |
1561 | @@ -147,14 +142,14 @@ |
1562 | |
1563 | datatable_opts = { |
1564 | 'aaSorting': [[6, 'desc']], |
1565 | - } |
1566 | - searchable_columns=['description'] |
1567 | + } |
1568 | + searchable_columns = ['description'] |
1569 | |
1570 | |
1571 | class IndexJobTable(JobTable): |
1572 | def get_queryset(self): |
1573 | - return all_jobs_with_device_sort().filter( |
1574 | - status__in=[TestJob.SUBMITTED, TestJob.RUNNING]) |
1575 | + return all_jobs_with_device_sort()\ |
1576 | + .filter(status__in=[TestJob.SUBMITTED, TestJob.RUNNING]) |
1577 | |
1578 | class Meta: |
1579 | exclude = ('end_time',) |
1580 | @@ -174,19 +169,22 @@ |
1581 | status = Column() |
1582 | health_status = Column() |
1583 | |
1584 | - searchable_columns=['hostname'] |
1585 | + searchable_columns = ['hostname'] |
1586 | |
1587 | |
1588 | def index_devices_json(request): |
1589 | return DeviceTable.json(request) |
1590 | |
1591 | + |
1592 | def health_jobs_in_hr(hr=-24): |
1593 | return TestJob.objects.filter(health_check=True, |
1594 | - start_time__gte=(datetime.datetime.now() |
1595 | - + relativedelta(hours=hr))).exclude(status__in=[TestJob.SUBMITTED, TestJob.RUNNING]) |
1596 | + start_time__gte=(datetime.datetime.now() + |
1597 | + relativedelta(hours=hr)))\ |
1598 | + .exclude(status__in=[TestJob.SUBMITTED, TestJob.RUNNING]) |
1599 | + |
1600 | |
1601 | def _online_total(): |
1602 | - ''' returns a tuple of (num_online, num_not_retired) ''' |
1603 | + """ returns a tuple of (num_online, num_not_retired) """ |
1604 | r = Device.objects.all().values('status').annotate(count=Count('status')) |
1605 | offline = total = 0 |
1606 | for res in r: |
1607 | @@ -195,7 +193,8 @@ |
1608 | if res['status'] != Device.RETIRED: |
1609 | total += res['count'] |
1610 | |
1611 | - return (total-offline,total) |
1612 | + return total - offline, total |
1613 | + |
1614 | |
1615 | @BreadCrumb("Scheduler", parent=lava_index) |
1616 | def index(request): |
1617 | @@ -214,20 +213,16 @@ |
1618 | }, |
1619 | RequestContext(request)) |
1620 | |
1621 | + |
1622 | def job_report(start_day, end_day, health_check): |
1623 | now = datetime.datetime.now() |
1624 | start_date = now + datetime.timedelta(start_day) |
1625 | end_date = now + datetime.timedelta(end_day) |
1626 | |
1627 | - res = TestJob.objects.filter( |
1628 | - health_check=health_check, |
1629 | - start_time__range=(start_date, end_date), |
1630 | - status__in=( |
1631 | - TestJob.COMPLETE, |
1632 | - TestJob.INCOMPLETE, TestJob.CANCELED, TestJob.CANCELING), |
1633 | - ).values( |
1634 | - 'status' |
1635 | - ) |
1636 | + res = TestJob.objects.filter(health_check=health_check, |
1637 | + start_time__range=(start_date, end_date), |
1638 | + status__in=(TestJob.COMPLETE, TestJob.INCOMPLETE, |
1639 | + TestJob.CANCELED, TestJob.CANCELING),).values('status') |
1640 | url = reverse('lava.scheduler.failure_report') |
1641 | params = 'start=%s&end=%s&health_check=%d' % (start_day, end_day, health_check) |
1642 | return { |
1643 | @@ -237,6 +232,7 @@ |
1644 | 'failure_url': '%s?%s' % (url, params), |
1645 | } |
1646 | |
1647 | + |
1648 | @BreadCrumb("Reports", parent=lava_index) |
1649 | def reports(request): |
1650 | health_day_report = [] |
1651 | @@ -244,15 +240,14 @@ |
1652 | job_day_report = [] |
1653 | job_week_report = [] |
1654 | for day in reversed(range(7)): |
1655 | - health_day_report.append(job_report(day*-1-1, day*-1, True)) |
1656 | - job_day_report.append(job_report(day*-1-1, day*-1, False)) |
1657 | + health_day_report.append(job_report(day * -1 - 1, day * -1, True)) |
1658 | + job_day_report.append(job_report(day * -1 - 1, day * -1, False)) |
1659 | for week in reversed(range(10)): |
1660 | - health_week_report.append(job_report(week*-7-7, week*-7, True)) |
1661 | - job_week_report.append(job_report(week*-7-7, week*-7, False)) |
1662 | + health_week_report.append(job_report(week * -7 - 7, week * -7, True)) |
1663 | + job_week_report.append(job_report(week * -7 - 7, week * -7, False)) |
1664 | |
1665 | - long_running = TestJob.objects.filter( |
1666 | - status__in = [TestJob.RUNNING, TestJob.CANCELING] |
1667 | - ).order_by('start_time')[:5] |
1668 | + long_running = TestJob.objects.filter(status__in=[TestJob.RUNNING, |
1669 | + TestJob.CANCELING]).order_by('start_time')[:5] |
1670 | |
1671 | return render_to_response( |
1672 | "lava_scheduler_app/reports.html", |
1673 | @@ -309,15 +304,15 @@ |
1674 | |
1675 | datatable_opts = { |
1676 | 'aaSorting': [[2, 'desc']], |
1677 | - } |
1678 | + } |
1679 | |
1680 | |
1681 | def failed_jobs_json(request): |
1682 | return FailedJobTable.json(request, params=(request,)) |
1683 | |
1684 | |
1685 | -def _str_to_bool(str): |
1686 | - return str.lower() in ['1', 'true', 'yes'] |
1687 | +def _str_to_bool(string): |
1688 | + return string.lower() in ['1', 'true', 'yes'] |
1689 | |
1690 | |
1691 | @BreadCrumb("Failure Report", parent=reports) |
1692 | @@ -345,41 +340,45 @@ |
1693 | }, |
1694 | RequestContext(request)) |
1695 | |
1696 | + |
1697 | def get_restricted_job(user, pk): |
1698 | - job = get_object_or_404(TestJob.objects, pk=pk) |
1699 | + job = get_object_or_404(TestJob.objects, pk=pk) |
1700 | if not job.is_accessible_by(user): |
1701 | raise PermissionDenied() |
1702 | return job |
1703 | |
1704 | + |
1705 | class SumIfSQL(models.sql.aggregates.Aggregate): |
1706 | is_ordinal = True |
1707 | sql_function = 'SUM' |
1708 | sql_template = 'SUM((%(condition)s)::int)' |
1709 | |
1710 | + |
1711 | class SumIf(models.Aggregate): |
1712 | name = 'SumIf' |
1713 | + |
1714 | def add_to_query(self, query, alias, col, source, is_summary): |
1715 | - aggregate = SumIfSQL( |
1716 | - col, source=source, is_summary=is_summary, **self.extra) |
1717 | + aggregate = SumIfSQL(col, |
1718 | + source=source, is_summary=is_summary, **self.extra) |
1719 | query.aggregates[alias] = aggregate |
1720 | |
1721 | + |
1722 | class DeviceTypeTable(DataTablesTable): |
1723 | |
1724 | def get_queryset(self): |
1725 | - return DeviceType.objects.filter(display=True).annotate( |
1726 | - idle=SumIf('device', condition='status=%s' % Device.IDLE), |
1727 | - offline=SumIf('device', condition='status in (%s,%s)' % ( |
1728 | - Device.OFFLINE, Device.OFFLINING)), |
1729 | - busy=SumIf('device', condition='status=%s' % Device.RUNNING), |
1730 | - ).order_by('name') |
1731 | + return DeviceType.objects.filter(display=True)\ |
1732 | + .annotate(idle=SumIf('device', condition='status=%s' % Device.IDLE), |
1733 | + offline=SumIf('device', condition='status in (%s,%s)' % |
1734 | + (Device.OFFLINE, Device.OFFLINING)), |
1735 | + busy=SumIf('device', condition='status=%s' % Device.RUNNING),).order_by('name') |
1736 | |
1737 | def render_status(self, record): |
1738 | - return "%s idle, %s offline, %s busy" % (record.idle, record.offline, |
1739 | - record.busy) |
1740 | + return "%s idle, %s offline, %s busy" % (record.idle, |
1741 | + record.offline, record.busy) |
1742 | |
1743 | datatable_opts = { |
1744 | "iDisplayLength": 25 |
1745 | - } |
1746 | + } |
1747 | |
1748 | name = IDLinkColumn("name") |
1749 | status = Column() |
1750 | @@ -394,31 +393,31 @@ |
1751 | """ |
1752 | |
1753 | def render_Duration(self, record): |
1754 | - matrix = {-24:"24hours", -24*7:"Week", -24*7*30:"Month"} |
1755 | + matrix = {-24: "24hours", -24 * 7: "Week", -24 * 7 * 30: "Month"} |
1756 | return matrix[record] |
1757 | |
1758 | def render_Complete(self, record): |
1759 | device_type = self.params[0] |
1760 | - num = health_jobs_in_hr(record).filter( |
1761 | - actual_device__in=Device.objects.filter( |
1762 | - device_type=device_type), status=TestJob.COMPLETE).count() |
1763 | + num = health_jobs_in_hr(record).filter(actual_device__in=Device.objects.filter(device_type=device_type), |
1764 | + status=TestJob.COMPLETE).count() |
1765 | return num |
1766 | |
1767 | def render_Failed(self, record): |
1768 | device_type = self.params[0] |
1769 | - num = health_jobs_in_hr(record).filter( |
1770 | - actual_device__in=Device.objects.filter( |
1771 | - device_type=device_type), status__in=[TestJob.INCOMPLETE, |
1772 | - TestJob.CANCELED, TestJob.CANCELING]).count() |
1773 | + num = health_jobs_in_hr(record).filter(actual_device__in=Device.objects.filter(device_type=device_type), |
1774 | + status__in=[TestJob.INCOMPLETE, |
1775 | + TestJob.CANCELED, TestJob.CANCELING]).count() |
1776 | return num |
1777 | |
1778 | Duration = Column() |
1779 | Complete = Column() |
1780 | Failed = Column() |
1781 | |
1782 | + |
1783 | def device_type_json(request): |
1784 | return DeviceTypeTable.json(request) |
1785 | |
1786 | + |
1787 | class NoDTDeviceTable(DeviceTable): |
1788 | def get_queryset(self, device_type): |
1789 | return Device.objects.filter(device_type=device_type) |
1790 | @@ -426,10 +425,12 @@ |
1791 | class Meta: |
1792 | exclude = ('device_type',) |
1793 | |
1794 | + |
1795 | def index_nodt_devices_json(request, pk): |
1796 | device_type = get_object_or_404(DeviceType, pk=pk) |
1797 | return NoDTDeviceTable.json(request, params=(device_type,)) |
1798 | |
1799 | + |
1800 | @BreadCrumb("Device Type {pk}", parent=index, needs=['pk']) |
1801 | def device_type_detail(request, pk): |
1802 | dt = get_object_or_404(DeviceType, pk=pk) |
1803 | @@ -442,13 +443,12 @@ |
1804 | status=TestJob.RUNNING).count(), |
1805 | 'queued_jobs_num': TestJob.objects.filter( |
1806 | Q(status=TestJob.SUBMITTED), Q(requested_device_type=dt) |
1807 | - | Q(requested_device__in=Device.objects.filter(device_type=dt)) |
1808 | - ).count(), |
1809 | + | Q(requested_device__in=Device.objects.filter(device_type=dt))).count(), |
1810 | # data return 1 day, 1 week, 1 month offset |
1811 | - 'health_job_summary_table': HealthJobSummaryTable( |
1812 | - 'device_type', params=(dt,), data=[-24, -24*7, -24*7*30]), |
1813 | - 'devices_table_no_dt': NoDTDeviceTable('devices', |
1814 | - reverse(index_nodt_devices_json, kwargs=dict(pk=pk)), params=(dt,)), |
1815 | + 'health_job_summary_table': HealthJobSummaryTable('device_type', |
1816 | + params=(dt,), data=[-24, -24 * 7, -24 * 7 * 30]), |
1817 | + 'devices_table_no_dt': NoDTDeviceTable('devices', reverse(index_nodt_devices_json, |
1818 | + kwargs=dict(pk=pk)), params=(dt,)), |
1819 | 'bread_crumb_trail': BreadCrumbTrail.leading_to(device_type_detail, pk=pk), |
1820 | }, |
1821 | RequestContext(request)) |
1822 | @@ -478,10 +478,10 @@ |
1823 | accessor="last_health_report_job.end_time") |
1824 | last_health_report_job = Column("last report job") |
1825 | |
1826 | - searchable_columns=['hostname'] |
1827 | + searchable_columns = ['hostname'] |
1828 | datatable_opts = { |
1829 | "iDisplayLength": 25 |
1830 | - } |
1831 | + } |
1832 | |
1833 | |
1834 | def lab_health_json(request): |
1835 | @@ -503,18 +503,15 @@ |
1836 | class HealthJobTable(JobTable): |
1837 | |
1838 | def get_queryset(self, device): |
1839 | - return TestJob.objects.select_related( |
1840 | - "submitter", |
1841 | - ).filter( |
1842 | - actual_device=device, |
1843 | - health_check=True) |
1844 | + return TestJob.objects.select_related("submitter",)\ |
1845 | + .filter(actual_device=device, health_check=True) |
1846 | |
1847 | class Meta: |
1848 | exclude = ('description', 'device') |
1849 | |
1850 | datatable_opts = { |
1851 | 'aaSorting': [[4, 'desc']], |
1852 | - } |
1853 | + } |
1854 | |
1855 | |
1856 | def health_jobs_json(request, pk): |
1857 | @@ -536,10 +533,10 @@ |
1858 | 'health_job_table': HealthJobTable( |
1859 | 'health_jobs', reverse(health_jobs_json, kwargs=dict(pk=pk)), |
1860 | params=(device,)), |
1861 | - 'show_maintenance': device.can_admin(request.user) and \ |
1862 | - device.status in [Device.IDLE, Device.RUNNING], |
1863 | - 'show_online': device.can_admin(request.user) and \ |
1864 | - device.status in [Device.OFFLINE, Device.OFFLINING], |
1865 | + 'show_maintenance': device.can_admin(request.user) and |
1866 | + device.status in [Device.IDLE, Device.RUNNING], |
1867 | + 'show_online': device.can_admin(request.user) and |
1868 | + device.status in [Device.OFFLINE, Device.OFFLINING], |
1869 | 'bread_crumb_trail': BreadCrumbTrail.leading_to(health_job_list, pk=pk), |
1870 | }, |
1871 | RequestContext(request)) |
1872 | @@ -554,7 +551,7 @@ |
1873 | |
1874 | datatable_opts.update({ |
1875 | 'iDisplayLength': 25, |
1876 | - }) |
1877 | + }) |
1878 | |
1879 | |
1880 | def alljobs_json(request): |
1881 | @@ -583,7 +580,7 @@ |
1882 | response_data = { |
1883 | 'is_authorized': is_authorized, |
1884 | 'bread_crumb_trail': BreadCrumbTrail.leading_to(job_submit), |
1885 | - } |
1886 | + } |
1887 | |
1888 | if request.method == "POST" and is_authorized: |
1889 | if request.is_ajax(): |
1890 | @@ -597,7 +594,7 @@ |
1891 | else: |
1892 | try: |
1893 | job = TestJob.from_json_and_user( |
1894 | - request.POST.get("json-input"), request.user) |
1895 | + request.POST.get("json-input"), request.user) |
1896 | |
1897 | if isinstance(job, type(list())): |
1898 | response_data["job_list"] = job |
1899 | @@ -644,22 +641,22 @@ |
1900 | levels[kl] = 0 |
1901 | for level, msg, _ in job_log_messages: |
1902 | levels[level] += 1 |
1903 | - levels = sorted(levels.items(), key=lambda (k,v):logging._levelNames.get(k)) |
1904 | + levels = sorted(levels.items(), key=lambda (k, v): logging._levelNames.get(k)) |
1905 | with job.output_file() as f: |
1906 | f.seek(0, 2) |
1907 | job_file_size = f.tell() |
1908 | data.update({ |
1909 | 'job_file_present': True, |
1910 | - 'job_errors' : job_errors, |
1911 | - 'job_has_error' : len(job_errors) > 0, |
1912 | - 'job_log_messages' : job_log_messages, |
1913 | + 'job_errors': job_errors, |
1914 | + 'job_has_error': len(job_errors) > 0, |
1915 | + 'job_log_messages': job_log_messages, |
1916 | 'levels': levels, |
1917 | - 'job_file_size' : job_file_size, |
1918 | - }) |
1919 | + 'job_file_size': job_file_size, |
1920 | + }) |
1921 | else: |
1922 | data.update({ |
1923 | 'job_file_present': False, |
1924 | - }) |
1925 | + }) |
1926 | |
1927 | return render_to_response( |
1928 | "lava_scheduler_app/job.html", data, RequestContext(request)) |
1929 | @@ -680,7 +677,7 @@ |
1930 | def job_definition_plain(request, pk): |
1931 | job = get_restricted_job(request.user, pk) |
1932 | response = HttpResponse(job.definition, mimetype='text/plain') |
1933 | - response['Content-Disposition'] = "attachment; filename=job_%d.json"%job.id |
1934 | + response['Content-Disposition'] = "attachment; filename=job_%d.json" % job.id |
1935 | return response |
1936 | |
1937 | |
1938 | @@ -696,8 +693,8 @@ |
1939 | { |
1940 | 'job': TestJob.objects.get(pk=pk), |
1941 | 'job_file_present': bool(job.output_file()), |
1942 | - 'sections' : content, |
1943 | - 'job_file_size' : job_file_size, |
1944 | + 'sections': content, |
1945 | + 'job_file_size': job_file_size, |
1946 | }, |
1947 | RequestContext(request)) |
1948 | |
1949 | @@ -705,7 +702,7 @@ |
1950 | def job_log_file_plain(request, pk): |
1951 | job = get_restricted_job(request.user, pk) |
1952 | response = HttpResponse(job.output_file(), mimetype='text/plain') |
1953 | - response['Content-Disposition'] = "attachment; filename=job_%d.log"%job.id |
1954 | + response['Content-Disposition'] = "attachment; filename=job_%d.log" % job.id |
1955 | return response |
1956 | |
1957 | |
1958 | @@ -732,7 +729,7 @@ |
1959 | new_content = log_file.read() |
1960 | nl_index = new_content.rfind('\n', -NEWLINE_SCAN_SIZE) |
1961 | if nl_index >= 0: |
1962 | - new_content = new_content[:nl_index+1] |
1963 | + new_content = new_content[:nl_index + 1] |
1964 | m = formatLogFile(StringIO.StringIO(new_content)) |
1965 | response = HttpResponse( |
1966 | simplejson.dumps(m), content_type='application/json') |
1967 | @@ -742,7 +739,7 @@ |
1968 | return response |
1969 | |
1970 | |
1971 | -LOG_CHUNK_SIZE = 512*1024 |
1972 | +LOG_CHUNK_SIZE = 512 * 1024 |
1973 | NEWLINE_SCAN_SIZE = 80 |
1974 | |
1975 | |
1976 | @@ -770,7 +767,7 @@ |
1977 | content = log_file.read(size - start) |
1978 | nl_index = content.rfind('\n', -NEWLINE_SCAN_SIZE) |
1979 | if nl_index >= 0 and not count_present: |
1980 | - content = content[:nl_index+1] |
1981 | + content = content[:nl_index + 1] |
1982 | response = HttpResponse(content) |
1983 | if skipped: |
1984 | response['X-Skipped-Bytes'] = str(skipped) |
1985 | @@ -836,10 +833,10 @@ |
1986 | json_text = simplejson.dumps({ |
1987 | 'status': job.get_status_display(), |
1988 | 'results_link': request.build_absolute_uri(job.results_link), |
1989 | - }) |
1990 | + }) |
1991 | content_type = 'application/json' |
1992 | if 'callback' in request.GET: |
1993 | - json_text = '%s(%s)'%(request.GET['callback'], json_text) |
1994 | + json_text = '%s(%s)' % (request.GET['callback'], json_text) |
1995 | content_type = 'text/javascript' |
1996 | return HttpResponse(json_text, content_type=content_type) |
1997 | |
1998 | @@ -913,7 +910,7 @@ |
1999 | |
2000 | datatable_opts = { |
2001 | 'aaSorting': [[0, 'desc']], |
2002 | - } |
2003 | + } |
2004 | |
2005 | |
2006 | def transition_json(request, pk): |
2007 | @@ -942,10 +939,10 @@ |
2008 | 'recent_job_table': RecentJobsTable( |
2009 | 'jobs', reverse(recent_jobs_json, kwargs=dict(pk=device.pk)), |
2010 | params=(device,)), |
2011 | - 'show_maintenance': device.can_admin(request.user) and \ |
2012 | - device.status in [Device.IDLE, Device.RUNNING], |
2013 | - 'show_online': device.can_admin(request.user) and \ |
2014 | - device.status in [Device.OFFLINE, Device.OFFLINING], |
2015 | + 'show_maintenance': device.can_admin(request.user) and |
2016 | + device.status in [Device.IDLE, Device.RUNNING], |
2017 | + 'show_online': device.can_admin(request.user) and |
2018 | + device.status in [Device.OFFLINE, Device.OFFLINING], |
2019 | 'bread_crumb_trail': BreadCrumbTrail.leading_to(device_detail, pk=pk), |
2020 | }, |
2021 | RequestContext(request)) |
2022 | @@ -972,6 +969,7 @@ |
2023 | return HttpResponseForbidden( |
2024 | "you cannot administer this device", content_type="text/plain") |
2025 | |
2026 | + |
2027 | @post_only |
2028 | def device_looping_mode(request, pk): |
2029 | device = Device.objects.get(pk=pk) |
2030 | @@ -981,4 +979,3 @@ |
2031 | else: |
2032 | return HttpResponseForbidden( |
2033 | "you cannot administer this device", content_type="text/plain") |
2034 | - |
2035 | |
2036 | === modified file 'lava_scheduler_daemon/board.py' |
2037 | --- lava_scheduler_daemon/board.py 2013-01-24 00:02:29 +0000 |
2038 | +++ lava_scheduler_daemon/board.py 2013-07-17 12:55:41 +0000 |
2039 | @@ -17,7 +17,6 @@ |
2040 | return eb |
2041 | |
2042 | |
2043 | - |
2044 | class DispatcherProcessProtocol(ProcessProtocol): |
2045 | |
2046 | def __init__(self, deferred, job): |
2047 | @@ -34,15 +33,15 @@ |
2048 | |
2049 | def childConnectionLost(self, childFD): |
2050 | self.logger.info("childConnectionLost for %s: %s", |
2051 | - self.job.board_name, childFD) |
2052 | + self.job.board_name, childFD) |
2053 | |
2054 | def processExited(self, reason): |
2055 | self.logger.info("processExited for %s: %s", |
2056 | - self.job.board_name, reason.value) |
2057 | + self.job.board_name, reason.value) |
2058 | |
2059 | def processEnded(self, reason): |
2060 | self.logger.info("processEnded for %s: %s", |
2061 | - self.job.board_name, reason.value) |
2062 | + self.job.board_name, reason.value) |
2063 | self.deferred.callback(reason.value.exitCode) |
2064 | |
2065 | |
2066 | @@ -70,8 +69,8 @@ |
2067 | self.cancel() |
2068 | else: |
2069 | return self._source_lock.run( |
2070 | - self.source.jobCheckForCancellation, self.board_name).addCallback( |
2071 | - self._maybeCancel) |
2072 | + self.source.jobCheckForCancellation, |
2073 | + self.board_name).addCallback(self._maybeCancel) |
2074 | |
2075 | def cancel(self, reason=None): |
2076 | if not self._killing: |
2077 | @@ -117,7 +116,7 @@ |
2078 | self.reactor.spawnProcess( |
2079 | self._protocol, self.dispatcher, args=[ |
2080 | self.dispatcher, self._json_file, '--output-dir', output_dir], |
2081 | - childFDs={0:0, 1:'r', 2:'r'}, env=None) |
2082 | + childFDs={0: 0, 1: 'r', 2: 'r'}, env=None) |
2083 | self._checkCancel_call.start(10) |
2084 | timeout = max( |
2085 | json_data['timeout'], self.daemon_options['MIN_JOB_TIMEOUT']) |
2086 | @@ -139,7 +138,7 @@ |
2087 | self.board_name, |
2088 | exit_code, |
2089 | self._killing).addCallback( |
2090 | - lambda r:exit_code) |
2091 | + lambda r: exit_code) |
2092 | |
2093 | |
2094 | class SchedulerMonitorPP(ProcessProtocol): |
2095 | @@ -164,7 +163,6 @@ |
2096 | |
2097 | class MonitorJob(object): |
2098 | |
2099 | - |
2100 | def __init__(self, job_data, dispatcher, source, board_name, reactor, |
2101 | daemon_options): |
2102 | self.logger = logging.getLogger(__name__ + '.MonitorJob') |
2103 | |
2104 | === modified file 'lava_scheduler_daemon/config.py' |
2105 | --- lava_scheduler_daemon/config.py 2011-07-27 06:59:51 +0000 |
2106 | +++ lava_scheduler_daemon/config.py 2013-07-17 12:55:41 +0000 |
2107 | @@ -6,12 +6,13 @@ |
2108 | |
2109 | defaults = { |
2110 | 'logging': StringIO( |
2111 | -''' |
2112 | + ''' |
2113 | [logging] |
2114 | level = INFO |
2115 | destination = - |
2116 | '''), |
2117 | - } |
2118 | +} |
2119 | + |
2120 | |
2121 | # python xdg isn't installable via pip, so... |
2122 | def load_config_paths(name): |
2123 | |
2124 | === modified file 'lava_scheduler_daemon/dbjobsource.py' |
2125 | --- lava_scheduler_daemon/dbjobsource.py 2013-07-03 06:45:30 +0000 |
2126 | +++ lava_scheduler_daemon/dbjobsource.py 2013-07-17 12:55:41 +0000 |
2127 | @@ -36,6 +36,7 @@ |
2128 | except ImportError: |
2129 | class InterfaceError(Exception): |
2130 | pass |
2131 | + |
2132 | class OperationalError(Exception): |
2133 | pass |
2134 | |
2135 | @@ -68,10 +69,10 @@ |
2136 | except (DatabaseError, OperationalError, InterfaceError), error: |
2137 | message = str(error) |
2138 | if message == 'connection already closed' or \ |
2139 | - message.startswith( |
2140 | - 'terminating connection due to administrator command') or \ |
2141 | - message.startswith( |
2142 | - 'could not connect to server: Connection refused'): |
2143 | + message.startswith( |
2144 | + 'terminating connection due to administrator command') or \ |
2145 | + message.startswith( |
2146 | + 'could not connect to server: Connection refused'): |
2147 | self.logger.warning( |
2148 | 'Forcing reconnection on next db access attempt') |
2149 | if connection.connection: |
2150 | @@ -172,7 +173,7 @@ |
2151 | job.save() |
2152 | transaction.commit() |
2153 | return job |
2154 | - |
2155 | + |
2156 | def getJobList_impl(self): |
2157 | jobs = TestJob.objects.all().filter( |
2158 | status=TestJob.SUBMITTED).order_by('-priority', 'submit_time') |
2159 | @@ -257,7 +258,7 @@ |
2160 | jobs_for_device = jobs_for_device.extra( |
2161 | select={ |
2162 | 'is_targeted': 'requested_device_id is not NULL', |
2163 | - }, |
2164 | + }, |
2165 | where=[ |
2166 | # In human language, this is saying "where the number of |
2167 | # tags that are on the job but not on the device is 0" |
2168 | @@ -267,7 +268,7 @@ |
2169 | from lava_scheduler_app_device_tags |
2170 | where device_id = '%s')) = 0''' |
2171 | % device.hostname, |
2172 | - ], |
2173 | + ], |
2174 | order_by=['-is_targeted', '-priority', 'submit_time']) |
2175 | jobs = jobs_for_device[:1] |
2176 | if jobs: |
2177 | @@ -434,6 +435,7 @@ |
2178 | def jobCheckForCancellation(self, board_name): |
2179 | return self.deferForDB(self.jobCheckForCancellation_impl, board_name) |
2180 | |
2181 | + |
2182 | def _get_device_version(bundle): |
2183 | if bundle is None: |
2184 | return None |
2185 | |
2186 | === modified file 'lava_scheduler_daemon/job.py' |
2187 | --- lava_scheduler_daemon/job.py 2013-07-01 07:57:12 +0000 |
2188 | +++ lava_scheduler_daemon/job.py 2013-07-17 12:55:41 +0000 |
2189 | @@ -19,7 +19,8 @@ |
2190 | import logging |
2191 | |
2192 | from twisted.internet import defer |
2193 | -from lava_scheduler_daemon.board import MonitorJob, catchall_errback |
2194 | +from lava_scheduler_daemon.board import MonitorJob |
2195 | + |
2196 | |
2197 | class NewJob(object): |
2198 | job_cls = MonitorJob |
2199 | @@ -53,7 +54,7 @@ |
2200 | self.logger.debug("no job found") |
2201 | return |
2202 | self.logger.info("starting job %r", job_data) |
2203 | - |
2204 | + |
2205 | self.running_job = self.job_cls( |
2206 | job_data, self.dispatcher, self.source, self.board_name, |
2207 | self.reactor, self.daemon_options) |
2208 | |
2209 | === modified file 'lava_scheduler_daemon/jobsource.py' |
2210 | --- lava_scheduler_daemon/jobsource.py 2011-07-26 00:34:21 +0000 |
2211 | +++ lava_scheduler_daemon/jobsource.py 2013-07-17 12:55:41 +0000 |
2212 | @@ -6,7 +6,7 @@ |
2213 | from zope.interface import ( |
2214 | implements, |
2215 | Interface, |
2216 | - ) |
2217 | +) |
2218 | |
2219 | logger = logging.getLogger(__name__) |
2220 | |
2221 | |
2222 | === modified file 'lava_scheduler_daemon/tests/test_board.py' |
2223 | --- lava_scheduler_daemon/tests/test_board.py 2012-10-04 21:44:25 +0000 |
2224 | +++ lava_scheduler_daemon/tests/test_board.py 2013-07-17 12:55:41 +0000 |
2225 | @@ -7,11 +7,13 @@ |
2226 | |
2227 | from lava_scheduler_daemon.board import Board |
2228 | |
2229 | + |
2230 | def stub_method(method_name): |
2231 | def method_impl(self, board_name, *args): |
2232 | assert method_name not in self._requests[board_name], ( |
2233 | 'overlapping call to %s on %s' % (method_name, board_name)) |
2234 | d = self._requests[method_name][board_name] = defer.Deferred() |
2235 | + |
2236 | def _remove_request(result): |
2237 | del self._requests[method_name][board_name] |
2238 | return result |
2239 | @@ -24,7 +26,7 @@ |
2240 | class TestJobSource(object): |
2241 | |
2242 | def __init__(self): |
2243 | - self._calls = defaultdict(lambda :defaultdict(list)) |
2244 | + self._calls = defaultdict(lambda: defaultdict(list)) |
2245 | self._requests = defaultdict(dict) |
2246 | |
2247 | jobCompleted = stub_method('jobCompleted') |
2248 | @@ -166,5 +168,5 @@ |
2249 | b = self.make_board('board') |
2250 | b.start() |
2251 | self.source._completeCall('getJobForBoard', 'board', None) |
2252 | - self.clock.advance(10000) # hack: the delay should be config data |
2253 | + self.clock.advance(10000) # hack: the delay should be config data |
2254 | self.assertEqual('C', b._state_name()) |