示例#1
0
def total_cores_per_domain(request):
    q_from = request.GET.get('from', "-60minutes")
    q_az = request.GET.get('az', "melbourne")
    targets = []

    if q_az in QUERY:
        targets.extend([graphite.Target(target)
                        for target in QUERY[q_az]])
    else:
        targets.append(graphite.Target("az.%s.domain.*.used_vcpus" % q_az))
    req = graphite.get(from_date=q_from, targets=targets)
    cleaned = defaultdict(dict)
    for domain in req.json():
        domain_name = '.'.join(domain['target'].split('.')[-2].split('_'))
        data = cleaned[domain_name]
        data['target'] = domain_name
        try:
            count = choose_first(domain['datapoints']).next()
        except:
            count = 0
        if data.get('value'):
            data['value'] += count
        else:
            data['value'] = count
    cleaned = cleaned.values()
    cleaned.sort(key=itemgetter('value'))
    return HttpResponse(dumps(cleaned), req.headers['content-type'])
示例#2
0
def composition_cores(request, name):
    q_from = request.GET.get('from', "-60minutes")
    q_az = request.GET.get('az', "melbourne")
    targets = []

    if q_az in settings.COMPOSITION_QUERY:
        targets.extend([
            graphite.Target(target % name)
            for target in settings.COMPOSITION_QUERY[q_az]
        ])
    else:
        targets.append(graphite.Target("az.%s.%s.*.used_vcpus" % (q_az, name)))
    req = graphite.get(from_date=q_from, targets=targets)
    cleaned = defaultdict(dict)
    for item in req.json():
        item_name = '.'.join(item['target'].split('.')[-2].split('_'))
        data = cleaned[item_name]
        data['target'] = item_name
        try:
            count = next(choose_first(item['datapoints']))
        except Exception:
            count = 0
        if data.get('value'):
            data['value'] += count
        else:
            data['value'] = count
    cleaned = list(cleaned.values())
    sorted(cleaned, key=lambda x: x['value'])
    return HttpResponse(dumps(cleaned), req.headers['content-type'])
示例#3
0
def composition_cores(request, name):
    q_from = request.GET.get('from', "-60minutes")
    q_az = request.GET.get('az', "melbourne")
    targets = []

    if q_az in COMPOSITION_QUERY:
        targets.extend([graphite.Target(target % name)
                        for target in COMPOSITION_QUERY[q_az]])
    else:
        targets.append(graphite.Target("az.%s.%s.*.used_vcpus" % (q_az, name)))
    req = graphite.get(from_date=q_from, targets=targets)
    cleaned = defaultdict(dict)
    for item in req.json():
        item_name = '.'.join(item['target'].split('.')[-2].split('_'))
        data = cleaned[item_name]
        data['target'] = item_name
        try:
            count = choose_first(item['datapoints']).next()
        except:
            count = 0
        if data.get('value'):
            data['value'] += count
        else:
            data['value'] = count
    cleaned = cleaned.values()
    cleaned.sort(key=itemgetter('value'))
    return HttpResponse(dumps(cleaned), req.headers['content-type'])
示例#4
0
def test_get_target(mock_get):
    target = graphite.Target("test.az.something").alias("foo")
    response = graphite.get(from_date='-1year', targets=[target])
    mock_get.assert_called_with(
        'http://graphite.dev.rc.nectar.org.au/render/'
        '?format=json'
        '&target=alias%28test.az.something%2C+%22foo%22%29'
        '&from=-1year')
    assert response == mock_get()
示例#5
0
def test_get_target(mock_get):
    target = graphite.Target("test.az.something").alias("foo")
    response = graphite.get(from_date='-1year', targets=[target])
    mock_get.assert_called_with(
        'http://graphite.dev.rc.nectar.org.au/render/'
        '?format=json'
        '&target=alias%28test.az.something%2C+%22foo%22%29'
        '&from=-1year')
    assert response == mock_get()
示例#6
0
def total_used_cores(request):
    q_from = request.GET.get('from', "-6months")
    q_summarise = request.GET.get('summarise', None)

    targets = [graphite.Target(target).summarize(q_summarise).alias(alias)
               for alias, target in CORES_TARGETS]

    req = graphite.get(from_date=q_from, targets=targets)
    data = graphite.fill_null_datapoints(req.json(), q_summarise)
    return HttpResponse(dumps(data), req.headers['content-type'])
示例#7
0
def total_used_cores(request):
    q_from = request.GET.get('from', "-6months")
    q_summarise = request.GET.get('summarise', None)

    targets = [graphite.Target(target).summarize(q_summarise).alias(alias)
               for alias, target in CORES_TARGETS]

    req = graphite.get(from_date=q_from, targets=targets)
    data = graphite.fill_null_datapoints(req.json())
    return HttpResponse(dumps(data), req.headers['content-type'])
示例#8
0
def total_capacity(request, ram_size=4096):
    q_from = request.GET.get('from', "-6months")
    q_summarise = request.GET.get('summarise', None)

    targets = [graphite.Target(
        target % {'ram_size': ram_size}).summarize(q_summarise).alias(alias)
        for alias, target in CAPACITY_TARGETS]

    req = graphite.get(from_date=q_from, targets=targets)
    data = graphite.fill_null_datapoints(req.json(), q_summarise)

    return HttpResponse(dumps(data), req.headers['content-type'])
示例#9
0
def total_capacity(request, ram_size=4096):
    q_from = request.GET.get('from', "-6months")
    q_summarise = request.GET.get('summarise', None)

    targets = [graphite.Target(
        target % {'ram_size': ram_size}).summarize(q_summarise).alias(alias)
        for alias, target in CAPACITY_TARGETS]

    req = graphite.get(from_date=q_from, targets=targets)
    data = graphite.fill_null_datapoints(req.json())

    return HttpResponse(dumps(data), req.headers['content-type'])
示例#10
0
def total_instance_count(request):
    q_from = request.GET.get('from', "-6months")
    q_until = request.GET.get('until', None)
    q_summarise = request.GET.get('summarise', None)

    targets = [
        graphite.Target(target).summarize(q_summarise).alias(alias)
        for alias, target in settings.INST_TARGETS
    ]

    req = graphite.get(from_date=q_from, until_date=q_until, targets=targets)
    data = graphite.fill_null_datapoints(req.json(), q_summarise)
    return HttpResponse(dumps(data), req.headers['content-type'])
示例#11
0
def find_daily_accumulated_users():
    '''
    Retrieve the history of the cumulative and frequency counts of users
    added by the end of each day.
    '''
    targets = []

    targets.append(
        graphite.Target('users.total').smartSummarize(
            '1d', 'max').alias('Cumulative'))
    targets.append(
        graphite.Target('users.total').smartSummarize(
            '1d', 'max').derivative().alias('Frequency'))

    response = graphite.get(from_date=settings.USER_STATISTICS_START_DATE,
                            targets=targets)
    return graphite.filter_null_datapoints(response.json())
示例#12
0
def find_daily_accumulated_users():
    '''
    Retrieve the history of the cumulative and frequency counts of users
    added by the end of each day.
    '''
    targets = []

    targets.append(graphite.Target('users.total')
                   .smartSummarize('1d', 'max')
                   .alias('Cumulative'))
    targets.append(graphite.Target('users.total')
                   .smartSummarize('1d', 'max')
                   .derivative()
                   .alias('Frequency'))

    response = graphite.get(from_date=settings.USER_STATISTICS_START_DATE,
                            targets=targets)
    return graphite.filter_null_datapoints(response.json())
示例#13
0
def find_current_project_resource_usage(tenancy_id):
    '''
    Retrieve the last daily value for the project/tenancy
    usage of instances and cores.
    '''
    today = date.today()
    today_str = today.strftime('%Y%m%d')

    targets = []

    target_name = "tenant.%s.total_instances" % tenancy_id
    targets.append(graphite.Target(target_name)
                   .smartSummarize('1d', 'max')
                   .alias('instance_count'))

    target_name = "tenant.%s.used_vcpus" % tenancy_id
    targets.append(graphite.Target(target_name)
                   .smartSummarize('1d', 'max')
                   .alias('core_count'))

    response = graphite.get(from_date=today_str, targets=targets)
    return graphite.filter_null_datapoints(response.json())
示例#14
0
def find_current_project_resource_usage(tenancy_id):
    '''
    Retrieve the last daily value for the project/tenancy
    usage of instances and cores.
    '''
    today = date.today()
    today_str = today.strftime('%Y%m%d')

    targets = []

    target_name = "tenant.%s.total_instances" % tenancy_id
    targets.append(
        graphite.Target(target_name).smartSummarize(
            '1d', 'max').alias('instance_count'))

    target_name = "tenant.%s.used_vcpus" % tenancy_id
    targets.append(
        graphite.Target(target_name).smartSummarize('1d',
                                                    'max').alias('core_count'))

    response = graphite.get(from_date=today_str, targets=targets)
    return graphite.filter_null_datapoints(response.json())
示例#15
0
def test_get(mock_get):
    response = graphite.get(from_date='-1year')
    mock_get.assert_called_with(
        'http://graphite.dev.rc.nectar.org.au/render/?format=json&from=-1year')
    assert response == mock_get()
示例#16
0
def test_get(mock_get):
    response = graphite.get(from_date='-1year')
    mock_get.assert_called_with(
        'http://graphite.dev.rc.nectar.org.au/render/?format=json&from=-1year')
    assert response == mock_get()