From 9b80e0f7ade44d3677605d2c97718e4edb45b507 Mon Sep 17 00:00:00 2001 From: David Ames Date: Fri, 7 Sep 2018 16:27:15 -0700 Subject: [PATCH] Series Upgrade Implement the series-upgrade feature allowing to move between Ubuntu series. Change-Id: Ia4a4f0eb9f20780560f0244f3070cc6670d700c8 --- charmhelpers/contrib/openstack/utils.py | 20 +++++++++++++++++++- hooks/glance_relations.py | 18 ++++++++++++++++++ hooks/post-series-upgrade | 1 + hooks/pre-series-upgrade | 1 + 4 files changed, 39 insertions(+), 1 deletion(-) create mode 120000 hooks/post-series-upgrade create mode 120000 hooks/pre-series-upgrade diff --git a/charmhelpers/contrib/openstack/utils.py b/charmhelpers/contrib/openstack/utils.py index 24f5b808..bce5b593 100644 --- a/charmhelpers/contrib/openstack/utils.py +++ b/charmhelpers/contrib/openstack/utils.py @@ -186,7 +186,7 @@ SWIFT_CODENAMES = OrderedDict([ ('queens', ['2.16.0', '2.17.0']), ('rocky', - ['2.18.0']), + ['2.18.0', '2.19.0']), ]) # >= Liberty version->codename mapping @@ -1733,3 +1733,21 @@ def is_unit_upgrading_set(): return not(not(kv.get('unit-upgrading'))) except Exception: return False + + +def series_upgrade_prepare(pause_unit_helper=None, configs=None): + """ Run common series upgrade prepare tasks.""" + set_unit_upgrading() + if pause_unit_helper and configs: + if not is_unit_paused_set(): + pause_unit_helper(configs) + + +def series_upgrade_complete(resume_unit_helper=None, configs=None): + """ Run common series upgrade complete tasks.""" + clear_unit_paused() + clear_unit_upgrading() + if configs: + configs.write_all() + if resume_unit_helper: + resume_unit_helper(configs) diff --git a/hooks/glance_relations.py b/hooks/glance_relations.py index a0f814e0..fafe0ce8 100755 --- a/hooks/glance_relations.py +++ b/hooks/glance_relations.py @@ -54,6 +54,8 @@ from glance_utils import ( reinstall_paste_ini, is_api_ready, update_image_location_policy, + pause_unit_helper, + resume_unit_helper, ) from charmhelpers.core.hookenv import ( charm_dir, @@ -101,6 +103,8 @@ from charmhelpers.contrib.openstack.utils import ( pausable_restart_on_change as restart_on_change, is_unit_paused_set, os_requires_version, + series_upgrade_prepare, + series_upgrade_complete, ) from charmhelpers.contrib.storage.linux.ceph import ( send_request_if_needed, @@ -618,6 +622,20 @@ def certs_changed(relation_id=None, unit=None): configure_https() +@hooks.hook('pre-series-upgrade') +def pre_series_upgrade(): + juju_log("Running prepare series upgrade hook", "INFO") + series_upgrade_prepare( + pause_unit_helper, CONFIGS) + + +@hooks.hook('post-series-upgrade') +def post_series_upgrade(): + juju_log("Running complete series upgrade hook", "INFO") + series_upgrade_complete( + resume_unit_helper, CONFIGS) + + if __name__ == '__main__': try: hooks.execute(sys.argv) diff --git a/hooks/post-series-upgrade b/hooks/post-series-upgrade new file mode 120000 index 00000000..e955ca43 --- /dev/null +++ b/hooks/post-series-upgrade @@ -0,0 +1 @@ +glance_relations.py \ No newline at end of file diff --git a/hooks/pre-series-upgrade b/hooks/pre-series-upgrade new file mode 120000 index 00000000..e955ca43 --- /dev/null +++ b/hooks/pre-series-upgrade @@ -0,0 +1 @@ +glance_relations.py \ No newline at end of file