Merge "Don't request empty nodesets" into feature/zuulv3
This commit is contained in:
commit
7f98f3132c
|
@ -43,6 +43,9 @@
|
||||||
- job:
|
- job:
|
||||||
name: project-merge
|
name: project-merge
|
||||||
hold-following-changes: true
|
hold-following-changes: true
|
||||||
|
nodes:
|
||||||
|
- name: controller
|
||||||
|
label: label1
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: project-test1
|
name: project-test1
|
||||||
|
@ -66,9 +69,15 @@
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: project-test2
|
name: project-test2
|
||||||
|
nodes:
|
||||||
|
- name: controller
|
||||||
|
label: label1
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: project1-project2-integration
|
name: project1-project2-integration
|
||||||
|
nodes:
|
||||||
|
- name: controller
|
||||||
|
label: label1
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: project-testfile
|
name: project-testfile
|
||||||
|
|
|
@ -62,7 +62,8 @@ class TestSchedulerSSL(SSLZuulTestCase):
|
||||||
self.assertEqual(A.reported, 2)
|
self.assertEqual(A.reported, 2)
|
||||||
self.assertEqual(self.getJobFromHistory('project-test1').node,
|
self.assertEqual(self.getJobFromHistory('project-test1').node,
|
||||||
'label1')
|
'label1')
|
||||||
self.assertIsNone(self.getJobFromHistory('project-test2').node)
|
self.assertEqual(self.getJobFromHistory('project-test2').node,
|
||||||
|
'label1')
|
||||||
|
|
||||||
|
|
||||||
class TestScheduler(ZuulTestCase):
|
class TestScheduler(ZuulTestCase):
|
||||||
|
@ -85,7 +86,8 @@ class TestScheduler(ZuulTestCase):
|
||||||
self.assertEqual(A.reported, 2)
|
self.assertEqual(A.reported, 2)
|
||||||
self.assertEqual(self.getJobFromHistory('project-test1').node,
|
self.assertEqual(self.getJobFromHistory('project-test1').node,
|
||||||
'label1')
|
'label1')
|
||||||
self.assertIsNone(self.getJobFromHistory('project-test2').node)
|
self.assertEqual(self.getJobFromHistory('project-test2').node,
|
||||||
|
'label1')
|
||||||
|
|
||||||
# TODOv3(jeblair): we may want to report stats by tenant (also?).
|
# TODOv3(jeblair): we may want to report stats by tenant (also?).
|
||||||
# Per-driver
|
# Per-driver
|
||||||
|
|
|
@ -409,6 +409,10 @@ class ExecutorClient(object):
|
||||||
del self.builds[job.unique]
|
del self.builds[job.unique]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
# Since this isn't otherwise going to get a build complete
|
||||||
|
# event, send one to the scheduler so that it can unlock
|
||||||
|
# the nodes.
|
||||||
|
self.sched.onBuildCompleted(build, 'CANCELED', {})
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -29,10 +29,15 @@ class Nodepool(object):
|
||||||
req = model.NodeRequest(self.sched.hostname, build_set, job, nodeset)
|
req = model.NodeRequest(self.sched.hostname, build_set, job, nodeset)
|
||||||
self.requests[req.uid] = req
|
self.requests[req.uid] = req
|
||||||
|
|
||||||
self.sched.zk.submitNodeRequest(req, self._updateNodeRequest)
|
if nodeset.nodes:
|
||||||
# Logged after submission so that we have the request id
|
self.sched.zk.submitNodeRequest(req, self._updateNodeRequest)
|
||||||
self.log.info("Submited node request %s" % (req,))
|
# Logged after submission so that we have the request id
|
||||||
|
self.log.info("Submited node request %s" % (req,))
|
||||||
|
else:
|
||||||
|
self.log.info("Fulfilling empty node request %s" % (req,))
|
||||||
|
req.state = model.STATE_FULFILLED
|
||||||
|
self.sched.onNodesProvisioned(req)
|
||||||
|
del self.requests[req.uid]
|
||||||
return req
|
return req
|
||||||
|
|
||||||
def cancelRequest(self, request):
|
def cancelRequest(self, request):
|
||||||
|
|
Loading…
Reference in New Issue