Пример #1
0
def module(request, module):
    module = get_object_or_404(models.Module, pk=module)
    versions = module.versions.all()
    confirmversion = False
    confirmmodule = False
    form = forms.ModuleEditForm(instance=module)
    if request.method == "POST":
        # Delete a module version
        if request.POST.get("deleteversion"):
            version = request.POST.get("version")
            versions = versions.filter(pk=version)
            confirmversion = version
        # Confirm deleting a module version
        elif request.POST.get("confirmversion"):
            version = request.POST.get("version")
            jobs.delete_moduleversion.delay(version)
        # Delete an entire module
        elif request.POST.get("deletemodule"):
            # The module id is already in the argument to this method
            # so we don't get it from POST like the mod-version above.
            confirmmodule = module.pk
        # Confirm deleting entire module
        elif request.POST.get("confirmmodule"):
            jobs.delete_module.delay(module.pk)
        # Update list of collections for this module
        elif request.POST.get("update"):
            form = forms.ModuleEditForm(request.POST, instance=module)
            form.save()
        # Scan for a new version
        elif request.POST.get("newversion"):
            jobs.get_latest_module_version(module.pk)
            return redirect('docserver-module', module.pk)
        # Process a module (specific version)
        run = request.POST.get("runversion")
        if run is not None:
            jobs.run_module(module.pk, int(run))
            return redirect('docserver-module', module.pk)

    logmessages = models.DocumentLogMessage.objects.filter(
        moduleversion__module=module)[:20]

    ret = {
        "module": module,
        "versions": versions,
        "form": form,
        "confirmversion": confirmversion,
        "confirmmodule": confirmmodule,
        "logs": logmessages
    }
    return render(request, 'docserver/module.html', ret)
Пример #2
0
def manager(request):
    scan = request.GET.get("scan")
    if scan is not None:
        jobs.run_module(int(scan))
        return HttpResponseRedirect(reverse('docserver-manager'))
    update = request.GET.get("update")
    if update is not None:
        jobs.get_latest_module_version(int(update))
        return HttpResponseRedirect(reverse('docserver-manager'))

    modules = models.Module.objects.all()
    collections = models.Collection.objects.all()

    ret = {"modules": modules, "collections": collections}
    return render(request, 'docserver/manager.html', ret)
Пример #3
0
def manager(request):
    scan = request.GET.get("scan")
    if scan is not None:
        jobs.run_module(int(scan))
        return HttpResponseRedirect(reverse('docserver-manager'))
    update = request.GET.get("update")
    if update is not None:
        jobs.get_latest_module_version(int(update))
        return HttpResponseRedirect(reverse('docserver-manager'))

    essentias = models.EssentiaVersion.objects.all()
    modules = models.Module.objects.all()
    collections = models.Collection.objects.all()

    ret = {"essentias": essentias, "modules": modules, "collections": collections}
    return render(request, 'docserver/manager.html', ret)
Пример #4
0
def module(request, module):
    module = get_object_or_404(models.Module, pk=module)
    versions = module.versions.all()
    confirmversion = False
    confirmmodule = False
    form = forms.ModuleEditForm(instance=module)
    if request.method == "POST":
        # Delete a module version
        if request.POST.get("deleteversion"):
            version = request.POST.get("version")
            versions = versions.filter(pk=version)
            confirmversion = version
        # Confirm deleting a module version
        elif request.POST.get("confirmversion"):
            version = request.POST.get("version")
            jobs.delete_moduleversion.delay(version)
        # Delete an entire module
        elif request.POST.get("deletemodule"):
            # The module id is already in the argument to this method
            # so we don't get it from POST like the mod-version above.
            confirmmodule = module.pk
        # Confirm deleting entire module
        elif request.POST.get("confirmmodule"):
            jobs.delete_module.delay(module.pk)
        # Update list of collections for this module
        elif request.POST.get("update"):
            form = forms.ModuleEditForm(request.POST, instance=module)
            form.save()
        # Scan for a new version
        elif request.POST.get("newversion"):
            jobs.get_latest_module_version(module.pk)
            return redirect('docserver-module', module.pk)
        # Process a module (specific version)
        run = request.POST.get("runversion")
        if run is not None:
            jobs.run_module(module.pk, int(run))
            return redirect('docserver-module', module.pk)

    logmessages = models.DocumentLogMessage.objects.filter(moduleversion__module=module)[:20]

    ret = {"module": module,
           "versions": versions,
           "form": form,
           "confirmversion": confirmversion,
           "confirmmodule": confirmmodule,
           "logs": logmessages}
    return render(request, 'docserver/module.html', ret)
Пример #5
0
def manager(request):
    # Add a new worker to the cluster
    register = request.GET.get("register")
    if register is not None:
        # All hosts should listen on a queue named themselves, so that
        # when we register it, we get the data from the correct host
        jobs.register_host.apply_async([register], queue=register)
        return redirect('docserver-manager')
    if request.method == "POST":
        # 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()
    modules = models.Module.objects.order_by('name').all()

    ret = {"collections": collections, "modules": modules}
    return render(request, 'docserver/manager.html', ret)
Пример #6
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)
Пример #7
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)
Пример #8
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)