Пример #1
0
def usage_index(request):
    result = progress(request)
    if result is not None:
        return result

    start, end = get_date_range(request)

    result = gen_machine_category_cache(request, start, end)
    if result is not None:
        return render_to_response(
            'usage/progress.html',
            {'task_id': result.task_id},
            context_instance=RequestContext(request))

    mc_list = []
    for machine_category in MachineCategory.objects.all():
        mc_list.append({
            'obj': machine_category,
            'graph': graphs.get_machine_graph_url(
                start, end, machine_category),
        })

    return render_to_response(
        'usage/mc_list.html', locals(),
        context_instance=RequestContext(request))
Пример #2
0
def usage_index(request):
    start, end = get_date_range(request)

    mc_list = []
    for machine_category in MachineCategory.objects.all():
        m_list = []
        for machine in machine_category.machine_set.all():
            time, jobs = machine.get_usage(start, end)
            if time is None:
                time = 0
            m_list.append({'obj': machine, 'usage': time, 'jobs': jobs})
        mc_list.append({
            'obj': machine_category,
            'machines': m_list,
            'graph': get_machine_graph_url(start, end, machine_category),
        })
        del m_list

    return render_to_response('usage/mc_list.html', locals(), context_instance=RequestContext(request))
Пример #3
0
def index(request, machine_category_id):

    if not getattr(settings, 'USAGE_IS_PUBLIC', False):
        return HttpResponseForbidden('<h1>Access Denied</h1>')
    
    machine_category = get_object_or_404(MachineCategory, pk=machine_category_id)
    mc_list = MachineCategory.objects.exclude(id__exact=machine_category_id)
    
    show_zeros = True

    institute_list = Institute.active.all()
    total, total_jobs = 0, 0
    i_list = []
    m_list = []
    start, end = get_date_range(request)

    available_time, avg_cpus = get_available_time(start, end, machine_category)
    
    for m in machine_category.machine_set.all():
        time, jobs = m.get_usage(start, end)
        if time is None:
            time = 0
        m_list.append({'machine': m, 'usage': time, 'jobs': jobs})
            
    for iq in machine_category.institutequota_set.all():
        i = iq.institute

        time, jobs = i.get_usage(start, end, machine_category)
        if time is None:
            time = 0
    
        total = total + time
        total_jobs = total_jobs + jobs
        try:
            quota = InstituteQuota.objects.get(institute=i, machine_category=machine_category)
            display_quota = quota.quota
        except InstituteQuota.DoesNotExist:
            display_quota = None

        else:
            data_row = {'institute': i, 'usage': time, 'jobs': jobs, 'quota': display_quota}
            if available_time != 0:
                data_row['percent'] = Decimal(time) / Decimal(available_time) * 100
            else:
                data_row['percent'] = 0
            if data_row['quota'] is not None:
                if data_row['quota'] != 0:
                    data_row['p_used'] = (data_row['percent'] / data_row['quota']) * 100
                else:
                    data_row['p_used'] = 0
                data_row['diff'] = data_row['percent'] - data_row['quota']
                if data_row['diff'] <= 0:
                    data_row['class'] = 'green'
                else:
                    data_row['class'] = 'red'
            else:
                data_row['class'] = 'green'

            i_list.append(data_row)

    # Unused Entry
    unused = {'usage': available_time - total, 'quota': 0}
    try:
        unused['percent'] = (unused['usage'] / available_time) * 100
    except ZeroDivisionError:
        unused['percent'] = 0
    unused['diff'] = unused['percent'] - unused['quota'] / 100
    if unused['diff'] <= 0:
        unused['class'] = 'green'
    else:
        unused['class'] = 'red'

    if available_time != 0:
        utilization = (Decimal(total) / available_time) * 100
    else:
        utilization = 0

    institutes_graph = get_institute_graph_url(start, end, machine_category)
    machines_graph = get_machine_graph_url(start, end, machine_category)
    trend_graph = get_trend_graph_url(start, end, machine_category)

    return render_to_response('usage/usage_institute_list.html', locals(), context_instance=RequestContext(request))
Пример #4
0
def index(request, machine_category_id):
    machine_category = get_object_or_404(
        MachineCategory, pk=machine_category_id)
    mc_list = MachineCategory.objects.exclude(id__exact=machine_category_id)

    result = progress(request)
    if result is not None:
        return result

    start, end = get_date_range(request)

    result = gen_cache_for_machine_category(
        request, start, end, machine_category)
    if result is not None:
        return render_to_response(
            'usage/progress.html',
            {'task_id': result.task_id},
            context_instance=RequestContext(request))

    show_zeros = True

    institute_list = Institute.active.all()
    i_list = []
    m_list = []

    mc_cache = usage.get_machine_category_usage(machine_category, start, end)
    total = mc_cache.cpu_time
    total_jobs = mc_cache.no_jobs
    available_time = mc_cache.available_time
    avg_cpus = available_time / (60*24*24) / ((end-start).days + 1)

    for m_cache in models.MachineCache.objects.filter(
            machine__category=machine_category,
            date=datetime.date.today(), start=start, end=end):
        m = m_cache.machine
        time = m_cache.cpu_time
        jobs = m_cache.no_jobs
        m_list.append({'machine': m, 'usage': time, 'jobs': jobs})

    for i_cache in models.InstituteCache.objects.filter(
            machine_category=machine_category,
            date=datetime.date.today(), start=start, end=end):
        i = i_cache.institute
        time = i_cache.cpu_time
        jobs = i_cache.no_jobs

        try:
            quota = InstituteQuota.objects.get(
                institute=i, machine_category=machine_category)
            display_quota = quota.quota
        except InstituteQuota.DoesNotExist:
            display_quota = None

        if display_quota is None and time == 0 and jobs == 0:
            continue

        data_row = {
            'institute': i,
            'usage': time,
            'jobs': jobs,
            'quota': display_quota
        }

        if available_time != 0:
            data_row['percent'] = Decimal(time) / Decimal(available_time) * 100
        else:
            data_row['percent'] = 0
        if data_row['quota'] is not None:
            if data_row['quota'] != 0:
                data_row['p_used'] = (data_row['percent']
                                      / data_row['quota']) * 100
            else:
                data_row['p_used'] = None
            data_row['diff'] = data_row['percent'] - data_row['quota']
            if data_row['diff'] <= 0:
                data_row['class'] = 'green'
            else:
                data_row['class'] = 'red'
        else:
            data_row['class'] = 'green'
            data_row['diff'] = None
            data_row['p_used'] = None

        i_list.append(data_row)

    # Unused Entry
    unused = {'usage': available_time - total, 'quota': 0}
    if available_time != 0:
        unused['percent'] = (unused['usage'] / available_time) * 100
    else:
        unused['percent'] = 0
    unused['diff'] = unused['percent'] - unused['quota'] / 100
    if unused['diff'] <= 0:
        unused['class'] = 'green'
    else:
        unused['class'] = 'red'

    if available_time != 0:
        utilization = (Decimal(total) / available_time) * 100
    else:
        utilization = 0

    institutes_graph = graphs.get_institute_graph_url(
        start, end, machine_category)
    machines_graph = graphs.get_machine_graph_url(
        start, end, machine_category)
    trend_graph = graphs.get_trend_graph_url(
        start, end, machine_category)

    return render_to_response(
        'usage/usage_institute_list.html', locals(),
        context_instance=RequestContext(request))