Invalidate media cache an attach/detach

If we attach or detach, trigger uncached read
of potentially cached urls.

Change-Id: I85ae49cd83ca8053b971e5d79cae1fe2f098d7a5
This commit is contained in:
Jarrod Johnson 2025-04-21 10:02:01 -04:00
parent e074eb1470
commit 4b5fbf55c2
4 changed files with 10 additions and 6 deletions

View File

@ -1429,6 +1429,8 @@ class Command(object):
self.wc.stdheaders['X-Auth-Token'] = self.xauthtoken
if 'Authorization' in self.wc.stdheaders:
del self.wc.stdheaders['Authorization']
for res in self.oem.list_media(self, cache=False):
pass
def detach_remote_media(self):
try:
@ -1462,6 +1464,8 @@ class Command(object):
method='PATCH')
else:
raise
for res in self.oem.list_media(self, cache=False):
pass
def upload_media(self, filename, progress=None, data=None):
"""Upload a file to be hosted on the target BMC

View File

@ -672,13 +672,13 @@ class OEMHandler(object):
except AttributeError:
self.password = password
def list_media(self, fishclient):
bmcinfo = fishclient._do_web_request(fishclient._bmcurl)
def list_media(self, fishclient, cache=True):
bmcinfo = fishclient._do_web_request(fishclient._bmcurl, cache=cache)
vmcoll = bmcinfo.get('VirtualMedia', {}).get('@odata.id', None)
if vmcoll:
vmlist = fishclient._do_web_request(vmcoll)
vmlist = fishclient._do_web_request(vmcoll, cache=cache)
vmurls = [x['@odata.id'] for x in vmlist.get('Members', [])]
for vminfo in fishclient._do_bulk_requests(vmurls):
for vminfo in fishclient._do_bulk_requests(vmurls, cache=cache):
vminfo = vminfo[0]
if vminfo.get('Image', None):
imageurl = vminfo['Image'].replace(

View File

@ -799,7 +799,7 @@ class TsmHandler(generic.OEMHandler):
raise exc.UnsupportedFunctionality(
'Remote media upload not supported on this system')
def list_media(self, fishclient=None):
def list_media(self, fishclient=None, cache=True):
wc = self.wc
rsp = wc.grab_json_response('/api/settings/media/general')
cds = rsp['cd_remote_server_address']

View File

@ -1151,7 +1151,7 @@ class OEMHandler(generic.OEMHandler):
res = wc.grab_json_response_with_status(url, body, method=method)
return res
def list_media(self, fishclient):
def list_media(self, fishclient, cache=True):
rt = self.wc.grab_json_response('/api/providers/rp_vm_remote_getdisk')
if 'items' in rt:
for mt in rt['items']: