Merge "Use constants for state names" into feature/zuulv3
This commit is contained in:
commit
0338b76917
|
@ -47,6 +47,32 @@ PRECEDENCE_MAP = {
|
||||||
'high': PRECEDENCE_HIGH,
|
'high': PRECEDENCE_HIGH,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Request states
|
||||||
|
STATE_REQUESTED = 'requested'
|
||||||
|
STATE_PENDING = 'pending'
|
||||||
|
STATE_FULFILLED = 'fulfilled'
|
||||||
|
STATE_FAILED = 'failed'
|
||||||
|
REQUEST_STATES = set([STATE_REQUESTED,
|
||||||
|
STATE_PENDING,
|
||||||
|
STATE_FULFILLED,
|
||||||
|
STATE_FAILED])
|
||||||
|
|
||||||
|
# Node states
|
||||||
|
STATE_BUILDING = 'building'
|
||||||
|
STATE_TESTING = 'testing'
|
||||||
|
STATE_READY = 'ready'
|
||||||
|
STATE_IN_USE = 'in-use'
|
||||||
|
STATE_USED = 'used'
|
||||||
|
STATE_HOLD = 'hold'
|
||||||
|
STATE_DELETING = 'deleting'
|
||||||
|
NODE_STATES = set([STATE_BUILDING,
|
||||||
|
STATE_TESTING,
|
||||||
|
STATE_READY,
|
||||||
|
STATE_IN_USE,
|
||||||
|
STATE_USED,
|
||||||
|
STATE_HOLD,
|
||||||
|
STATE_DELETING])
|
||||||
|
|
||||||
|
|
||||||
def time_to_seconds(s):
|
def time_to_seconds(s):
|
||||||
if s.endswith('s'):
|
if s.endswith('s'):
|
||||||
|
@ -369,9 +395,8 @@ class Node(object):
|
||||||
|
|
||||||
@state.setter
|
@state.setter
|
||||||
def state(self, value):
|
def state(self, value):
|
||||||
# TODOv3(jeblair): reinstate
|
if value not in NODE_STATES:
|
||||||
# if value not in STATES:
|
raise TypeError("'%s' is not a valid state" % value)
|
||||||
# raise TypeError("'%s' is not a valid state" % value)
|
|
||||||
self._state = value
|
self._state = value
|
||||||
self.state_time = time.time()
|
self.state_time = time.time()
|
||||||
|
|
||||||
|
@ -439,7 +464,7 @@ class NodeRequest(object):
|
||||||
self.build_set = build_set
|
self.build_set = build_set
|
||||||
self.job = job
|
self.job = job
|
||||||
self.nodeset = nodeset
|
self.nodeset = nodeset
|
||||||
self._state = 'requested'
|
self._state = STATE_REQUESTED
|
||||||
self.state_time = time.time()
|
self.state_time = time.time()
|
||||||
self.stat = None
|
self.stat = None
|
||||||
self.uid = uuid4().hex
|
self.uid = uuid4().hex
|
||||||
|
@ -454,9 +479,8 @@ class NodeRequest(object):
|
||||||
|
|
||||||
@state.setter
|
@state.setter
|
||||||
def state(self, value):
|
def state(self, value):
|
||||||
# TODOv3(jeblair): reinstate
|
if value not in REQUEST_STATES:
|
||||||
# if value not in STATES:
|
raise TypeError("'%s' is not a valid state" % value)
|
||||||
# raise TypeError("'%s' is not a valid state" % value)
|
|
||||||
self._state = value
|
self._state = value
|
||||||
self.state_time = time.time()
|
self.state_time = time.time()
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from zuul.model import NodeRequest
|
from zuul import model
|
||||||
|
|
||||||
|
|
||||||
class Nodepool(object):
|
class Nodepool(object):
|
||||||
|
@ -26,7 +26,7 @@ class Nodepool(object):
|
||||||
# Create a copy of the nodeset to represent the actual nodes
|
# Create a copy of the nodeset to represent the actual nodes
|
||||||
# returned by nodepool.
|
# returned by nodepool.
|
||||||
nodeset = job.nodeset.copy()
|
nodeset = job.nodeset.copy()
|
||||||
req = NodeRequest(build_set, job, nodeset)
|
req = model.NodeRequest(build_set, job, nodeset)
|
||||||
self.requests[req.uid] = req
|
self.requests[req.uid] = req
|
||||||
|
|
||||||
self.sched.zk.submitNodeRequest(req, self._updateNodeRequest)
|
self.sched.zk.submitNodeRequest(req, self._updateNodeRequest)
|
||||||
|
@ -49,7 +49,7 @@ class Nodepool(object):
|
||||||
for node in nodeset.getNodes():
|
for node in nodeset.getNodes():
|
||||||
if node.lock is None:
|
if node.lock is None:
|
||||||
raise Exception("Node %s is not locked" % (node,))
|
raise Exception("Node %s is not locked" % (node,))
|
||||||
node.state = 'in-use'
|
node.state = model.STATE_IN_USE
|
||||||
self.sched.zk.storeNode(node)
|
self.sched.zk.storeNode(node)
|
||||||
|
|
||||||
def returnNodeset(self, nodeset):
|
def returnNodeset(self, nodeset):
|
||||||
|
@ -57,8 +57,8 @@ class Nodepool(object):
|
||||||
for node in nodeset.getNodes():
|
for node in nodeset.getNodes():
|
||||||
if node.lock is None:
|
if node.lock is None:
|
||||||
raise Exception("Node %s is not locked" % (node,))
|
raise Exception("Node %s is not locked" % (node,))
|
||||||
if node.state == 'in-use':
|
if node.state == model.STATE_IN_USE:
|
||||||
node.state = 'used'
|
node.state = model.STATE_USED
|
||||||
self.sched.zk.storeNode(node)
|
self.sched.zk.storeNode(node)
|
||||||
self._unlockNodes(nodeset.getNodes())
|
self._unlockNodes(nodeset.getNodes())
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ class Nodepool(object):
|
||||||
if request.uid not in self.requests:
|
if request.uid not in self.requests:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if request.state == 'fulfilled':
|
if request.state == model.STATE_FULFILLED:
|
||||||
self.log.info("Node request %s fulfilled" % (request,))
|
self.log.info("Node request %s fulfilled" % (request,))
|
||||||
|
|
||||||
# Give our results to the scheduler.
|
# Give our results to the scheduler.
|
||||||
|
|
Loading…
Reference in New Issue