Merge "Don't touch static nodes that are allocated"

This commit is contained in:
Zuul 2019-10-10 19:26:01 +00:00 committed by Gerrit Code Review
commit 2defa1ee67
2 changed files with 25 additions and 0 deletions

View File

@ -88,6 +88,7 @@ class StaticNodeProvider(Provider):
for node in self.zk.nodeIterator():
if (node.provider != self.provider.name or
node.state != zk.READY or
node.allocated_to is not None or
nodeTuple(node) != node_tuple
):
continue

View File

@ -274,6 +274,30 @@ class TestDriverStatic(tests.DBTestCase):
self.waitForNodeDeletion(node)
self.waitForNodeRequest(req_waiting, zk.FULFILLED)
def test_static_ignore_assigned_ready_nodes(self):
"""Regression test to not touch assigned READY nodes"""
configfile = self.setup_config('static-basic.yaml')
pool = self.useNodepool(configfile, watermark_sleep=1)
# Make sure the cleanup worker is called that reallocated the node
pool.cleanup_interval = .1
pool.start()
req = zk.NodeRequest()
req.state = zk.REQUESTED
req.node_types.append('fake-label')
self.zk.storeNodeRequest(req)
req = self.waitForNodeRequest(req, zk.FULFILLED)
req_waiting = zk.NodeRequest()
req_waiting.state = zk.REQUESTED
req_waiting.node_types.append('fake-label')
self.zk.storeNodeRequest(req_waiting)
req_waiting = self.waitForNodeRequest(req_waiting, zk.PENDING)
# Make sure the node is not reallocated
node = self.zk.getNode(req.nodes[0])
self.assertIsNotNone(node)
def test_static_handler_race_cleanup(self):
configfile = self.setup_config('static-basic.yaml')
pool = self.useNodepool(configfile, watermark_sleep=1)