diff options
author | David Ames <david.ames@canonical.com> | 2018-10-31 23:23:51 +0000 |
---|---|---|
committer | Canonial IS Mergebot <canonical-is-mergebot@canonical.com> | 2018-10-31 23:23:51 +0000 |
commit | b4929647582f90fec8596b9274249b33bc2d5b17 (patch) | |
tree | f275b378fa286e5e8661f293f8519cd90745f708 | |
parent | 136dbc1fd42a4d9d429046140485fb6433872e3b (diff) | |
parent | 71f1f76d04ff47d303ea04eb0739191d14618c89 (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-x | hooks/hooks.py | 34 | ||||
l--------- | hooks/post-series-upgrade | 1 | ||||
l--------- | hooks/pre-series-upgrade | 1 |
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 |