Skip to content

Commit

Permalink
Updates for charm/openstack upgrade testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Corey Bryant committed Oct 18, 2023
1 parent 18e5b6d commit 05797d3
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 29 deletions.
15 changes: 15 additions & 0 deletions unit_tests/utilities/test_zaza_utilities_upgrade_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,21 @@ def test_get_upgrade_groups(self):
actual,
expected)

def test_get_charm_upgrade_groups(self):
expected = [
('Database Services', []),
('Stateful Services', []),
('Core Identity', []),
('Control Plane', ['cinder']),
('Data Plane', ['nova-compute']),
('sweep_up', [])]
actual = openstack_upgrade.get_charm_upgrade_groups()
pprint.pprint(expected)
pprint.pprint(actual)
self.assertEqual(
actual,
expected)

def test_get_series_upgrade_groups(self):
expected = [
('Database Services', ['mydb']),
Expand Down
51 changes: 24 additions & 27 deletions zaza/openstack/charm_tests/charm_upgrade/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
"""Define class for Charm Upgrade."""

import logging
import re
import unittest

import zaza.model
from zaza.openstack.utilities import (
cli as cli_utils,
os_versions as os_versions,
upgrade_utils as upgrade_utils,
)
from zaza.openstack.charm_tests.nova.tests import LTSGuestCreateTest
Expand All @@ -36,19 +38,6 @@ def setUpClass(cls):
cli_utils.setup_logging()
cls.lts = LTSGuestCreateTest()
cls.lts.setUpClass()
cls.target_charm_namespace = '~openstack-charmers-next'

def get_upgrade_url(self, charm_url):
"""Return the charm_url to upgrade to.
:param charm_url: Current charm url.
:type charm_url: str
"""
charm_name = upgrade_utils.extract_charm_name_from_url(
charm_url)
next_charm_url = zaza.model.get_latest_charm_url(
"cs:{}/{}".format(self.target_charm_namespace, charm_name))
return next_charm_url

def test_200_run_charm_upgrade(self):
"""Run charm upgrade."""
Expand All @@ -63,20 +52,28 @@ def test_200_run_charm_upgrade(self):
for application, app_details in applications.items():
if application not in group:
continue
target_url = self.get_upgrade_url(app_details['charm'])
if target_url == app_details['charm']:
logging.warn(
"Skipping upgrade of {}, already using {}".format(
application,
target_url))
charm_channel = applications[application].charm_channel
charm_track, charm_risk = charm_channel.split('/')
slurp_track = r"[0-9]{4}\.1"
nonslurp_track = r"[0-9]{4}\.2"
if (re.match(charm_track, slurp_track) or
re.match(charm_track, nonslurp_track) or
os_versions.CompareOpenStack(charm_track) >= 'zed'):
new_charm_track, _ = (
upgrade_utils.determine_next_openstack_release(
charm_track))
else:
logging.info("Upgrading {} to {}".format(
application,
target_url))
zaza.model.upgrade_charm(
application,
switch=target_url)
logging.info("Waiting for charm url to update")
zaza.model.block_until_charm_url(application, target_url)
_, new_charm_track = (
upgrade_utils.determine_next_openstack_release(
charm_track))
new_charm_channel = f"{new_charm_track}/{charm_risk}"
self.assertNotEqual(charm_channel, new_charm_channel)
logging.info("Upgrading {} to {}".format(
application, new_charm_channel))
zaza.model.upgrade_charm(
application, channel=new_charm_channel)
logging.info("Waiting for charm channel to update")
zaza.model.block_until_charm_channel(
application, new_charm_channel)
zaza.model.block_until_all_units_idle()
self.lts.test_launch_small_instance()
32 changes: 30 additions & 2 deletions zaza/openstack/utilities/upgrade_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,33 @@
'swift-proxy', 'swift-storage']))

UPGRADE_EXCLUDE_LIST = [
'rabbitmq-server',
'ceph-fs',
'ceph-mon',
'ceph-osd',
'memcached',
'mysql-innodb-cluster',
'percona-cluster',
'percona-cluster',
'rabbitmq-server',
'vault',
'aodh-mysql-router',
'barbican-mysql-router',
'cinder-mysql-router',
'designate-mysql-router',
'glance-mysql-router',
'glance-simplestreams-sync',
'gnocchi-mysql-router',
'heat-mysql-router',
'keystone-mysql-router',
'magnum-mysql-router',
'manila-ganesha-mysql-router',
'manila-mysql-router',
'neutron-mysql-router',
'nova-mysql-router',
'octavia-mysql-router',
'placement-mysql-router',
'vault-mysql-router',
'watcher-mysql-router',
]


Expand Down Expand Up @@ -231,7 +255,11 @@ def get_charm_upgrade_groups(model_name=None, extra_filters=None):
:returns: Dict of group lists keyed on group name.
:rtype: collections.OrderedDict
"""
filters = _apply_extra_filters([], extra_filters)
filters = [
_filter_openstack_upgrade_list,
_filter_non_openstack_services,
]
filters = _apply_extra_filters(filters, extra_filters)
apps_in_model = get_upgrade_candidates(
model_name=model_name,
filters=filters)
Expand Down

0 comments on commit 05797d3

Please sign in to comment.