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