Skip to content
Snippets Groups Projects
Commit 18449743 authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Added option to remove all accessors

parent 3fa8292a
No related branches found
No related tags found
No related merge requests found
......@@ -87,7 +87,10 @@ def get_accessor(accessor_id: str):
@app.get('/accessors/delete/{accessor_id}')
def delete_accessor(accessor_id: str):
return _session_accessor(session.del_accessor, accessor_id)
if accessor_id == '*':
return session.del_all_accessors()
else:
return _session_accessor(session.del_accessor, accessor_id)
@app.put('/accessors/read_from_file/{filename}')
......@@ -106,6 +109,4 @@ def write_accessor_to_file(accessor_id: str, filename: Union[str, None] = None)
except AccessorIdError as e:
raise HTTPException(404, f'Did not find accessor with ID {accessor_id}')
except WriteAccessorError as e:
raise HTTPException(409, str(e))
# TODO: endpoint to unload all accessors
\ No newline at end of file
raise HTTPException(409, str(e))
\ No newline at end of file
......@@ -114,6 +114,20 @@ class _Session(object):
v['object'] = None
return accessor_id
def del_all_accessors(self) -> list[str]:
"""
Remove (unload) all accessors but keep their info in dictionary
:return: list of removed accessor IDs
"""
res = []
for k, v in self.accessors.items():
if v['loaded']:
v['object'] = None
v['loaded'] = False
res.append(k)
return res
def list_accessors(self) -> dict:
"""
List information about all accessors in JSON-readable format
......
......@@ -240,6 +240,13 @@ class TestApiFromAutomatedClient(TestServerTestCase):
resp_wrong_acc = self._get('accessors/auto_123456')
self.assertEqual(resp_wrong_acc.status_code, 404)
# load another... then remove all
self._put(f'accessors/read_from_file/{fname}')
self.assertEqual(sum([v['loaded'] for v in self._get('accessors').json().values()]), 1)
self.assertEqual(len(self._get(f'accessors/delete/*').json()), 1)
self.assertEqual(sum([v['loaded'] for v in self._get('accessors').json().values()]), 0)
def test_empty_accessor_list(self):
resp_list_acc = self._get(
f'accessors',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment