From b2c3e9f3421541665ee1ffbbdf9196c64646e31e Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Thu, 28 Apr 2016 11:01:38 +0200 Subject: [PATCH] [backend] Add view, url and button to trigger worker update --- .../backend/templates/backend/scheduler.html | 1 + beat/web/backend/urls.py | 6 +++++ beat/web/backend/views.py | 26 +++++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/beat/web/backend/templates/backend/scheduler.html b/beat/web/backend/templates/backend/scheduler.html index dbcedb998..14ff20fcf 100644 --- a/beat/web/backend/templates/backend/scheduler.html +++ b/beat/web/backend/templates/backend/scheduler.html @@ -39,6 +39,7 @@ <div class="alert alert-success" role="alert" style="text-align: center;"> <i class="fa fa-clock-o fa-2x vertical-center"></i> Updated: {% now "H:i O, jS F Y" %} <div class="pull-right action-buttons"> + <a id="update-workers-button" class="btn btn-default btn-info" data-toggle="tooltip" data-placement="bottom" title="Force all workers to update their state" href="{% url 'backend:update-workers' %}"><i class="fa fa-times"></i> Update Workers</a> <a id="cancel-experiments-button" class="btn btn-default btn-delete" data-toggle="tooltip" data-placement="bottom" title="Cancel all running experiments" href="{% url 'backend:cancel-experiments' %}"><i class="fa fa-times"></i> Cancel Experiments</a> </div> </div> diff --git a/beat/web/backend/urls.py b/beat/web/backend/urls.py index 33c58bc66..e09f3f990 100644 --- a/beat/web/backend/urls.py +++ b/beat/web/backend/urls.py @@ -42,6 +42,12 @@ urlpatterns = [ name='cancel-experiments', ), + url( + r'^update-workers/$', + views.update_workers, + name='update-workers', + ), + url( r'^environments/(?P<name>[-\.\w\s]+)/(?P<version>[-\.\w]+)/$', views.environment, diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py index 0e408d393..8c51ca58d 100644 --- a/beat/web/backend/views.py +++ b/beat/web/backend/views.py @@ -78,6 +78,7 @@ def scheduler(request): queues=Queue.objects.order_by('memory_limit', 'max_slots_per_user'), cache_chart_data=simplejson.dumps(cache_chart_data), cache_gb=cache_gb, + helper_panel=getattr(settings, 'SCHEDULING_PANEL', False), ), context_instance=RequestContext(request)) @@ -129,7 +130,28 @@ def cancel_all_experiments(request): if not(request.user.is_superuser): return HttpResponseForbidden() - for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)): - q.cancel() + qs = Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)) + counter = qs.count() + + for xp in qs: xp.cancel() + + messages.success(request, "Successfuly cancelled %d experiments" % counter) + + return HttpResponseRedirect(reverse('backend:scheduler')) + + +#---------------------------------------------------------- + + +@login_required +def update_workers(request): + + if not(request.user.is_superuser): return HttpResponseForbidden() + + qs = Worker.objects.all() + counter = qs.count() + qs.update(update=True) + + messages.success(request, "Requested %d workers for updates" % counter) return HttpResponseRedirect(reverse('backend:scheduler')) -- GitLab