Ignore unrelated error labels in request handler
Nodepool was declining node requests when other unrelated instance types of a provider were unavailable: Declining node request <NodeRequest {... 'node_types': ['ubuntu'], ... }> due to ['node type(s) [ubuntu-invalid] not available'] To fix this we will the check error labels against the requested labels before including them in the list of invalid node types. Change-Id: I7bbb3b813ca82baf80821a9e84cc10385ea95a01
This commit is contained in:
parent
49e7dab5f5
commit
2aeaee92f1
@ -429,6 +429,7 @@ class NodeRequestHandler(NodeRequestHandlerNotifications,
|
||||
if ntype not in valid:
|
||||
invalid.add(ntype)
|
||||
for ntype in self.manager.errorLabels():
|
||||
if ntype in self.request.node_types:
|
||||
invalid.add(ntype)
|
||||
return invalid
|
||||
|
||||
|
7
nodepool/tests/fixtures/aws/aws-invalid.yaml
vendored
7
nodepool/tests/fixtures/aws/aws-invalid.yaml
vendored
@ -13,6 +13,7 @@ tenant-resource-limits:
|
||||
max-cores: 1024
|
||||
|
||||
labels:
|
||||
- name: ubuntu-invalid
|
||||
- name: ubuntu
|
||||
|
||||
providers:
|
||||
@ -32,7 +33,11 @@ providers:
|
||||
key1: value1
|
||||
key2: value2
|
||||
labels:
|
||||
- name: ubuntu
|
||||
- name: ubuntu-invalid
|
||||
cloud-image: ubuntu
|
||||
instance-type: t3.nope
|
||||
key-name: zuul
|
||||
- name: ubuntu
|
||||
cloud-image: ubuntu
|
||||
instance-type: t3.medium
|
||||
key-name: zuul
|
||||
|
@ -756,10 +756,21 @@ class TestDriverAws(tests.DBTestCase):
|
||||
self.assertTrue(response['EbsOptimized']['Value'])
|
||||
|
||||
def test_aws_invalid_instance_type(self):
|
||||
req = self.requestNode('aws/aws-invalid.yaml', 'ubuntu')
|
||||
req = self.requestNode('aws/aws-invalid.yaml', 'ubuntu-invalid')
|
||||
self.assertEqual(req.state, zk.FAILED)
|
||||
self.assertEqual(req.nodes, [])
|
||||
|
||||
# Make sure other instance types are not affected
|
||||
req = zk.NodeRequest()
|
||||
req.state = zk.REQUESTED
|
||||
req.tenant_name = 'tenant-1'
|
||||
req.node_types.append('ubuntu')
|
||||
self.zk.storeNodeRequest(req)
|
||||
|
||||
req = self.waitForNodeRequest(req)
|
||||
self.assertEqual(req.state, zk.FULFILLED)
|
||||
self.assertEqual(len(req.nodes), 1)
|
||||
|
||||
def test_aws_diskimage_snapshot(self):
|
||||
self.fake_aws.fail_import_count = 1
|
||||
configfile = self.setup_config('aws/diskimage.yaml')
|
||||
|
Loading…
x
Reference in New Issue
Block a user