Add release comparison options
This commit is contained in:
@@ -20,14 +20,32 @@ import unittest
|
||||
|
||||
import zaza.model as model
|
||||
import zaza.charm_lifecycle.utils as utils
|
||||
import zaza.utilities.openstack as zaza_openstack
|
||||
|
||||
|
||||
def _make_test_function(application, file_details):
|
||||
def test(self):
|
||||
until = file_details.get('until')
|
||||
since = file_details.get('since')
|
||||
expected_owner = file_details.get("owner", "root")
|
||||
expected_group = file_details.get("group", "root")
|
||||
expected_mode = file_details.get("mode", "600")
|
||||
for unit in model.get_units(application):
|
||||
# Have we configured a until or since for this file?
|
||||
if until or since:
|
||||
release = zaza_openstack \
|
||||
.get_current_os_release_pair(application).split('_')[-1]
|
||||
current_release = zaza_openstack.get_os_release(release)
|
||||
if until:
|
||||
until_release = zaza_openstack.get_os_release(until)
|
||||
if current_release >= until_release:
|
||||
return self.skipTest("{!r} is before {!r}".
|
||||
format(until, release))
|
||||
if since:
|
||||
since_release = zaza_openstack.get_os_release(since)
|
||||
if current_release <= since_release:
|
||||
return self.skipTest("{!r} is after {!r}".
|
||||
format(since, release))
|
||||
unit = unit.entity_id
|
||||
result = model.run_on_unit(
|
||||
unit, 'stat -c "%U %G %a" {}'.format(file_details['path']))
|
||||
@@ -58,9 +76,14 @@ def _add_tests():
|
||||
if name in deployed_applications:
|
||||
for file in attributes['files']:
|
||||
test_func = _make_test_function(name, file)
|
||||
test_name = 'test_{}_{}'.format(name, file['path'])
|
||||
if file.get('until'):
|
||||
test_name += '_until_{}'.format(file['until'])
|
||||
if file.get('since'):
|
||||
test_name += '_since_{}'.format(file['since'])
|
||||
setattr(
|
||||
cls,
|
||||
'test_{}_{}'.format(name, file['path']),
|
||||
test_name,
|
||||
test_func)
|
||||
return cls
|
||||
return class_decorator
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
This module contains a number of functions for interacting with Openstack.
|
||||
"""
|
||||
from .os_versions import (
|
||||
CEPH_CODENAMES,
|
||||
OPENSTACK_CODENAMES,
|
||||
SWIFT_CODENAMES,
|
||||
PACKAGE_CODENAMES,
|
||||
@@ -95,6 +96,14 @@ CHARM_TYPES = {
|
||||
'pkg': 'ceilometer-common',
|
||||
'origin_setting': 'openstack-origin'
|
||||
},
|
||||
'ceph-mon': {
|
||||
'pkg': 'ceph',
|
||||
'origin_setting': 'source'
|
||||
},
|
||||
'ceph-osd': {
|
||||
'pkg': 'ceph',
|
||||
'origin_setting': 'source'
|
||||
},
|
||||
}
|
||||
UPGRADE_SERVICES = [
|
||||
{'name': 'keystone', 'type': CHARM_TYPES['keystone']},
|
||||
@@ -107,6 +116,8 @@ UPGRADE_SERVICES = [
|
||||
{'name': 'openstack-dashboard',
|
||||
'type': CHARM_TYPES['openstack-dashboard']},
|
||||
{'name': 'ceilometer', 'type': CHARM_TYPES['ceilometer']},
|
||||
{'name': 'ceph-mon', 'type': CHARM_TYPES['ceph-mon']},
|
||||
{'name': 'ceph-osd', 'type': CHARM_TYPES['ceph-osd']},
|
||||
]
|
||||
|
||||
|
||||
@@ -1099,6 +1110,11 @@ def create_floating_ip(neutron_client, network_name, port=None):
|
||||
return floatingip
|
||||
|
||||
|
||||
def get_ceph_codename(version):
|
||||
"""Determine ceph package version from version number."""
|
||||
return CEPH_CODENAMES[version]
|
||||
|
||||
|
||||
# Codename and package versions
|
||||
def get_swift_codename(version):
|
||||
"""Determine OpenStack codename that corresponds to swift version.
|
||||
@@ -1146,6 +1162,8 @@ def get_os_code_info(package, pkg_version):
|
||||
# < Liberty co-ordinated project versions
|
||||
if 'swift' in package:
|
||||
return get_swift_codename(vers)
|
||||
elif 'ceph' in package:
|
||||
return get_ceph_codename(vers)
|
||||
else:
|
||||
return OPENSTACK_CODENAMES[vers]
|
||||
|
||||
@@ -1220,7 +1238,15 @@ def get_os_release(release_pair=None):
|
||||
if release_pair is None:
|
||||
release_pair = get_current_os_release_pair()
|
||||
try:
|
||||
index = OPENSTACK_RELEASES_PAIRS.index(release_pair)
|
||||
try:
|
||||
release_codename = release_pair.split('_')[-1]
|
||||
except AttributeError:
|
||||
release_codename = release_pair
|
||||
ceph_releases = list(CEPH_CODENAMES.values())
|
||||
if release_codename in ceph_releases:
|
||||
index = ceph_releases.index(release_codename)
|
||||
else:
|
||||
index = OPENSTACK_RELEASES_PAIRS.index(release_pair)
|
||||
except ValueError:
|
||||
msg = 'Release pair: {} not found in {}'.format(
|
||||
release_pair,
|
||||
|
||||
@@ -94,6 +94,15 @@ SWIFT_CODENAMES = OrderedDict([
|
||||
['2.18.0', '2.19.0']),
|
||||
])
|
||||
|
||||
# Map UCA codenames to ceph codenames
|
||||
CEPH_CODENAMES = OrderedDict({
|
||||
'0.80': 'firefly',
|
||||
'0.94': 'hammer',
|
||||
'10.2': 'jewel',
|
||||
'12.2': 'luminous',
|
||||
'13.2': 'mimic',
|
||||
})
|
||||
|
||||
# >= Liberty version->codename mapping
|
||||
PACKAGE_CODENAMES = {
|
||||
'nova-common': OrderedDict([
|
||||
|
||||
Reference in New Issue
Block a user