Merge lp:~codehelp/lava-scheduler/multinode-pep8 into lp:lava-scheduler/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
Reviewer Review Type Date Requested Status
Senthil Kumaran S Approve
Linaro Automation & Validation Pending
Review via email: mp+175271@code.launchpad.net

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())

Subscribers

People subscribed via source and target branches

to all changes:
to status/vote changes: