Added basic version detection of openstack components

This commit is contained in:
Maxim Kulkin 2013-09-30 16:16:03 +04:00
parent 1e4ac9d413
commit 576cc34fb0
2 changed files with 22 additions and 15 deletions

View File

@ -10,7 +10,7 @@ def print_components(openstack):
for host in openstack.hosts:
print('Host %s (addresses = %s):' % (host.name, ', '.join(host.network_addresses)))
for service in host.components:
print('Service %s config %s' % (service.name, service.config_path))
print('Service %s version %s config %s' % (service.name, service.version, service.config_path))
service.config
# print_service_config(service)

View File

@ -38,9 +38,8 @@ class OpenstackComponent(Service):
logger = logging.getLogger('ostack_validator.model.openstack_component')
component = None
def __init__(self, version, config_path):
def __init__(self, config_path):
super(OpenstackComponent, self).__init__()
self.version = version
self.config_path = config_path
self.config_dir = os.path.dirname(config_path)
@ -66,6 +65,23 @@ class OpenstackComponent(Service):
self._config = self._parse_config_file(Mark('%s:%s' % (self.host.name, self.config_path)), config_contents, schema, self.openstack)
return self._config
@property
def version(self):
if not hasattr(self, '_version'):
result = self.host.client.run(['python', '-c', 'import pkg_resources; version = pkg_resources.get_provider(pkg_resources.Requirement.parse("%s")).version; print(version)' % self.component])
s = result.output.strip()
parts = []
for p in s.split('.'):
if not p[0].isdigit(): break
parts.append(p)
self._version = '.'.join(parts)
return self._version
def _parse_config_file(self, base_mark, config_contents, schema=None, issue_reporter=None):
@ -232,10 +248,7 @@ class OpenstackDiscovery(object):
else:
config_file = '/etc/keystone/keystone.conf'
# TODO: Implement me
version = '2013.1.3'
host.add_component(KeystoneComponent(version, config_file))
host.add_component(KeystoneComponent(config_file))
glance_api_process = self._find_python_process(processes, 'glance-api')
if glance_api_process:
@ -245,10 +258,7 @@ class OpenstackDiscovery(object):
else:
config_file = '/etc/glance/glance-api.conf'
# TODO: Implement me
version = '2013.1.3'
host.add_component(GlanceApiComponent(version, config_file))
host.add_component(GlanceApiComponent(config_file))
nova_compute_process = self._find_python_process(processes, 'nova-compute')
if nova_compute_process:
@ -258,10 +268,7 @@ class OpenstackDiscovery(object):
else:
config_file = '/etc/nova/nova.conf'
# TODO: Implement me
version = '2013.1.3'
host.add_component(NovaComputeComponent(version, config_file))
host.add_component(NovaComputeComponent(config_file))
return host