Ejemplo n.º 1
0
def manager(request):
    # Add a new worker to the cluster
    register = request.GET.get("register")
    if register is not None:
        jobs.register_host.apply_async([register], queue=register)
        return redirect('docserver-manager')
    if request.method == "POST":
        # Update essentia and pycompmusic on all workers
        update = request.POST.get("updateall")
        if update is not None:
            jobs.update_all_workers(request.user.username)
            return redirect('docserver-manager')
        # Process a module version
        run = request.POST.get("run")
        if run is not None:
            jobs.run_module(int(run))
            return redirect('docserver-manager')

    collections = models.Collection.objects.all()

    ret = {"collections": collections}
    return render(request, 'docserver/manager.html', ret)
Ejemplo n.º 2
0
def manager(request):
    # Add a new worker to the cluster
    register = request.GET.get("register")
    if register is not None:
        jobs.register_host.apply_async([register], queue=register)
        return redirect('docserver-manager')
    if request.method == "POST":
        # Update essentia and pycompmusic on all workers
        update = request.POST.get("updateall")
        if update is not None:
            jobs.update_all_workers(request.user.username)
            return redirect('docserver-manager')
        # Process a module version
        run = request.POST.get("run")
        if run is not None:
            jobs.run_module(int(run))
            return redirect('docserver-manager')

    collections = models.Collection.objects.all()

    ret = {"collections": collections}
    return render(request, 'docserver/manager.html', ret)
Ejemplo n.º 3
0
def update_all_workers(request):
    jobs.update_all_workers()
    return redirect('docserver-manager')
Ejemplo n.º 4
0
def update_all_workers(request):
    jobs.update_all_workers()
    return redirect('docserver-manager')
Ejemplo n.º 5
0
def manager(request):
    # Add a new worker to the cluster
    register = request.GET.get("register")
    if register is not None:
        jobs.register_host.apply_async([register], queue=register)
        return redirect('docserver-manager')
    if request.method == "POST":
        # Update essentia and pycompmusic on all workers
        update = request.POST.get("updateall")
        if update is not None:
            jobs.update_all_workers(request.user.username)
            return redirect('docserver-manager')
        # Process a module version
        run = request.POST.get("run")
        if run is not None:
            jobs.run_module(int(run))
            return redirect('docserver-manager')

    modules = models.Module.objects.all().order_by('name')
    collections = models.Collection.objects.all()

    inspect = app.control.inspect()
    # TODO: Load the task data via ajax, so the page loads quickly
    try:
        hosts = inspect.active()
    except:
        hosts = None
    workerobs = models.Worker.objects.all()
    workerkeys = ["celery@%s" % w.hostname for w in workerobs]
    if hosts:
        hostkeys = hosts.keys()
        workers = list(set(workerkeys) & set(hostkeys))
        neww = []
        for w in workers:
            host = w.split("@")[1]
            theworker = workerobs.get(hostname=host)
            num_proc = len(hosts[w])
            if theworker.state == models.Worker.UPDATING:
                state = "Updating"
            elif num_proc:
                state = "Active"
            else:
                state = "Idle"
            neww.append({"host": host,
                         "number": num_proc,
                         "state": state,
                         "worker": theworker})

        workers = neww
        newworkers = list(set(hostkeys) - set(workerkeys))
        newworkers = [w.split("@")[1] for w in newworkers]
        inactiveworkers = list(set(workerkeys) - set(hostkeys))
        inactiveworkers = [w.split("@")[1] for w in inactiveworkers]
    else:
        workers = []
        newworkers = []
        inactiveworkers = [w.split("@")[1] for w in workerkeys]

    latestpycm = models.PyCompmusicVersion.objects.order_by('-commit_date').first()
    latestessentia = models.EssentiaVersion.objects.order_by('-commit_date').first()

    ret = {"modules": modules, "collections": collections, "workers": workers,
           "newworkers": newworkers, "inactiveworkers": inactiveworkers,
           "latestpycm": latestpycm, "latestessentia": latestessentia}
    return render(request, 'docserver/manager.html', ret)