From 915b14dcc53eed05d0187a24057a06415c3672dc Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 10 May 2023 00:01:27 -0400 Subject: [PATCH 1/6] hostname in server_status --- compute_worker/compute_worker.py | 8 ++++++-- src/apps/api/views/submissions.py | 11 +++++++++++ .../0032_submission_worker_hostname.py | 18 ++++++++++++++++++ src/apps/competitions/models.py | 2 ++ src/templates/pages/server_status.html | 2 ++ 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/apps/competitions/migrations/0032_submission_worker_hostname.py diff --git a/compute_worker/compute_worker.py b/compute_worker/compute_worker.py index fb0d66b30..09544b03c 100644 --- a/compute_worker/compute_worker.py +++ b/compute_worker/compute_worker.py @@ -22,7 +22,7 @@ import websockets import yaml from billiard.exceptions import SoftTimeLimitExceeded -from celery import Celery, task +from celery import Celery, task, utils from kombu import Queue, Exchange from urllib3 import Retry @@ -309,6 +309,9 @@ def _update_submission(self, data): def _update_status(self, status, extra_information=None): if status not in AVAILABLE_STATUSES: raise SubmissionException(f"Status '{status}' is not in available statuses: {AVAILABLE_STATUSES}") + + # from celery.contrib import rdb + # rdb.set_trace() data = { "status": status, "status_details": extra_information, @@ -663,8 +666,9 @@ def prepare(self): self._get_container_image(self.container_image) def start(self): + hostname = utils.nodenames.gethostname() if not self.is_scoring: - self._update_status(STATUS_RUNNING) + self._update_status(STATUS_RUNNING, extra_information=f"hostname-{hostname}") program_dir = os.path.join(self.root_dir, "program") ingestion_program_dir = os.path.join(self.root_dir, "ingestion_program") diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index aaf7386b6..03f7107ba 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -37,6 +37,17 @@ def check_object_permissions(self, request, obj): raise PermissionDenied("Cannot add task-specific submission re-runs to leaderboards.") return if self.request and self.request.method in ('POST', 'PUT', 'PATCH'): + dir(self.request) + # import pdb; pdb.set_trace() + # self.request.data + # Set hostname of submission - could be better + if "status_details" in self.request.data.keys(): + if request.data['status_details'].find('hostname') != -1: + # import pdb; pdb.set_trace() + hostname = request.data['status_details'].replace('hostname-','') + obj.worker_hostname = hostname + obj.save() + not_bot_user = self.request.user.is_authenticated and not self.request.user.is_bot if self.action in ['update_fact_sheet', 're_run_submission']: diff --git a/src/apps/competitions/migrations/0032_submission_worker_hostname.py b/src/apps/competitions/migrations/0032_submission_worker_hostname.py new file mode 100644 index 000000000..0586a5978 --- /dev/null +++ b/src/apps/competitions/migrations/0032_submission_worker_hostname.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.17 on 2023-05-09 04:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('competitions', '0031_auto_20230504_1016'), + ] + + operations = [ + migrations.AddField( + model_name='submission', + name='worker_hostname', + field=models.CharField(blank=True, max_length=255, null=True), + ), + ] diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index 9c5be88ef..64117b937 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -452,6 +452,8 @@ class Submission(ChaHubSaveMixin, models.Model): started_when = models.DateTimeField(null=True) is_public = models.BooleanField(default=False) is_specific_task_re_run = models.BooleanField(default=False) + + worker_hostname = models.CharField(max_length=255, blank=True, null=True) is_migrated = models.BooleanField(default=False) created_by_migration = models.ForeignKey(Phase, related_name='migrated_submissions', on_delete=models.CASCADE, diff --git a/src/templates/pages/server_status.html b/src/templates/pages/server_status.html index b9d0dd294..0ff214291 100644 --- a/src/templates/pages/server_status.html +++ b/src/templates/pages/server_status.html @@ -12,6 +12,7 @@

Recent submissions (up to 250 or 2 days old)

Competition Submission PK Submitter + Hostname Submitted at Status @@ -26,6 +27,7 @@

Recent submissions (up to 250 or 2 days old)

{{ submission.phase.competition }} {{ submission.pk }} {{ submission.owner.username }} + {{ submission.worker_hostname }} {{ submission.created_when|timesince }} ago {{ submission.status }} From 63d0f3e0745ab0a95d074566d9d40d3ee887ee3a Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 10 May 2023 00:08:16 -0400 Subject: [PATCH 2/6] flake8 --- src/apps/api/views/submissions.py | 1 - src/apps/competitions/models.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 03f7107ba..88ef62024 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -47,7 +47,6 @@ def check_object_permissions(self, request, obj): hostname = request.data['status_details'].replace('hostname-','') obj.worker_hostname = hostname obj.save() - not_bot_user = self.request.user.is_authenticated and not self.request.user.is_bot if self.action in ['update_fact_sheet', 're_run_submission']: diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index 64117b937..f355802d1 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -452,9 +452,7 @@ class Submission(ChaHubSaveMixin, models.Model): started_when = models.DateTimeField(null=True) is_public = models.BooleanField(default=False) is_specific_task_re_run = models.BooleanField(default=False) - worker_hostname = models.CharField(max_length=255, blank=True, null=True) - is_migrated = models.BooleanField(default=False) created_by_migration = models.ForeignKey(Phase, related_name='migrated_submissions', on_delete=models.CASCADE, null=True, From d5be6486edbc75bd3f062e15ab9bd09a91ba9912 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 10 May 2023 00:12:12 -0400 Subject: [PATCH 3/6] missing whitespace after ',' --- src/apps/api/views/submissions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 88ef62024..a87363d4e 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -44,7 +44,7 @@ def check_object_permissions(self, request, obj): if "status_details" in self.request.data.keys(): if request.data['status_details'].find('hostname') != -1: # import pdb; pdb.set_trace() - hostname = request.data['status_details'].replace('hostname-','') + hostname = request.data['status_details'].replace('hostname-', '') obj.worker_hostname = hostname obj.save() not_bot_user = self.request.user.is_authenticated and not self.request.user.is_bot From b3eb96c644e31cd3356450887da9a1a61446cfdb Mon Sep 17 00:00:00 2001 From: Benjamin Bearce Date: Wed, 10 May 2023 09:54:55 -0400 Subject: [PATCH 4/6] Update compute_worker.py remove rdb commands --- compute_worker/compute_worker.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/compute_worker/compute_worker.py b/compute_worker/compute_worker.py index 09544b03c..c8bef06d1 100644 --- a/compute_worker/compute_worker.py +++ b/compute_worker/compute_worker.py @@ -309,9 +309,7 @@ def _update_submission(self, data): def _update_status(self, status, extra_information=None): if status not in AVAILABLE_STATUSES: raise SubmissionException(f"Status '{status}' is not in available statuses: {AVAILABLE_STATUSES}") - - # from celery.contrib import rdb - # rdb.set_trace() + data = { "status": status, "status_details": extra_information, From 70d94e886e5d0f32600c7c23a32f1e95bafb3f7b Mon Sep 17 00:00:00 2001 From: Benjamin Bearce Date: Wed, 10 May 2023 09:55:26 -0400 Subject: [PATCH 5/6] Update submissions.py remove rdb --- src/apps/api/views/submissions.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index a87363d4e..3fae5589c 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -38,9 +38,7 @@ def check_object_permissions(self, request, obj): return if self.request and self.request.method in ('POST', 'PUT', 'PATCH'): dir(self.request) - # import pdb; pdb.set_trace() - # self.request.data - # Set hostname of submission - could be better + # Set hostname of submission if "status_details" in self.request.data.keys(): if request.data['status_details'].find('hostname') != -1: # import pdb; pdb.set_trace() From 3267648a051cf239d6363c6159d465f383304b0a Mon Sep 17 00:00:00 2001 From: Benjamin Bearce Date: Wed, 10 May 2023 09:55:52 -0400 Subject: [PATCH 6/6] Update submissions.py remove pdb --- src/apps/api/views/submissions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 3fae5589c..75e75df47 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -41,7 +41,6 @@ def check_object_permissions(self, request, obj): # Set hostname of submission if "status_details" in self.request.data.keys(): if request.data['status_details'].find('hostname') != -1: - # import pdb; pdb.set_trace() hostname = request.data['status_details'].replace('hostname-', '') obj.worker_hostname = hostname obj.save()