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)
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)
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)
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)
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)
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)
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)