Fix for pools with different labels
Pools within the same provider that have different labels are attempting to handle requests for ALL labels defined within the provider. This is due to change I61263f51be5e957de71d1e2dabaa7391bbe7bddf which incorrectly changed from getting supported labels from per-pool to per-provider. This modifies the getSupportedLabels() API to support pools. Change-Id: I7a0d472928c6b528f6faa6dd3b9cf1479874cb22
This commit is contained in:
parent
3e0a822bf6
commit
c08eb291f7
@ -373,7 +373,7 @@ class NodeRequestHandler(NodeRequestHandlerNotifications,
|
||||
list if all are valid.
|
||||
'''
|
||||
invalid = []
|
||||
valid = self.provider.getSupportedLabels()
|
||||
valid = self.provider.getSupportedLabels(self.pool.name)
|
||||
for ntype in self.request.node_types:
|
||||
if ntype not in valid:
|
||||
invalid.append(ntype)
|
||||
@ -859,8 +859,10 @@ class ProviderConfig(ConfigValue, metaclass=abc.ABCMeta):
|
||||
pass
|
||||
|
||||
@abc.abstractmethod
|
||||
def getSupportedLabels(self):
|
||||
def getSupportedLabels(self, pool_name=None):
|
||||
'''
|
||||
Return a set of label names supported by this provider.
|
||||
|
||||
:param str pool_name: If provided, get labels for the given pool only.
|
||||
'''
|
||||
pass
|
||||
|
@ -385,8 +385,9 @@ class OpenStackProviderConfig(ProviderConfig):
|
||||
'cloud-images': [provider_cloud_images],
|
||||
})
|
||||
|
||||
def getSupportedLabels(self):
|
||||
def getSupportedLabels(self, pool_name=None):
|
||||
labels = set()
|
||||
for pool in self.pools.values():
|
||||
labels.update(pool.labels.keys())
|
||||
if not pool_name or (pool.name == pool_name):
|
||||
labels.update(pool.labels.keys())
|
||||
return labels
|
||||
|
@ -109,8 +109,9 @@ class StaticProviderConfig(ProviderConfig):
|
||||
}
|
||||
return v.Schema({'pools': [pool]})
|
||||
|
||||
def getSupportedLabels(self):
|
||||
def getSupportedLabels(self, pool_name=None):
|
||||
labels = set()
|
||||
for pool in self.pools.values():
|
||||
labels.update(pool.labels)
|
||||
if not pool_name or (pool.name == pool_name):
|
||||
labels.update(pool.labels)
|
||||
return labels
|
||||
|
@ -57,5 +57,5 @@ class TestConfig(ProviderConfig):
|
||||
'labels': [str]}
|
||||
return v.Schema({'pools': [pool]})
|
||||
|
||||
def getSupportedLabels(self):
|
||||
def getSupportedLabels(self, pool_name=None):
|
||||
return self.labels
|
||||
|
Loading…
x
Reference in New Issue
Block a user