Update status message if new version of vault is installed

As part of snap auto-updates, new versions of vault get installed when
available. But manual intervention is required to restart the vault
service. This patch updates the status message to inform the same to
the user.

Closes-Bug: #1895577

Change-Id: I995069bc151c1db5061c52b9d89d014be6b6a556
This commit is contained in:
Hemanth Nakkina 2020-09-25 11:50:20 +05:30
parent 59a4e926bb
commit ca32e36ad0
2 changed files with 28 additions and 0 deletions

View File

@ -754,6 +754,15 @@ def _assess_status():
mlock_disabled = is_container() or config('disable-mlock')
vault_installed_version = snap.get_installed_version('vault')
vault_running_version = health.get('version')
if vault_installed_version != vault_running_version:
status_set(
'active',
'New version of vault installed, manual intervention required '
'to restart the service.')
return
status_set(
'active',
'Unit is ready '

View File

@ -324,6 +324,7 @@ class TestHandlers(unit_tests.test_utils.CharmTestCase):
_assess_interface_groups,
_client_approle_authorized,
_leader_get):
self.snap.get_installed_version.return_value = '0.9.0'
self.is_flag_set.return_value = False
get_vault_health.return_value = self._health_response
_assess_interface_groups.return_value = []
@ -431,6 +432,24 @@ class TestHandlers(unit_tests.test_utils.CharmTestCase):
self.status_set.assert_called_with(
'blocked', 'Unit is sealed')
@patch.object(handlers, 'leader_get')
@patch.object(handlers, 'client_approle_authorized')
@patch.object(handlers, '_assess_interface_groups')
@patch.object(handlers.vault, 'get_vault_health')
def test_assess_status_vault_snap_refresh(self, get_vault_health,
_assess_interface_groups,
_client_approle_authorized,
_leader_get):
# New version of vault installed 0.9.1
self.snap.get_installed_version.return_value = '0.9.1'
self.is_flag_set.return_value = False
get_vault_health.return_value = self._health_response
handlers._assess_status()
self.status_set.assert_called_with(
'active',
'New version of vault installed, manual intervention '
'required to restart the service.')
def test_assess_interface_groups(self):
flags = {
'db.master.available': True,