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 update_all_workers(request): jobs.update_all_workers() return redirect('docserver-manager')
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)