From bbebfd9b7eaeefd065e99d013f1efddf306c1f1c Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 15 Oct 2025 10:08:20 -0400 Subject: [PATCH] Clear likely modified URLs from cache Change-Id: Id44b60112e87021bebe9695e298f499a13f4e657 --- pyghmi/redfish/oem/generic.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyghmi/redfish/oem/generic.py b/pyghmi/redfish/oem/generic.py index 6aac621a..d358a060 100644 --- a/pyghmi/redfish/oem/generic.py +++ b/pyghmi/redfish/oem/generic.py @@ -210,6 +210,14 @@ class OEMHandler(object): hostnic = None usegenericsensors = True + def _invalidate_url_cache(self, url): + if url is None: + return + if url in self._urlcache: + del self._urlcache[url] + if url + '?$expand=.' in self._urlcache: + del self._urlcache[url + '?$expand=.'] + def __init__(self, sysinfo, sysurl, webclient, cache, gpool=None, rootinfo={}): self._gpool = gpool self._varsysinfo = sysinfo @@ -325,6 +333,7 @@ class OEMHandler(object): if secpolicy: secinfo = self._do_web_request(secpolicy) certcoll = secinfo.get('TLS', {}).get('Client', {}).get('TrustedCertificates', {}).get('@odata.id', None) + self._invalidate_url_cache(certcoll) if certcoll: certpayload = _pem_to_dict(pemdata) self._do_web_request(certcoll, certpayload) @@ -343,6 +352,7 @@ class OEMHandler(object): for cert in certs: if cert.get('Id', '') == certid: self._do_web_request(cert['@odata.id'], method='DELETE') + self._invalidate_url_cache(certcoll) return True raise exc.PyghmiException(f'No such certificate found: {certid}') @@ -1357,6 +1367,8 @@ class OEMHandler(object): res = self._get_cache(url) if res: return res + # If doing a method that may change remote url state, invalidate cache + self._invalidate_url_cache(url) wc = self.webclient.dupe() if etag: wc.stdheaders['If-Match'] = etag