Validation check for missing openstack diskimages
Having a diskimage in an openstack provider which isn't defined as a top-level diskimage causes nodepool-builder to fail. Check for this condition in the config-validator. Change-Id: I2862386e20292fd370635b5ff45086937482dfde
This commit is contained in:
committed by
Jeremy Stanley
parent
b2d4e3c356
commit
0293064ed9
@@ -124,10 +124,18 @@ class ConfigValidator:
|
||||
|
||||
# Ensure in openstack provider sections, diskimages have
|
||||
# top-level labels
|
||||
diskimages = [x['name'] for x in config.get('diskimages', [])]
|
||||
labels = [x['name'] for x in config.get('labels', [])]
|
||||
for provider in config.get('providers', []):
|
||||
if provider.get('driver', 'openstack') != 'openstack':
|
||||
continue
|
||||
for diskimage in provider.get('diskimages', []):
|
||||
if diskimage['name'] not in diskimages:
|
||||
errors = True
|
||||
log.error("diskimage %s in provider %s is not defined in "
|
||||
"the main diskimages list" %
|
||||
(diskimage['name'], provider['name']))
|
||||
|
||||
for pool in provider.get('pools', []):
|
||||
for label in pool.get('labels', []):
|
||||
if label['name'] not in labels:
|
||||
|
||||
9
nodepool/tests/fixtures/config_validate/missing_diskimage_provider.yaml
vendored
Normal file
9
nodepool/tests/fixtures/config_validate/missing_diskimage_provider.yaml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
providers:
|
||||
- name: cloud1
|
||||
driver: openstack
|
||||
cloud: vanilla-cloud
|
||||
diskimages:
|
||||
- name: wrong
|
||||
|
||||
diskimages:
|
||||
- name: right
|
||||
@@ -76,6 +76,15 @@ class TestConfigValidation(tests.BaseTestCase):
|
||||
ret = validator.validate()
|
||||
self.assertEqual(ret, 1)
|
||||
|
||||
def test_missing_diskimage_provider(self):
|
||||
config = os.path.join(os.path.dirname(tests.__file__),
|
||||
'fixtures', 'config_validate',
|
||||
'missing_diskimage_provider.yaml')
|
||||
|
||||
validator = ConfigValidator(config)
|
||||
ret = validator.validate()
|
||||
self.assertEqual(ret, 1)
|
||||
|
||||
def test_schema(self):
|
||||
config = os.path.join(os.path.dirname(tests.__file__),
|
||||
'fixtures', 'config_validate',
|
||||
|
||||
Reference in New Issue
Block a user