More generic non leader first series upgrade

Make the series_upgrade_mongodb less specific to mongodb. We may
eventually use this to series upgrade vault.

Fix bug in the generalized series_upgrade_non_leaders_first.

Fix change in switch --agree to --yes.
This commit is contained in:
David Ames
2018-10-19 09:42:30 -07:00
parent 4f4cccb80f
commit 3338fe89ba
4 changed files with 13 additions and 15 deletions
+1 -1
View File
@@ -983,7 +983,7 @@ disk_formats = ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso,root-tar
model.prepare_series_upgrade(_machine_num, to_series=_to_series)
self.subprocess.check_call.assert_called_once_with(
["juju", "upgrade-series", "-m", self.model_name,
"prepare", _machine_num, _to_series, "--agree"])
"prepare", _machine_num, _to_series, "--yes"])
def test_complete_series_upgrade(self):
self.patch_object(model, 'get_juju_model',
+5 -4
View File
@@ -74,10 +74,11 @@ class SeriesUpgradeTest(unittest.TestCase):
origin = None
pause_non_leader_primary = False
pause_non_leader_subordinate = False
if "mongodb" in applications[application]["charm"]:
# Mongodb is sligthly different. It needs to run series upgrade
# on its secondaries first. It has its own function.
generic_utils.series_upgrade_mongodb(
if ("mongodb" in applications[application]["charm"] or
"vault" in applications[application]["charm"]):
# Mongodb and vault need to run series upgrade
# on its secondaries first.
generic_utils.series_upgrade_non_leaders_first(
application,
from_series=self.from_series,
to_series=self.to_series,
+1 -1
View File
@@ -1206,7 +1206,7 @@ def prepare_series_upgrade(machine_num, to_series="xenial"):
"""
juju_model = get_juju_model()
cmd = ["juju", "upgrade-series", "-m", juju_model,
"prepare", machine_num, to_series, "--agree"]
"prepare", machine_num, to_series, "--yes"]
subprocess.check_call(cmd)
+6 -9
View File
@@ -170,12 +170,13 @@ def get_yaml_config(config_file):
return yaml.load(open(config_file, 'r').read())
def series_upgrade_mongodb(application, from_series="trusty",
to_series="xenial", completed_machines=[]):
"""Series upgrade mongodb.
def series_upgrade_non_leaders_first(application, from_series="trusty",
to_series="xenial",
completed_machines=[]):
"""Series upgrade non leaders first.
Wrap all the functionality to handle series upgrade for mongodb.
Mongodb must have its secondaries upgraded first.
Wrap all the functionality to handle series upgrade for charms
which must have non leaders upgraded first.
:param application: Name of application to upgrade series
:type application: str
@@ -206,8 +207,6 @@ def series_upgrade_mongodb(application, from_series="trusty",
.format(unit))
series_upgrade(unit, machine,
from_series=from_series, to_series=to_series,
pause_non_leader_primary=False,
pause_non_leader_subordinate=False,
origin=None)
completed_machines.append(machine)
else:
@@ -221,8 +220,6 @@ def series_upgrade_mongodb(application, from_series="trusty",
if machine not in completed_machines:
series_upgrade(leader, machine,
from_series=from_series, to_series=to_series,
pause_non_leader_primary=False,
pause_non_leader_subordinate=False,
origin=None)
completed_machines.append(machine)
else: