Skip to content

Commit

Permalink
Add a check for unlimited quotas
Browse files Browse the repository at this point in the history
This extra check will prevent Horizon to
misunderstand "-1" value when tallying quotas,
setting the "Available" field to inf
instead of 0.

Change-Id: Idfeb9a10b8ce8eea1a39b3d48dffe08d6450fadd
Fixes: bug #1084976
  • Loading branch information
vkmc committed Jan 11, 2013
1 parent 1d1fa85 commit ebc5e6d
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion horizon/api/nova.py
Expand Up @@ -455,7 +455,7 @@ def tenant_quota_usages(request):

usages[usage]['quota'] = getattr(quotas, usage)

if usages[usage]['quota'] is None:
if usages[usage]['quota'] is None or usages[usage]['quota'] == -1:
usages[usage]['quota'] = float("inf")
usages[usage]['available'] = float("inf")
elif type(usages[usage]['quota']) is str:
Expand Down
51 changes: 51 additions & 0 deletions horizon/tests/api_tests/nova_tests.py
Expand Up @@ -204,3 +204,54 @@ def test_tenant_quota_usages(self):
'quota': 10}}

self.assertEquals(quota_usages, expected_output)

@test.create_stubs({api.nova: ('volume_list',
'server_list',
'flavor_list',
'tenant_floating_ip_list',
'tenant_quota_get',)})
def test_tenant_quota_usages_unlimited_quota(self):
inf_quota = self.quotas.first()
inf_quota.ram = -1

api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.tenant_quota_get(IsA(http.HttpRequest), '1') \
.AndReturn(inf_quota)
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.volume_list(IsA(http.HttpRequest)) \
.AndReturn(self.volumes.list())

self.mox.ReplayAll()

quota_usages = api.tenant_quota_usages(self.request)
expected_output = {'gigabytes': {
'used': 80,
'flavor_fields': [],
'quota': 1000},
'ram': {
'available': float("inf"),
'used': 1024,
'flavor_fields': ['ram'],
'quota': float("inf")},
'floating_ips': {
'used': 2,
'flavor_fields': [],
'quota': 1},
'instances': {
'used': 2,
'flavor_fields': [],
'quota': 10},
'volumes': {
'used': 3,
'flavor_fields': [],
'quota': 1},
'cores': {
'used': 2,
'flavor_fields': ['vcpus'],
'quota': 10}}

self.assertEquals(quota_usages, expected_output)

0 comments on commit ebc5e6d

Please sign in to comment.