Merge "Use constants for state names" into feature/zuulv3

This commit is contained in:
Jenkins 2017-01-18 22:12:48 +00:00 committed by Gerrit Code Review
commit 0338b76917
2 changed files with 37 additions and 13 deletions

View File

@ -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()

View File

@ -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.