[FactCache] define first_order_merge method (#55781)
* Add first_order_merge method Add test for updating a key that already exists * changelog
This commit is contained in:
parent
1e6edf2ccc
commit
598a058afe
3 changed files with 21 additions and 0 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- fact_cache - Define the first_order_merge method for the legacy FactCache.update(key, value).
|
|
@ -58,6 +58,19 @@ class FactCache(MutableMapping):
|
||||||
""" Flush the fact cache of all keys. """
|
""" Flush the fact cache of all keys. """
|
||||||
self._plugin.flush()
|
self._plugin.flush()
|
||||||
|
|
||||||
|
def first_order_merge(self, key, value):
|
||||||
|
host_facts = {key: value}
|
||||||
|
|
||||||
|
try:
|
||||||
|
host_cache = self._plugin.get(key)
|
||||||
|
if host_cache:
|
||||||
|
host_cache.update(value)
|
||||||
|
host_facts[key] = host_cache
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
super(FactCache, self).update(host_facts)
|
||||||
|
|
||||||
def update(self, *args):
|
def update(self, *args):
|
||||||
"""
|
"""
|
||||||
Backwards compat shim
|
Backwards compat shim
|
||||||
|
|
6
test/units/plugins/cache/test_cache.py
vendored
6
test/units/plugins/cache/test_cache.py
vendored
|
@ -117,6 +117,12 @@ class TestFactCache(unittest.TestCase):
|
||||||
"Unable to load the facts cache plugin.*json.*",
|
"Unable to load the facts cache plugin.*json.*",
|
||||||
FactCache)
|
FactCache)
|
||||||
|
|
||||||
|
def test_update_legacy_key_exists(self):
|
||||||
|
self.cache['cache_key'] = {'key': 'value', 'key2': 'value2'}
|
||||||
|
self.cache.update('cache_key', {'key': 'updatedvalue'})
|
||||||
|
assert self.cache['cache_key']['key'] == 'updatedvalue'
|
||||||
|
assert self.cache['cache_key']['key2'] == 'value2'
|
||||||
|
|
||||||
|
|
||||||
class TestAbstractClass(unittest.TestCase):
|
class TestAbstractClass(unittest.TestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue