Series Upgrade

Implement the series-upgrade feature allowing to move between Ubuntu
series.

Change-Id: I68ba3ac518406c61ba1a6c61fd3236a0d8cb5d16
This commit is contained in:
David Ames 2018-10-19 15:26:10 -07:00
parent 04606d8b67
commit 5019cca86d
2 changed files with 27 additions and 2 deletions

View File

@ -584,6 +584,12 @@ def _assess_status():
'vip and dns-ha-access-record configured')
return
if unitdata.kv().get('charm.vault.series-upgrading'):
status_set("blocked",
"Ready for do-release-upgrade and reboot. "
"Set complete when finished.")
return
health = None
if service_running('vault'):
health = vault.get_vault_health()
@ -721,3 +727,19 @@ def create_certs():
log(str(e), level=ERROR)
continue # TODO: report failure back to client
clear_flag('certificates.reissue.requested')
# Series upgrade hooks are a special case and reacting to the hook directly
# makes sense as we may not want other charm code to run
@hook('pre-series-upgrade')
def pre_series_upgrade():
"""Handler for pre-series-upgrade.
"""
unitdata.kv().set('charm.vault.series-upgrading', True)
@hook('post-series-upgrade')
def post_series_upgrade():
"""Handler for post-series-upgrade.
"""
unitdata.kv().set('charm.vault.series-upgrading', False)

View File

@ -74,6 +74,9 @@ class TestHandlers(unit_tests.test_utils.CharmTestCase):
]
self.patch_all()
self.is_container.return_value = False
self.kv = mock.MagicMock()
self.kv.get.return_value = False
self.unitdata.kv.return_value = self.kv
def test_ssl_available(self):
self.assertFalse(handlers.ssl_available({
@ -563,8 +566,8 @@ class TestHandlers(unit_tests.test_utils.CharmTestCase):
hvac_client.auth_approle.assert_called_once_with('local-approle')
_vault.configure_secret_backend.assert_has_calls([
mock.call(hvac_client, name='charm-vaultlocker'),
mock.call(hvac_client, name='charm-supersecrets')
])
mock.call(hvac_client, name='charm-supersecrets'),
], any_order=True)
_vault.configure_policy.assert_has_calls([
mock.call(hvac_client, name='charm-ceph-osd-0', hcl=mock.ANY),