From 7796cf532173e8e8ddf6bbf0d0df9d0e0273740b Mon Sep 17 00:00:00 2001 From: Juan Puerto <=> Date: Wed, 15 Nov 2023 13:34:45 -0500 Subject: [PATCH 1/6] Workspaces: Files should be a list of dicts not a list of strings --- src/user_workspaces_server/views/workspace_view.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/user_workspaces_server/views/workspace_view.py b/src/user_workspaces_server/views/workspace_view.py index b6d8128..ee86b63 100644 --- a/src/user_workspaces_server/views/workspace_view.py +++ b/src/user_workspaces_server/views/workspace_view.py @@ -57,7 +57,9 @@ def post(self, request): raise ParseError("Workspace details not JSON.") request_workspace_details = { - "files": [file["name"] for file in workspace_details.get("files", [])], + "files": [ + {"name": file["name"]} for file in workspace_details.get("files", []) + ], "symlinks": workspace_details.get("symlinks", []), } From 6c45fc005571c02b46de8fe71832b30b4180d807 Mon Sep 17 00:00:00 2001 From: Juan Puerto <=> Date: Wed, 15 Nov 2023 14:35:44 -0500 Subject: [PATCH 2/6] Workspaces: See if we're even catching timeouts --- .../controllers/resources/slurm_api_resource.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/user_workspaces_server/controllers/resources/slurm_api_resource.py b/src/user_workspaces_server/controllers/resources/slurm_api_resource.py index e64dd39..9db9708 100644 --- a/src/user_workspaces_server/controllers/resources/slurm_api_resource.py +++ b/src/user_workspaces_server/controllers/resources/slurm_api_resource.py @@ -112,6 +112,12 @@ def get_resource_job(self, job): if len(resource_job["errors"]): raise APIException(resource_job["errors"]) resource_job = resource_job["jobs"][0] + + if resource_job["job_state"] == "TIMEOUT": + logger.error( + f"Workspaces Job {job.id}/Slurm job {job.resource_job_id} has timed out." + ) + resource_job["status"] = self.translate_status(resource_job["job_state"]) end_time = resource_job.get("end_time") if end_time is not None: From 4b3aea7d2b2eae155e2d718701c597ce4bd9c810 Mon Sep 17 00:00:00 2001 From: Juan Puerto <=> Date: Wed, 15 Nov 2023 15:04:18 -0500 Subject: [PATCH 3/6] Tasks: Avoid this error, this is what was causing our issue. --- src/user_workspaces_server/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user_workspaces_server/tasks.py b/src/user_workspaces_server/tasks.py index 5d4ea1a..6694313 100644 --- a/src/user_workspaces_server/tasks.py +++ b/src/user_workspaces_server/tasks.py @@ -80,7 +80,7 @@ def update_job_status(job_id): # TODO: At some point we will have metrics returned by resource_job_info job.job_details["current_job_details"].update( - resource_job_info["current_job_details"] + resource_job_info.get("current_job_details", {}) ) if job.job_details["current_job_details"].get("connection_details", {}): From e6d6f7b981b702dcbcd16ed22c463ca017493369 Mon Sep 17 00:00:00 2001 From: Juan Puerto <=> Date: Fri, 17 Nov 2023 12:52:51 -0500 Subject: [PATCH 4/6] General: Return 404 when workspace/job not found. --- src/user_workspaces_server/views/job_view.py | 9 ++++++--- .../views/workspace_view.py | 17 ++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/user_workspaces_server/views/job_view.py b/src/user_workspaces_server/views/job_view.py index 35603f3..08b4bf2 100644 --- a/src/user_workspaces_server/views/job_view.py +++ b/src/user_workspaces_server/views/job_view.py @@ -28,9 +28,12 @@ def get(self, request, job_id=None): job = list(job.all().values(*models.Job.get_dict_fields())) - return JsonResponse( - {"message": "Successful.", "success": True, "data": {"jobs": job}} - ) + if job: + return JsonResponse( + {"message": "Successful.", "success": True, "data": {"jobs": job}} + ) + else: + raise NotFound(f"Job matching given parameters could not be found.") def put(self, request, job_id, put_type): try: diff --git a/src/user_workspaces_server/views/workspace_view.py b/src/user_workspaces_server/views/workspace_view.py index ee86b63..dff3390 100644 --- a/src/user_workspaces_server/views/workspace_view.py +++ b/src/user_workspaces_server/views/workspace_view.py @@ -34,13 +34,16 @@ def get(self, request, workspace_id=None): workspaces = list(workspace.all().values(*models.Workspace.get_dict_fields())) - return JsonResponse( - { - "message": "Successful.", - "success": True, - "data": {"workspaces": workspaces}, - } - ) + if workspaces: + return JsonResponse( + { + "message": "Successful.", + "success": True, + "data": {"workspaces": workspaces}, + } + ) + else: + raise NotFound(f"Workspace matching given parameters could not be found.") def post(self, request): try: From 31220f9453c111f922d091692d9782864fc57bd7 Mon Sep 17 00:00:00 2001 From: Juan Puerto <=> Date: Fri, 17 Nov 2023 12:54:46 -0500 Subject: [PATCH 5/6] General: Syntax fixes --- src/user_workspaces_server/views/job_view.py | 2 +- src/user_workspaces_server/views/workspace_view.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/user_workspaces_server/views/job_view.py b/src/user_workspaces_server/views/job_view.py index 08b4bf2..68b5c3d 100644 --- a/src/user_workspaces_server/views/job_view.py +++ b/src/user_workspaces_server/views/job_view.py @@ -33,7 +33,7 @@ def get(self, request, job_id=None): {"message": "Successful.", "success": True, "data": {"jobs": job}} ) else: - raise NotFound(f"Job matching given parameters could not be found.") + raise NotFound("Job matching given parameters could not be found.") def put(self, request, job_id, put_type): try: diff --git a/src/user_workspaces_server/views/workspace_view.py b/src/user_workspaces_server/views/workspace_view.py index dff3390..5538315 100644 --- a/src/user_workspaces_server/views/workspace_view.py +++ b/src/user_workspaces_server/views/workspace_view.py @@ -43,7 +43,7 @@ def get(self, request, workspace_id=None): } ) else: - raise NotFound(f"Workspace matching given parameters could not be found.") + raise NotFound("Workspace matching given parameters could not be found.") def post(self, request): try: From 2171d65c3ff88482e16e159a3a0d50cea7e3b795 Mon Sep 17 00:00:00 2001 From: jpuerto-psc Date: Fri, 17 Nov 2023 17:57:47 +0000 Subject: [PATCH 6/6] Auto generate BUILD file. --- BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD b/BUILD index e546417..6795224 100644 --- a/BUILD +++ b/BUILD @@ -1 +1 @@ -1c428f5 +92d3b88