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")
|
resp = self.get_url("api/tenant/non-tenant/jobs")
|
||||||
self.assertEqual(404, resp.status_code)
|
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):
|
def test_web_job_noop(self):
|
||||||
job = self.get_url("api/tenant/tenant-one/job/noop").json()
|
job = self.get_url("api/tenant/tenant-one/job/noop").json()
|
||||||
self.assertEqual("noop", job[0]["name"])
|
self.assertEqual("noop", job[0]["name"])
|
||||||
|
|
|
@ -1292,6 +1292,10 @@ class Job(ConfigObject):
|
||||||
if changed:
|
if changed:
|
||||||
self.roles = tuple(newroles)
|
self.roles = tuple(newroles)
|
||||||
|
|
||||||
|
def getBranches(self):
|
||||||
|
# Return the raw branch list that match this job
|
||||||
|
return self._branches
|
||||||
|
|
||||||
def setBranchMatcher(self, branches):
|
def setBranchMatcher(self, branches):
|
||||||
# Set the branch matcher to match any of the supplied branches
|
# Set the branch matcher to match any of the supplied branches
|
||||||
self._branches = branches
|
self._branches = branches
|
||||||
|
|
|
@ -362,12 +362,30 @@ class RPCListener(object):
|
||||||
job.sendWorkComplete(json.dumps(None))
|
job.sendWorkComplete(json.dumps(None))
|
||||||
for job_name in sorted(tenant.layout.jobs):
|
for job_name in sorted(tenant.layout.jobs):
|
||||||
desc = None
|
desc = None
|
||||||
for tenant_job in tenant.layout.jobs[job_name]:
|
variants = []
|
||||||
if tenant_job.description:
|
for variant in tenant.layout.jobs[job_name]:
|
||||||
desc = tenant_job.description.split('\n')[0]
|
if not desc and variant.description:
|
||||||
break
|
desc = variant.description.split('\n')[0]
|
||||||
output.append({"name": job_name,
|
job_variant = {}
|
||||||
"description": desc})
|
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))
|
job.sendWorkComplete(json.dumps(output))
|
||||||
|
|
||||||
def handle_project_get(self, gear_job):
|
def handle_project_get(self, gear_job):
|
||||||
|
|
Loading…
Reference in New Issue