diff --git a/zaza/openstack/charm_tests/hacluster/tests.py b/zaza/openstack/charm_tests/hacluster/tests.py index fb9d8e2..ebffb84 100644 --- a/zaza/openstack/charm_tests/hacluster/tests.py +++ b/zaza/openstack/charm_tests/hacluster/tests.py @@ -49,6 +49,10 @@ class HaclusterTest(test_utils.OpenStackBaseTest): if primary_status["units"][leader].get("subordinates"): for subordinate in primary_status["units"][leader]["subordinates"]: + # mysql-router is a subordinate from focal onwards + _app = subordinate.split('/')[0] + if _app != 'hacluster': + continue logging.info("Cleaning {}".format(subordinate)) _action = "cleanup" action_id = zaza.model.run_action(subordinate, "cleanup") @@ -84,6 +88,10 @@ class HaclusterTest(test_utils.OpenStackBaseTest): if primary_status["units"][leader].get("subordinates"): for subordinate in primary_status["units"][leader]["subordinates"]: + # mysql-router is a subordinate from focal onwards + _app = subordinate.split('/')[0] + if _app != 'hacluster': + continue logging.info("Pausing {}".format(subordinate)) zaza.model.run_action(subordinate, "pause") zaza.model.block_until_unit_wl_status( diff --git a/zaza/openstack/charm_tests/test_utils.py b/zaza/openstack/charm_tests/test_utils.py index 137f096..ae431c1 100644 --- a/zaza/openstack/charm_tests/test_utils.py +++ b/zaza/openstack/charm_tests/test_utils.py @@ -254,6 +254,44 @@ class BaseCharmTest(unittest.TestCase): # TODO: Optimize with a block on a specific application until idle. model.block_until_all_units_idle() + def restart_on_changed_debug_oslo_config_file(self, config_file, services, + config_section='DEFAULT'): + """Check restart happens on config change by flipping debug mode. + + Change debug mode and assert that change propagates to the correct + file and that services are restarted as a result. config_file must be + an oslo config file and debug option must be set in the + `config_section` section. + + :param config_file: OSLO Config file to check for settings + :type config_file: str + :param services: Services expected to be restarted when config_file is + changed. + :type services: list + """ + # Expected default and alternate values + current_value = model.get_application_config( + self.application_name)['debug']['value'] + new_value = str(not bool(current_value)).title() + current_value = str(current_value).title() + + set_default = {'debug': current_value} + set_alternate = {'debug': new_value} + default_entry = {config_section: {'debug': [current_value]}} + alternate_entry = {config_section: {'debug': [new_value]}} + + # Make config change, check for service restarts + logging.info( + 'Changing settings on {} to {}'.format( + self.application_name, set_alternate)) + self.restart_on_changed( + config_file, + set_default, + set_alternate, + default_entry, + alternate_entry, + services) + def restart_on_changed(self, config_file, default_config, alternate_config, default_entry, alternate_entry, services, pgrep_full=False):