From 06f181beaacccdc520c3b30ee5242b9107e12d61 Mon Sep 17 00:00:00 2001 From: David Ames Date: Fri, 5 Oct 2018 11:03:25 -0700 Subject: [PATCH] Juju daemons remain up after pre-series-upgrade The latest edge version of juju has the juju daemons remain up after the completion of the pre-series-upgrade hook. This is a slight change in behavior which requires a change to the zaza process. But it also allows us to test for model idleness which we could not do when the agents were down. This should avoid more race conditions. --- zaza/utilities/generic.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/zaza/utilities/generic.py b/zaza/utilities/generic.py index c062e2f..5322f57 100644 --- a/zaza/utilities/generic.py +++ b/zaza/utilities/generic.py @@ -237,8 +237,12 @@ def series_upgrade_application(application, pause_non_leader_primary=True, files=files) completed_machines.append(machine) else: - logging.info("Skipping unit: {}. Machine: {} already upgraded" - .format(unit, machine)) + logging.info("Skipping unit: {}. Machine: {} already upgraded." + "But setting origin on the application {}" + .format(unit, machine, application)) + logging.info("Set origin on {}".format(application)) + set_origin(application, origin) + model.block_until_all_units_idle() # Series upgrade the non-leaders for unit in non_leaders: @@ -252,8 +256,12 @@ def series_upgrade_application(application, pause_non_leader_primary=True, files=files) completed_machines.append(machine) else: - logging.info("Skipping unit: {}. Machine: {} already upgraded" - .format(unit, machine)) + logging.info("Skipping unit: {}. Machine: {} already upgraded. " + "But setting origin on the application {}" + .format(unit, machine, application)) + logging.info("Set origin on {}".format(application)) + set_origin(application, origin) + model.block_until_all_units_idle() def series_upgrade(unit_name, machine_num, @@ -285,9 +293,11 @@ def series_upgrade(unit_name, machine_num, set_dpkg_non_interactive_on_unit(unit_name) logging.info("Prepare series upgrade on {}".format(machine_num)) model.prepare_series_upgrade(machine_num, to_series=to_series) - logging.info("Watiing for workload status 'unknown' on {}" + logging.info("Watiing for workload status 'blocked' on {}" .format(unit_name)) - model.block_until_unit_wl_status(unit_name, "unknown") + model.block_until_unit_wl_status(unit_name, "blocked") + logging.info("Watiing for model idleness") + model.block_until_all_units_idle() wrap_do_release_upgrade(unit_name, from_series=from_series, to_series=to_series, files=files, workaround_script=workaround_script)