Skip to content
Snippets Groups Projects
Commit b2c3e9f3 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

[backend] Add view, url and button to trigger worker update

parent 3e82ddb5
No related branches found
No related tags found
1 merge request!194Scheduler
......@@ -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>
......
......@@ -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,
......
......@@ -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'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment