Merge "Remove use of "quota_tenant_usages" in Volumes page"

This commit is contained in:
Jenkins 2014-08-04 06:05:11 +00:00 committed by Gerrit Code Review
commit 36cb07c721
6 changed files with 47 additions and 47 deletions

View File

@ -353,6 +353,7 @@ def volume_type_extra_delete(request, type_id, keys):
return vol_type.unset_keys([keys]) return vol_type.unset_keys([keys])
@memoized
def tenant_absolute_limits(request): def tenant_absolute_limits(request):
limits = cinderclient(request).limits.get().absolute limits = cinderclient(request).limits.get().absolute
limits_dict = {} limits_dict = {}

View File

@ -17,7 +17,6 @@ from mox import IsA # noqa
from openstack_dashboard import api from openstack_dashboard import api
from openstack_dashboard.test import helpers as test from openstack_dashboard.test import helpers as test
from openstack_dashboard.usage import quotas
INDEX_URL = reverse('horizon:project:volumes:index') INDEX_URL = reverse('horizon:project:volumes:index')
@ -58,8 +57,8 @@ class VolumeBackupsViewTests(test.TestCase):
'volume_list', 'volume_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list', 'volume_backup_list',
'volume_backup_delete'), 'volume_backup_delete',
quotas: ('tenant_quota_usages',)}) 'tenant_absolute_limits')})
def test_delete_volume_backup(self): def test_delete_volume_backup(self):
vol_backups = self.cinder_volume_backups.list() vol_backups = self.cinder_volume_backups.list()
volumes = self.cinder_volumes.list() volumes = self.cinder_volumes.list()
@ -85,8 +84,8 @@ class VolumeBackupsViewTests(test.TestCase):
AndReturn(vol_backups) AndReturn(vol_backups)
api.cinder.volume_list(IsA(http.HttpRequest)). \ api.cinder.volume_list(IsA(http.HttpRequest)). \
AndReturn(volumes) AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).MultipleTimes(). \ api.cinder.tenant_absolute_limits(IsA(http.HttpRequest))\
AndReturn(self.quota_usages.first()) .MultipleTimes().AndReturn(self.cinder_limits['absolute'])
self.mox.ReplayAll() self.mox.ReplayAll()
formData = {'action': formData = {'action':

View File

@ -106,12 +106,12 @@ class VolumeSnapshotsViewTests(test.TestCase):
self.assertRedirectsNoFollow(res, VOLUME_SNAPSHOTS_TAB_URL) self.assertRedirectsNoFollow(res, VOLUME_SNAPSHOTS_TAB_URL)
@test.create_stubs({api.nova: ('server_list',), @test.create_stubs({api.nova: ('server_list',),
api.cinder: ('volume_snapshot_list', api.cinder: ('tenant_absolute_limits',
'volume_snapshot_list',
'volume_list', 'volume_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list', 'volume_backup_list',
'volume_snapshot_delete'), 'volume_snapshot_delete')})
quotas: ('tenant_quota_usages',)})
def test_delete_volume_snapshot(self): def test_delete_volume_snapshot(self):
vol_snapshots = self.cinder_volume_snapshots.list() vol_snapshots = self.cinder_volume_snapshots.list()
volumes = self.cinder_volumes.list() volumes = self.cinder_volumes.list()
@ -138,8 +138,8 @@ class VolumeSnapshotsViewTests(test.TestCase):
AndReturn(vol_backups) AndReturn(vol_backups)
api.cinder.volume_list(IsA(http.HttpRequest)). \ api.cinder.volume_list(IsA(http.HttpRequest)). \
AndReturn(volumes) AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).MultipleTimes(). \ api.cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes(). \
AndReturn(self.quota_usages.first()) AndReturn(self.cinder_limits['absolute'])
self.mox.ReplayAll() self.mox.ReplayAll()
formData = {'action': formData = {'action':

View File

@ -19,20 +19,19 @@ from mox import IsA # noqa
from openstack_dashboard import api from openstack_dashboard import api
from openstack_dashboard.test import helpers as test from openstack_dashboard.test import helpers as test
from openstack_dashboard.usage import quotas
INDEX_URL = reverse('horizon:project:volumes:index') INDEX_URL = reverse('horizon:project:volumes:index')
class VolumeAndSnapshotsTests(test.TestCase): class VolumeAndSnapshotsTests(test.TestCase):
@test.create_stubs({api.cinder: ('volume_list', @test.create_stubs({api.cinder: ('tenant_absolute_limits',
'volume_list',
'volume_snapshot_list', 'volume_snapshot_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list', 'volume_backup_list',
), ),
api.nova: ('server_list',), api.nova: ('server_list',)})
quotas: ('tenant_quota_usages',)})
def _test_index(self, backup_supported=True): def _test_index(self, backup_supported=True):
vol_backups = self.cinder_volume_backups.list() vol_backups = self.cinder_volume_backups.list()
vol_snaps = self.cinder_volume_snapshots.list() vol_snaps = self.cinder_volume_snapshots.list()
@ -51,8 +50,8 @@ class VolumeAndSnapshotsTests(test.TestCase):
api.cinder.volume_backup_list(IsA(http.HttpRequest)).\ api.cinder.volume_backup_list(IsA(http.HttpRequest)).\
AndReturn(vol_backups) AndReturn(vol_backups)
api.cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes) api.cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).MultipleTimes(). \ api.cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes(). \
AndReturn(self.quota_usages.first()) AndReturn(self.cinder_limits['absolute'])
self.mox.ReplayAll() self.mox.ReplayAll()
res = self.client.get(INDEX_URL) res = self.client.get(INDEX_URL)

View File

@ -28,7 +28,6 @@ from horizon import tables
from openstack_dashboard import api from openstack_dashboard import api
from openstack_dashboard.api import cinder from openstack_dashboard.api import cinder
from openstack_dashboard import policy from openstack_dashboard import policy
from openstack_dashboard.usage import quotas
DELETABLE_STATES = ("available", "error", "error_extending") DELETABLE_STATES = ("available", "error", "error_extending")
@ -99,9 +98,14 @@ class CreateVolume(tables.LinkAction):
super(CreateVolume, self).__init__(attrs, **kwargs) super(CreateVolume, self).__init__(attrs, **kwargs)
def allowed(self, request, volume=None): def allowed(self, request, volume=None):
usages = quotas.tenant_quota_usages(request) limits = api.cinder.tenant_absolute_limits(request)
if usages['gigabytes']['available'] <= 0 or\
usages['volumes']['available'] <= 0: gb_available = (limits.get('maxTotalVolumeGigabytes', float("inf"))
- limits.get('totalGigabytesUsed', 0))
volumes_available = (limits.get('maxTotalVolumes', float("inf"))
- limits.get('totalVolumesUsed', 0))
if gb_available <= 0 or volumes_available <= 0:
if "disabled" not in self.classes: if "disabled" not in self.classes:
self.classes = [c for c in self.classes] + ['disabled'] self.classes = [c for c in self.classes] + ['disabled']
self.verbose_name = string_concat(self.verbose_name, ' ', self.verbose_name = string_concat(self.verbose_name, ' ',

View File

@ -704,13 +704,13 @@ class VolumeViewTests(test.TestCase):
' volumes.'] ' volumes.']
self.assertEqual(res.context['form'].errors['__all__'], expected_error) self.assertEqual(res.context['form'].errors['__all__'], expected_error)
@test.create_stubs({cinder: ('volume_list', @test.create_stubs({cinder: ('tenant_absolute_limits',
'volume_list',
'volume_snapshot_list', 'volume_snapshot_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list', 'volume_backup_list',
'volume_delete',), 'volume_delete',),
api.nova: ('server_list',), api.nova: ('server_list',)})
quotas: ('tenant_quota_usages',)})
def test_delete_volume(self): def test_delete_volume(self):
volumes = self.cinder_volumes.list() volumes = self.cinder_volumes.list()
volume = self.cinder_volumes.first() volume = self.cinder_volumes.first()
@ -735,8 +735,8 @@ class VolumeViewTests(test.TestCase):
api.nova.server_list(IsA(http.HttpRequest), search_opts=None).\ api.nova.server_list(IsA(http.HttpRequest), search_opts=None).\
AndReturn([self.servers.list(), False]) AndReturn([self.servers.list(), False])
cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes) cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).MultipleTimes().\ cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes().\
AndReturn(self.quota_usages.first()) AndReturn(self.cinder_limits['absolute'])
self.mox.ReplayAll() self.mox.ReplayAll()
@ -745,13 +745,13 @@ class VolumeViewTests(test.TestCase):
self.assertIn("Scheduled deletion of Volume: Volume name", self.assertIn("Scheduled deletion of Volume: Volume name",
[m.message for m in res.context['messages']]) [m.message for m in res.context['messages']])
@test.create_stubs({cinder: ('volume_list', @test.create_stubs({cinder: ('tenant_absolute_limits',
'volume_list',
'volume_snapshot_list', 'volume_snapshot_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list', 'volume_backup_list',
'volume_delete',), 'volume_delete',),
api.nova: ('server_list',), api.nova: ('server_list',)})
quotas: ('tenant_quota_usages',)})
def test_delete_volume_error_existing_snapshot(self): def test_delete_volume_error_existing_snapshot(self):
volume = self.cinder_volumes.first() volume = self.cinder_volumes.first()
volumes = self.cinder_volumes.list() volumes = self.cinder_volumes.list()
@ -779,9 +779,8 @@ class VolumeViewTests(test.TestCase):
AndReturn(self.cinder_volume_backups.list()) AndReturn(self.cinder_volume_backups.list())
cinder.volume_list(IsA(http.HttpRequest)).\ cinder.volume_list(IsA(http.HttpRequest)).\
AndReturn(volumes) AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).MultipleTimes().\ cinder.tenant_absolute_limits(IsA(http.HttpRequest)).MultipleTimes().\
AndReturn(self.quota_usages.first()) AndReturn(self.cinder_limits['absolute'])
self.mox.ReplayAll() self.mox.ReplayAll()
url = VOLUME_INDEX_URL url = VOLUME_INDEX_URL
@ -845,8 +844,7 @@ class VolumeViewTests(test.TestCase):
widgets.HiddenInput)) widgets.HiddenInput))
@test.create_stubs({cinder: ('volume_get',), @test.create_stubs({cinder: ('volume_get',),
api.nova: ('server_get', 'server_list',), api.nova: ('server_list',)})
quotas: ('tenant_quota_usages',)})
def test_edit_attachments_attached_volume(self): def test_edit_attachments_attached_volume(self):
servers = [s for s in self.servers.list() servers = [s for s in self.servers.list()
if s.tenant_id == self.request.user.tenant_id] if s.tenant_id == self.request.user.tenant_id]
@ -872,15 +870,15 @@ class VolumeViewTests(test.TestCase):
server.id) server.id)
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
@test.create_stubs({cinder: ('volume_list', @test.create_stubs({cinder: ('tenant_absolute_limits',
'volume_list',
'volume_snapshot_list', 'volume_snapshot_list',
'volume_backup_supported', 'volume_backup_supported',
'volume_backup_list',), 'volume_backup_list',),
api.nova: ('server_list',), api.nova: ('server_list',)})
quotas: ('tenant_quota_usages',)})
def test_create_button_disabled_when_quota_exceeded(self): def test_create_button_disabled_when_quota_exceeded(self):
quota_usages = self.quota_usages.first() limits = self.cinder_limits['absolute']
quota_usages['volumes']['available'] = 0 limits['totalVolumesUsed'] = limits['maxTotalVolumes']
volumes = self.cinder_volumes.list() volumes = self.cinder_volumes.list()
api.cinder.volume_backup_supported(IsA(http.HttpRequest)). \ api.cinder.volume_backup_supported(IsA(http.HttpRequest)). \
@ -895,9 +893,8 @@ class VolumeViewTests(test.TestCase):
cinder.volume_backup_list(IsA(http.HttpRequest))\ cinder.volume_backup_list(IsA(http.HttpRequest))\
.AndReturn(self.cinder_volume_backups.list()) .AndReturn(self.cinder_volume_backups.list())
cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes) cinder.volume_list(IsA(http.HttpRequest)).AndReturn(volumes)
quotas.tenant_quota_usages(IsA(http.HttpRequest))\ cinder.tenant_absolute_limits(IsA(http.HttpRequest))\
.MultipleTimes().AndReturn(quota_usages) .MultipleTimes().AndReturn(limits)
self.mox.ReplayAll() self.mox.ReplayAll()
res = self.client.get(VOLUME_INDEX_URL) res = self.client.get(VOLUME_INDEX_URL)
@ -1066,14 +1063,14 @@ class VolumeViewTests(test.TestCase):
self._test_encryption(True) self._test_encryption(True)
@test.create_stubs({cinder: ('volume_list', 'volume_snapshot_list', @test.create_stubs({cinder: ('volume_list', 'volume_snapshot_list',
'volume_backup_supported'), 'volume_backup_supported',
api.nova: ('server_list',), 'tenant_absolute_limits'),
quotas: ('tenant_quota_usages',)}) api.nova: ('server_list',)})
def _test_encryption(self, encryption): def _test_encryption(self, encryption):
volumes = self.volumes.list() volumes = self.volumes.list()
for volume in volumes: for volume in volumes:
volume.encrypted = encryption volume.encrypted = encryption
quota_usages = self.quota_usages.first() limits = self.cinder_limits['absolute']
cinder.volume_backup_supported(IsA(http.HttpRequest))\ cinder.volume_backup_supported(IsA(http.HttpRequest))\
.MultipleTimes().AndReturn(False) .MultipleTimes().AndReturn(False)
@ -1083,8 +1080,8 @@ class VolumeViewTests(test.TestCase):
cinder.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) cinder.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([])
api.nova.server_list(IsA(http.HttpRequest), search_opts=None)\ api.nova.server_list(IsA(http.HttpRequest), search_opts=None)\
.AndReturn([self.servers.list(), False]) .AndReturn([self.servers.list(), False])
quotas.tenant_quota_usages(IsA(http.HttpRequest))\ cinder.tenant_absolute_limits(IsA(http.HttpRequest))\
.MultipleTimes().AndReturn(quota_usages) .MultipleTimes().AndReturn(limits)
self.mox.ReplayAll() self.mox.ReplayAll()