scheduler: add job's variants to the rpc job_list method
This change adds the job's variants to the jobs list to enable a more structured representation of the zuul-web jobs endpoint results. Change-Id: I12648d514f4cd3d2a31a95038883bd2eef8a9350
This commit is contained in:
parent
f019543ce9
commit
5776248c91
|
@ -572,6 +572,20 @@ class TestWeb(BaseTestWeb):
|
|||
resp = self.get_url("api/tenant/non-tenant/jobs")
|
||||
self.assertEqual(404, resp.status_code)
|
||||
|
||||
def test_jobs_list_variants(self):
|
||||
resp = self.get_url("api/tenant/tenant-one/jobs").json()
|
||||
for job in resp:
|
||||
if job['name'] in ["base", "noop"]:
|
||||
variants = None
|
||||
elif job['name'] == 'project-test1':
|
||||
variants = [
|
||||
{'parent': 'base'},
|
||||
{'branches': ['stable'], 'parent': 'base'},
|
||||
]
|
||||
else:
|
||||
variants = [{'parent': 'base'}]
|
||||
self.assertEqual(variants, job.get('variants'))
|
||||
|
||||
def test_web_job_noop(self):
|
||||
job = self.get_url("api/tenant/tenant-one/job/noop").json()
|
||||
self.assertEqual("noop", job[0]["name"])
|
||||
|
|
|
@ -1292,6 +1292,10 @@ class Job(ConfigObject):
|
|||
if changed:
|
||||
self.roles = tuple(newroles)
|
||||
|
||||
def getBranches(self):
|
||||
# Return the raw branch list that match this job
|
||||
return self._branches
|
||||
|
||||
def setBranchMatcher(self, branches):
|
||||
# Set the branch matcher to match any of the supplied branches
|
||||
self._branches = branches
|
||||
|
|
|
@ -362,12 +362,30 @@ class RPCListener(object):
|
|||
job.sendWorkComplete(json.dumps(None))
|
||||
for job_name in sorted(tenant.layout.jobs):
|
||||
desc = None
|
||||
for tenant_job in tenant.layout.jobs[job_name]:
|
||||
if tenant_job.description:
|
||||
desc = tenant_job.description.split('\n')[0]
|
||||
break
|
||||
output.append({"name": job_name,
|
||||
"description": desc})
|
||||
variants = []
|
||||
for variant in tenant.layout.jobs[job_name]:
|
||||
if not desc and variant.description:
|
||||
desc = variant.description.split('\n')[0]
|
||||
job_variant = {}
|
||||
if not variant.isBase():
|
||||
if variant.parent:
|
||||
job_variant['parent'] = str(variant.parent)
|
||||
else:
|
||||
job_variant['parent'] = tenant.default_base_job
|
||||
branches = variant.getBranches()
|
||||
if branches:
|
||||
job_variant['branches'] = branches
|
||||
if job_variant:
|
||||
variants.append(job_variant)
|
||||
|
||||
job_output = {
|
||||
"name": job_name,
|
||||
}
|
||||
if desc:
|
||||
job_output["description"] = desc
|
||||
if variants:
|
||||
job_output["variants"] = variants
|
||||
output.append(job_output)
|
||||
job.sendWorkComplete(json.dumps(output))
|
||||
|
||||
def handle_project_get(self, gear_job):
|
||||
|
|
Loading…
Reference in New Issue