Revision d05e5324 snf-cyclades-app/synnefo/quotas/util.py

b/snf-cyclades-app/synnefo/quotas/util.py
33 33

  
34 34
from django.db.models import Sum, Count, Q
35 35

  
36
from synnefo.db.models import VirtualMachine, Network, IPAddress
36
from synnefo.db.models import VirtualMachine, Network, IPAddress, Volume
37 37
from synnefo.quotas import Quotaholder
38 38

  
39 39

  
......
44 44
    vms = VirtualMachine.objects.filter(deleted=False)
45 45
    networks = Network.objects.filter(deleted=False)
46 46
    floating_ips = IPAddress.objects.filter(deleted=False, floating_ip=True)
47
    volumes = Volume.objects.filter(deleted=False)
47 48

  
48 49
    if user is not None:
49 50
        vms = vms.filter(userid=user)
......
54 55
    vm_resources = vms.values("userid")\
55 56
                      .annotate(num=Count("id"),
56 57
                                total_ram=Sum("flavor__ram"),
57
                                total_cpu=Sum("flavor__cpu"),
58
                                disk=Sum("flavor__disk"))
58
                                total_cpu=Sum("flavor__cpu"))
59 59
    vm_active_resources = \
60 60
        vms.values("userid")\
61 61
           .filter(Q(operstate="STARTED") | Q(operstate="BUILD") |
......
67 67
        user = vm_res['userid']
68 68
        res = {"cyclades.vm": vm_res["num"],
69 69
               "cyclades.total_cpu": vm_res["total_cpu"],
70
               "cyclades.disk": 1073741824 * vm_res["disk"],
71
               "cyclades.total_ram": 1048576 * vm_res["total_ram"]}
70
               "cyclades.total_ram": vm_res["total_ram"] << 20}
72 71
        holdings[user] = res
73 72

  
74 73
    for vm_res in vm_active_resources.iterator():
75 74
        user = vm_res['userid']
76 75
        holdings[user]["cyclades.cpu"] = vm_res["cpu"]
77
        holdings[user]["cyclades.ram"] = 1048576 * vm_res["ram"]
76
        holdings[user]["cyclades.ram"] = vm_res["ram"] << 20
77

  
78
    # Get disk resource
79
    disk_resources = volumes.values("userid").annotate(Sum("size"))
80
    for disk_res in disk_resources.iterator():
81
        user = disk_res["userid"]
82
        holdings.setdefault(user, {})
83
        holdings[user]["cyclades.disk"] = disk_res["size__sum"] << 30
78 84

  
79 85
    # Get resources related with networks
80 86
    net_resources = networks.values("userid")\

Also available in: Unified diff