Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/murfey/client/tui/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ async def action_quit(self) -> None:

async def action_remove_session(self) -> None:
requests.delete(
f"{self._environment.url.geturl()}/instruments/{self._environment.instrument_name}/clients/{self._environment.client_id}/session"
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}"
)
if self.rsync_processes:
for rp in self.rsync_processes.values():
Expand All @@ -704,7 +704,7 @@ async def action_remove_session(self) -> None:

def clean_up_quit(self) -> None:
requests.delete(
f"{self._environment.url.geturl()}/instruments/{self._environment.instrument_name}/clients/{self._environment.client_id}/session"
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}"
)
self.exit()

Expand Down Expand Up @@ -750,7 +750,7 @@ def _remove_data(self, listener: Callable[..., Awaitable[None] | None], **kwargs
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}/successful_processing"
)
requests.delete(
f"{self._environment.url.geturl()}/instruments/{self._environment.instrument_name}/clients/{self._environment.client_id}/session"
f"{self._environment.url.geturl()}/sessions/{self._environment.murfey_session}"
)
self.exit()

Expand Down
72 changes: 22 additions & 50 deletions src/murfey/server/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1522,6 +1522,28 @@
@router.delete("/sessions/{session_id}")
def remove_session_by_id(session_id: MurfeySessionID, db=murfey_db):
session = db.exec(select(Session).where(Session.id == session_id)).one()
prom.monitoring_switch.remove(session.visit)
rsync_instances = db.exec(

Check warning on line 1526 in src/murfey/server/api/__init__.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/__init__.py#L1525-L1526

Added lines #L1525 - L1526 were not covered by tests
select(RsyncInstance).where(RsyncInstance.session_id == session_id)
).all()
for ri in rsync_instances:
prom.seen_files.remove(ri.source, session.visit)
prom.transferred_files.remove(ri.source, session.visit)
prom.transferred_files_bytes.remove(ri.source, session.visit)
prom.seen_data_files.remove(ri.source, session.visit)
prom.transferred_data_files.remove(ri.source, session.visit)
prom.transferred_data_files_bytes.remove(ri.source, session.visit)
collected_ids = db.exec(

Check warning on line 1536 in src/murfey/server/api/__init__.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/__init__.py#L1530-L1536

Added lines #L1530 - L1536 were not covered by tests
select(DataCollectionGroup, DataCollection, ProcessingJob)
.where(DataCollectionGroup.session_id == session_id)
.where(DataCollection.dcg_id == DataCollectionGroup.id)
.where(ProcessingJob.dc_id == DataCollection.id)
).all()
for c in collected_ids:
try:
prom.preprocessed_movies.remove(c[2].id)
except KeyError:
continue

Check warning on line 1546 in src/murfey/server/api/__init__.py

View check run for this annotation

Codecov / codecov/patch

src/murfey/server/api/__init__.py#L1543-L1546

Added lines #L1543 - L1546 were not covered by tests
db.delete(session)
db.commit()
return
Expand Down Expand Up @@ -1725,56 +1747,6 @@
_transport_object.do_update_processing_status(updated)


@router.delete("/clients/{client_id}/session")
def remove_session(client_id: int, db=murfey_db):
client = db.exec(
select(ClientEnvironment).where(ClientEnvironment.client_id == client_id)
).one()
session_id = client.session_id
client.session_id = None
db.add(client)
db.commit()
if session_id is None:
return
prom.monitoring_switch.remove(client.visit)
rsync_instances = db.exec(
select(RsyncInstance).where(RsyncInstance.client_id == client_id)
).all()
for ri in rsync_instances:
prom.seen_files.remove(ri.source, client.visit)
prom.transferred_files.remove(ri.source, client.visit)
prom.transferred_files_bytes.remove(ri.source, client.visit)
prom.seen_data_files.remove(ri.source, client.visit)
prom.transferred_data_files.remove(ri.source, client.visit)
prom.transferred_data_files_bytes.remove(ri.source, client.visit)
collected_ids = db.exec(
select(DataCollectionGroup, DataCollection, ProcessingJob)
.where(DataCollectionGroup.session_id == session_id)
.where(DataCollection.dcg_id == DataCollectionGroup.id)
.where(ProcessingJob.dc_id == DataCollection.id)
).all()
for c in collected_ids:
try:
prom.preprocessed_movies.remove(c[2].id)
except KeyError:
continue
if (
len(
db.exec(
select(ClientEnvironment).where(
ClientEnvironment.session_id == session_id
)
).all()
)
> 1
):
return
session = db.exec(select(Session).where(Session.id == session_id)).one()
db.delete(session)
db.commit()
return


@router.post("/visits/{visit_name}/monitoring/{on}")
def change_monitoring_status(visit_name: str, on: int):
prom.monitoring_switch.labels(visit=visit_name)
Expand Down