def monitor(self, object): try: rpc.get_deploy_manager().service_deploys() return True except NebuException, e: self.nebu_e = e return False
def resource_map(request): if request.method == 'POST': if request.POST['task'] == 'redeploy': id = request.POST['index_id'] rpc.get_deploy_manager().redeploy_index(Index.objects.get(pk=id).code) return HttpResponseRedirect('/resource_map') workers = [w for w in Worker.objects.select_related(depth=5).order_by('id').all()] for w in workers: w.sorted_deploys = sorted(w.deploys.all(), key=_size, reverse=True) w.used = w.get_used_ram() context = { 'workers': workers, 'packages': Package.objects.all() } return render_to_response('resource_map.html', Context(context, request))
def resource_map(request): if request.method == 'POST': if request.POST['task'] == 'redeploy': id = request.POST['index_id'] rpc.get_deploy_manager().redeploy_index( Index.objects.get(pk=id).code) return HttpResponseRedirect('/resource_map') workers = [ w for w in Worker.objects.select_related(depth=5).order_by('id').all() ] for w in workers: w.sorted_deploys = sorted(w.deploys.all(), key=_size, reverse=True) w.used = w.get_used_ram() context = {'workers': workers, 'packages': Package.objects.all()} return render_to_response('resource_map.html', Context(context, request))
def operations(request): #if request.method == 'POST': # if request.POST['task'] == 'redeploy': # id = request.POST['index_id'] # rpc.get_deploy_manager().redeploy_index(Index.objects.get(pk=id).code) # return HttpResponseRedirect('/resource_map') level = request.GET.get('level', 'top') if level == 'top': return render_to_response('operations/index.html', Context({}, request)) elif level == 'refresh': data = { 'Config': map(configuration_dict, IndexConfiguration.objects.all()), 'Account': map(account_dict, Account.objects.select_related('user').all()), 'Deploy': map(deploy_dict, Deploy.objects.all()), 'Index': map(index_dict, Index.objects.all()), 'Package': map(package_dict, Package.objects.all()), 'Worker': map(worker_dict, Worker.objects.all()), } return JsonResponse(data) elif level == 'index': id = request.GET.get('id') index = Index.objects.get(pk=id); data = { 'Index': index_dict(index), 'Deploy': map(deploy_dict, index.deploys.all()), } return JsonResponse(data) elif level == 'stats': id = request.GET.get('id') d = Deploy.objects.get(pk=id) client = rpc.getThriftIndexerClient(d.worker.lan_dns, int(d.base_port), 3000) return JsonResponse(client.get_stats()) elif level == 'log': id = request.GET.get('id') file = request.GET.get('file') d = Deploy.objects.get(pk=id) client = rpc.get_worker_controller(d.worker, 4000) lines = client.tail(file, 300, d.index.code, d.base_port) return JsonResponse(lines) elif level == 'redeploy': id = request.GET.get('id') rpc.get_deploy_manager().redeploy_index(Index.objects.get(pk=id).code) return HttpResponse() elif level == 'decommission': id = request.GET.get('id') Worker.objects.filter(id=id).update(status=Worker.States.decommissioning) return JsonResponse(worker_dict(Worker.objects.get(id=id))) elif level == 'delete_worker': id = request.GET.get('id') w = Worker.objects.get(id=id) if w.status != Worker.States.decommissioning: return HttpResponse('worker not decommissioning', status=409) if w.deploys.count(): return HttpResponse('worker not empty', status=409) w.delete() return HttpResponse() elif level == 'delete_account': id = request.GET.get('id') a = Account.objects.get(id=id) user = a.user.user if a.indexes.count(): return HttpResponse('account has index', status=409) if a.payment_informations.count(): return HttpResponse('account has payment information', status=409) user = a.user.user a.delete() user.delete() return HttpResponse() elif level == 'account_set_pkg': id = request.GET.get('id') pid = request.GET.get('pkg') p = Package.objects.get(id=pid) updated = Account.objects.filter(id=id).update(package=p) if updated: return JsonResponse(account_dict(Account.objects.get(id=id))) else: return HttpResponse('account not found', status=409) elif level == 'account_set_cfg': id = request.GET.get('id') cid = request.GET.get('cfg') c = IndexConfiguration.objects.get(id=cid) updated = Account.objects.filter(id=id).update(configuration=c) if updated: return JsonResponse(account_dict(Account.objects.get(id=id))) else: return HttpResponse('account not found', status=409) elif level == 'index_set_cfg': id = request.GET.get('id') cid = request.GET.get('cfg') c = IndexConfiguration.objects.get(id=cid) updated = Index.objects.filter(id=id).update(configuration=c) if updated: return JsonResponse(index_dict(Index.objects.get(id=id))) else: return HttpResponse('index not found', status=409) return HttpResponseNotFound()
def operations(request): #if request.method == 'POST': # if request.POST['task'] == 'redeploy': # id = request.POST['index_id'] # rpc.get_deploy_manager().redeploy_index(Index.objects.get(pk=id).code) # return HttpResponseRedirect('/resource_map') level = request.GET.get('level', 'top') if level == 'top': return render_to_response('operations/index.html', Context({}, request)) elif level == 'refresh': data = { 'Config': map(configuration_dict, IndexConfiguration.objects.all()), 'Account': map(account_dict, Account.objects.select_related('user').all()), 'Deploy': map(deploy_dict, Deploy.objects.all()), 'Index': map(index_dict, Index.objects.all()), 'Package': map(package_dict, Package.objects.all()), 'Worker': map(worker_dict, Worker.objects.all()), } return JsonResponse(data) elif level == 'index': id = request.GET.get('id') index = Index.objects.get(pk=id) data = { 'Index': index_dict(index), 'Deploy': map(deploy_dict, index.deploys.all()), } return JsonResponse(data) elif level == 'stats': id = request.GET.get('id') d = Deploy.objects.get(pk=id) client = rpc.getThriftIndexerClient(d.worker.lan_dns, int(d.base_port), 3000) return JsonResponse(client.get_stats()) elif level == 'log': id = request.GET.get('id') file = request.GET.get('file') d = Deploy.objects.get(pk=id) client = rpc.get_worker_controller(d.worker, 4000) lines = client.tail(file, 300, d.index.code, d.base_port) return JsonResponse(lines) elif level == 'redeploy': id = request.GET.get('id') rpc.get_deploy_manager().redeploy_index(Index.objects.get(pk=id).code) return HttpResponse() elif level == 'decommission': id = request.GET.get('id') Worker.objects.filter(id=id).update( status=Worker.States.decommissioning) return JsonResponse(worker_dict(Worker.objects.get(id=id))) elif level == 'delete_worker': id = request.GET.get('id') w = Worker.objects.get(id=id) if w.status != Worker.States.decommissioning: return HttpResponse('worker not decommissioning', status=409) if w.deploys.count(): return HttpResponse('worker not empty', status=409) w.delete() return HttpResponse() elif level == 'delete_account': id = request.GET.get('id') a = Account.objects.get(id=id) user = a.user.user if a.indexes.count(): return HttpResponse('account has index', status=409) if a.payment_informations.count(): return HttpResponse('account has payment information', status=409) user = a.user.user a.delete() user.delete() return HttpResponse() elif level == 'account_set_pkg': id = request.GET.get('id') pid = request.GET.get('pkg') p = Package.objects.get(id=pid) updated = Account.objects.filter(id=id).update(package=p) if updated: return JsonResponse(account_dict(Account.objects.get(id=id))) else: return HttpResponse('account not found', status=409) elif level == 'account_set_cfg': id = request.GET.get('id') cid = request.GET.get('cfg') c = IndexConfiguration.objects.get(id=cid) updated = Account.objects.filter(id=id).update(configuration=c) if updated: return JsonResponse(account_dict(Account.objects.get(id=id))) else: return HttpResponse('account not found', status=409) elif level == 'index_set_cfg': id = request.GET.get('id') cid = request.GET.get('cfg') c = IndexConfiguration.objects.get(id=cid) updated = Index.objects.filter(id=id).update(configuration=c) if updated: return JsonResponse(index_dict(Index.objects.get(id=id))) else: return HttpResponse('index not found', status=409) return HttpResponseNotFound()