Example #1
0
 def monitor(self, object):
     try:
         rpc.get_deploy_manager().service_deploys()
         return True
     except NebuException, e:
         self.nebu_e = e
         return False
 def monitor(self, object):
     try:
         rpc.get_deploy_manager().service_deploys()
         return True
     except NebuException, e:
         self.nebu_e = e
         return False
Example #3
0
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))
Example #4
0
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))
Example #5
0
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()
Example #6
0
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()