summaryrefslogtreecommitdiff
diff options
authorDavid Ames <david.ames@canonical.com>2018-10-31 23:23:51 +0000
committerCanonial IS Mergebot <canonical-is-mergebot@canonical.com>2018-10-31 23:23:51 +0000
commitb4929647582f90fec8596b9274249b33bc2d5b17 (patch)
treef275b378fa286e5e8661f293f8519cd90745f708
parent136dbc1fd42a4d9d429046140485fb6433872e3b (diff)
parent71f1f76d04ff47d303ea04eb0739191d14618c89 (diff)
Series Upgrade
Implement the series-upgrade feature allowing to move between Ubuntu series. Reviewed-on: https://code.launchpad.net/~thedac/mongodb-charm/+git/mongodb-charm/+merge/356867 Reviewed-by: Xav Paice <xav.paice@canonical.com>
-rwxr-xr-xhooks/hooks.py34
l---------hooks/post-series-upgrade1
l---------hooks/pre-series-upgrade1
3 files changed, 36 insertions, 0 deletions
diff --git a/hooks/hooks.py b/hooks/hooks.py
index 93d8329..fe4c4de 100755
--- a/hooks/hooks.py
+++ b/hooks/hooks.py
@@ -612,6 +612,22 @@ def remove_replset_from_upstart():
return(retVal)
+def step_down_replset_primary():
+ """Steps down the primary
+ """
+ retVal = mongo_client('localhost', 'rs.stepDown()')
+ for i in xrange(MONGO_CLIENT_RETRIES):
+ if not am_i_primary():
+ juju_log("step_down_replset_primary returns: %s" % retVal,
+ level=DEBUG)
+ return(retVal)
+ # If we are still primary wait a bit more for step down
+ time.sleep(1.5)
+
+ # Raise an error if we exhausted the maximum amount of trials
+ raise TimeoutException('Unable to step down the primary')
+
+
def remove_rest_from_upstart():
"""Removes --rest from upstart script
"""
@@ -1830,6 +1846,24 @@ def write_logrotate_config(config_data,
return True
+@hooks.hook('pre-series-upgrade')
+def pre_series_upgrade():
+ juju_log("Running prepare series upgrade hook", "INFO")
+ if am_i_primary():
+ step_down_replset_primary()
+ service('stop', 'mongodb')
+ status_set(
+ "blocked",
+ "Ready for do-release-upgrade and reboot. "
+ "Set complete when finished.")
+
+
+@hooks.hook('post-series-upgrade')
+def post_series_upgrade():
+ juju_log("Running complete series upgrade hook", "INFO")
+ update_status()
+
+
###############################################################################
# Main section
###############################################################################
diff --git a/hooks/post-series-upgrade b/hooks/post-series-upgrade
new file mode 120000
index 0000000..9416ca6
--- /dev/null
+++ b/hooks/post-series-upgrade
@@ -0,0 +1 @@
+hooks.py \ No newline at end of file
diff --git a/hooks/pre-series-upgrade b/hooks/pre-series-upgrade
new file mode 120000
index 0000000..9416ca6
--- /dev/null
+++ b/hooks/pre-series-upgrade
@@ -0,0 +1 @@
+hooks.py \ No newline at end of file