Hide delete volume if it has snapshot

If the volume has a snapshot, it is not allowed to
delete it. In tables the delete action is hidden but
if we go to the volume detail page, the delete action
is available.

This patch hides the delete volume on detail page too.

Change-Id: I4d8690b035dedd7ebcacb3479d346cfb3fb324f1
Closes-Bug: #1546423
(cherry picked from commit 49a1a6356d)
This commit is contained in:
Masco Kaliyamoorthy 2016-02-17 19:45:38 +05:30
parent a153311a5e
commit 238e2351f8
2 changed files with 10 additions and 1 deletions

View File

@ -1072,15 +1072,20 @@ class VolumeViewTests(test.TestCase):
msg_prefix="The create button is not disabled")
@test.create_stubs({cinder: ('tenant_absolute_limits',
'volume_get',),
'volume_get',
'volume_snapshot_list'),
api.nova: ('server_get',)})
def test_detail_view(self):
volume = self.cinder_volumes.first()
server = self.servers.first()
snapshots = self.cinder_volume_snapshots.list()
volume.attachments = [{"server_id": server.id}]
cinder.volume_get(IsA(http.HttpRequest), volume.id).AndReturn(volume)
cinder.volume_snapshot_list(IsA(http.HttpRequest),
search_opts={'volume_id': volume.id})\
.AndReturn(snapshots)
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
cinder.tenant_absolute_limits(IsA(http.HttpRequest))\
.AndReturn(self.cinder_limits['absolute'])

View File

@ -70,6 +70,10 @@ class DetailView(tabs.TabView):
try:
volume_id = self.kwargs['volume_id']
volume = cinder.volume_get(self.request, volume_id)
snapshots = cinder.volume_snapshot_list(
self.request, search_opts={'volume_id': volume.id})
if snapshots:
setattr(volume, 'has_snapshot', True)
for att in volume.attachments:
att['instance'] = api.nova.server_get(self.request,
att['server_id'])