Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions paddles/controllers/runs.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,14 @@ def get_lookup_controller(self):
return MachineTypeController


class FlavorsController(RunFilterIndexController):
def get_subquery(self, query):
return query.values(Job.flavor)

def get_lookup_controller(self):
return FlavorController


class SuitesController(RunFilterIndexController):
def get_subquery(self, query):
return query.values(Run.suite)
Expand Down Expand Up @@ -196,6 +204,8 @@ def get_lookup_controller(self, field):
return SuitesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()


class DateController(RunFilterController):
Expand Down Expand Up @@ -224,6 +234,8 @@ def get_lookup_controller(self, field):
return SuitesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()


class MachineTypeController(RunFilterController):
Expand All @@ -243,6 +255,8 @@ def get_lookup_controller(self, field):
return SuitesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()


class StatusController(RunFilterController):
Expand All @@ -262,6 +276,8 @@ def get_lookup_controller(self, field):
return SuitesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()


class SuiteController(RunFilterController):
Expand All @@ -281,6 +297,8 @@ def get_lookup_controller(self, field):
return StatusesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()


class UserController(RunFilterController):
Expand All @@ -300,6 +318,29 @@ def get_lookup_controller(self, field):
return StatusesController()
if field == 'suite':
return SuitesController()
if field == 'flavor':
return FlavorsController()


class FlavorController(RunFilterController):
def get_subquery(self, query):
return query.join(Job).filter(Job.flavor == self.value).group_by(Run)

def get_lookup_controller(self, field):
if field == 'branch':
return BranchesController()
if field == 'date':
return DatesController()
if field == 'machine_type':
return MachineTypesController()
if field == 'sha1':
return Sha1sController()
if field == 'status':
return StatusesController()
if field == 'suite':
return SuitesController()
if field == 'user':
return UsersController()


class DateRangeController(object):
Expand Down Expand Up @@ -354,6 +395,8 @@ def get_lookup_controller(self, field):
return SuitesController()
if field == 'user':
return UsersController()
if field == 'flavor':
return FlavorsController()



Expand Down Expand Up @@ -401,6 +444,8 @@ def _create_run(cls, name):

user = UsersController()

flavors = FlavorsController()

@expose('json')
def _lookup(self, name, *remainder):
return RunController(name), remainder
3 changes: 3 additions & 0 deletions paddles/models/runs.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ def __json__(self):
machine_type=self.machine_type,
sha1=results['sha1'],
priority=self.priority,
flavor=results['flavor'],
)

@classmethod
Expand Down Expand Up @@ -227,6 +228,7 @@ def get_results(self):
unknown = jobs_status.count(None) + jobs_status.count('unknown')
total = len(jobs_status)
sha1 = next(self.jobs.values(Job.sha1), ['none'])[0]
flavor = next(self.jobs.values(Job.flavor), ['none'])[0]
return {
'queued': queued,
'pass': passing,
Expand All @@ -237,6 +239,7 @@ def get_results(self):
'unknown': unknown,
'total': total,
'sha1': sha1,
'flavor': flavor,
}

def set_status(self, results=None):
Expand Down
9 changes: 8 additions & 1 deletion paddles/tests/models/test_runs.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def test_run_results(self):
run_name = 'teuthology-2014-03-27_00:00:00-x-x-x-x-x'
new_run = Run(run_name)
stats_in = {'pass': 9, 'fail': 1, 'dead': 6, 'running': 5, 'sha1': None,
'waiting': 1, 'unknown': 1, 'queued': 1}
'waiting': 1, 'unknown': 1, 'queued': 1, 'flavor': None}
statuses = stats_in.keys()
stats_in['total'] = sum(_ for _ in stats_in.values() if _)
stats_out = {}
Expand All @@ -248,3 +248,10 @@ def test_run_priority(self):
new_run = Run(run_name)
Job(dict(job_id=1, id=1, status='queued', priority=99), new_run)
assert new_run.priority == 99

def test_run_flavor(self):
run_name = "run_flavor"
new_run = Run(run_name)
Job(dict(job_id=1, id=1, status='queued', flavor="blah"), new_run)
run_result = new_run.get_results()
assert run_result.get('flavor') == "blah"