Beispiel #1
0
def aws_cpu_days_of_the_week_usage_m(accounts):
    """---
    get:
        tags:
            - aws
        produces:
            - application/json
        description: &desc AWS CPU usage by days of the week
        summary: *desc
        responses:
            200:
                description: List of days
                schema:
                    properties:
                        hours:
                            type: array
                            items:
                                properties:
                                    day:
                                        type: string
                                    cpu:
                                        type: number
            403:
                description: Not logged in
            404:
                description: AWS account not registered
    """
    days = AWSMetric.days_of_the_week_cpu_usage(account.key
                                                for account in accounts)
    if not days:
        return jsonify(message=get_next_update_estimation_message_aws(
            accounts, AWS_KEY_PROCESSING_INTERVAL_HOURS))
    return jsonify(dict(hours=days))
Beispiel #2
0
def get_daily_cpu_usage_by_tag(session, key):
    tags = defaultdict(lambda : defaultdict(list))
    res = defaultdict(list)
    for region, instance in get_all_instances(session):
        if instance.tags:
            for tag in instance.tags:
                if tag['Key'] != 'Name' and not tag['Key'].startswith('aws:'):
                    tags[tag['Key']][tag['Value']].append(region+'/'+instance.id)
    for tag_key, tag_values_dict in tags.iteritems():
        for tag_value, instance_ids in tag_values_dict.iteritems():
            usage = AWSMetric.days_of_the_week_cpu_usage(key, resources=instance_ids)
            if usage:
                res[tag_key].append(dict(tag_value=tag_value, usage=usage, nb_instances=len(instance_ids)))
    for tag_key, values in res.iteritems():
        res[tag_key] = sorted(res[tag_key], key=lambda x: x['nb_instances'], reverse=True)[:10]
    return dict(tags=res)