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

[backend] Move cancel-experiments from API to view

parent 3223d661
No related branches found
No related tags found
1 merge request!194Scheduler
......@@ -29,34 +29,17 @@ from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from rest_framework import permissions
from ..common.permissions import IsSuperuser
from ..utils.api import send_email_to_administrators
from ..utils import scheduler as scheduler_api
from .models import Environment
from ..experiments.models import Experiment
import simplejson as json
#----------------------------------------------------------
@api_view(['POST'])
@permission_classes([IsSuperuser])
def cancel_all_experiments(request):
for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)):
q.cancel()
return Response(status=200)
#----------------------------------------------------------
@api_view(['GET'])
@permission_classes([permissions.AllowAny])
def accessible_environments_list(request):
......
......@@ -30,12 +30,6 @@ from . import api
urlpatterns = [
url(
r'^cancel-all-experiments/$',
api.cancel_all_experiments,
name='backend-api-cancel-all-experiments',
),
url(
r'^environments/$',
api.accessible_environments_list,
......
......@@ -36,6 +36,12 @@ urlpatterns = [
name='scheduler',
),
url(
r'^cancel-experiments/$',
views.cancel_all_experiments,
name='cancel-experiments',
),
url(
r'^environments/(?P<name>[-\.\w\s]+)/(?P<version>[-\.\w]+)/$',
views.environment,
......
......@@ -28,8 +28,9 @@
import collections
import simplejson
from django.http import Http404
from django.http import Http404, HttpResponseRedirect
from django.conf import settings
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
from django.shortcuts import render_to_response
from django.template import RequestContext
......@@ -38,6 +39,7 @@ from django.http import HttpResponseForbidden
from django.contrib import messages
from .models import Environment, Worker, Queue
from ..experiments.models import Experiment
from . import state
......@@ -68,9 +70,6 @@ def scheduler(request):
cache_gb = int(cache['capacity-in-megabytes'] / 1024.0)
# Organize the data a bit
response.data['workers'] = collections.OrderedDict(sorted([(k,v) for k,v in response.data['workers'].items()], key=lambda x: (not x[1].has_key('active'), x[1]['db_status']!='Active', x[0])))
return render_to_response('backend/scheduler.html',
dict(
jobs=state.jobs(),
......@@ -119,3 +118,18 @@ def list_environments(request):
),
context_instance=RequestContext(request),
)
#----------------------------------------------------------
@login_required
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()
return HttpResponseRedirect(reverse('backend:scheduler'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment