rubick/ostack_validator/model_parser.py

35 lines
1.2 KiB
Python

import logging
from ostack_validator.common import Version
from ostack_validator.model import *
from ostack_validator.resource import ConfigSnapshotResourceLocator
from ostack_validator.config_formats import IniConfigParser
OPENSTACK_COMPONENTS = ['nova', 'keystone', 'glance']
class ModelParser(object):
logger = logging.getLogger('ostack_validator.ModelParser')
def parse(self, path):
resource_locator = ConfigSnapshotResourceLocator(path)
hosts = []
for host_name in resource_locator.find_hosts():
components = []
for component_name in resource_locator.find_host_components(host_name):
if not component_name in OPENSTACK_COMPONENTS:
self.logger.warn('Unknown component in config: %s', component_name)
continue
component_version = Version(1000000) # very latest version
version_resource = resource_locator.find_resource(host_name, component_name, 'version')
if version_resource:
component_version = Version(version_resource.get_contents())
components.append(OpenstackComponent(component_name, component_version))
hosts.append(Host(host_name, {}, components))
return Openstack(hosts, resource_locator, IniConfigParser())