Merge "Fix broken v4 caching due to leader-get asymmetry"

This commit is contained in:
Zuul 2023-08-09 16:34:45 +00:00 committed by Gerrit Code Review
commit 44970e7038
3 changed files with 24 additions and 2 deletions

View File

@ -22,7 +22,7 @@
needs_charm_build: true
charm_build_name: vault
build_type: charmcraft
charmcraft_channel: 2.x/edge
charmcraft_channel: latest/edge
- job:
name: jammy-mysql8

View File

@ -598,7 +598,14 @@ class CertCache:
"""
value = hookenv.leader_get(key)
if value:
return json.loads(value)
if key is not None:
# load the value that was json serialised in _store()
return json.loads(value)
else:
# due to a weird asymetry been leader_set and leader_get,
# leader_get() already deserialises as json so if no key was
# specified, it's already been deserialised.
return value
return ""
@staticmethod

View File

@ -800,6 +800,21 @@ class TestLibCharmVaultPKI(unit_tests.test_utils.CharmTestCase):
self.assertEqual(vault_pki.CertCache(request)._fetch("mine"),
'the-value')
@patch.object(vault_pki.hookenv, 'leader_get')
def test_certcache__fetch_none(self, mock_leader_get):
request = self._default_request()
# due to weird asymetry between leader_get and leader_set, if no
# attribute is passed to leader_get() then the result is the
# deserialised set of key, values as a dictionary.
leader_get = {
'a': 'an-a',
'b': 'an-b',
}
mock_leader_get.return_value = leader_get
self.assertEqual(vault_pki.CertCache(request)._fetch(None), leader_get)
mock_leader_get.assert_called_once_with(None)
@patch.object(vault_pki.hookenv, 'leader_set')
def test_certcache__store(self, mock_leader_set):
request = self._default_request()