Merge pull request #148 from thedac/series-upgrade-generic-non-leader-first

More generic non leader first series upgrade
This commit is contained in:
David Ames
2018-10-29 10:19:51 -07:00
committed by GitHub
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: