38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from common import Error, MarkedError, Mark
|
|
from model import *
|
|
|
|
import unittest
|
|
|
|
from ostack_validator.common import Inspection
|
|
from ostack_validator.schema import ConfigSchemaRegistry
|
|
|
|
class MainConfigValidationInspection(Inspection):
|
|
def inspect(self, openstack):
|
|
results = []
|
|
for host in openstack.hosts:
|
|
for component in host.components:
|
|
main_config = component.get_config()
|
|
|
|
if not main_config:
|
|
results.append(Error('Missing main configuration file for component "%s" at host "%s"' % (component.name, host.name)))
|
|
continue
|
|
|
|
schema = ConfigSchemaRegistry.get_schema(component.name, component.version, main_config.name)
|
|
if not schema: continue
|
|
|
|
for parameter in main_config.parameters:
|
|
parameter_schema = schema.get_parameter(name=parameter.name, section=parameter.section)
|
|
# TBD: should we report unknown config parameters?
|
|
if not parameter_schema: continue
|
|
|
|
type_descriptor = TypeDescriptorRepository.get_type(parameter_schema.type)
|
|
type_validation_result = type_descriptor.validate(parameter.value)
|
|
if type_validation_result:
|
|
results.append(type_validation_result)
|
|
|
|
return results
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|