1
from boto.exception import EC2ResponseError
2
from django import template
3
from django.conf import settings
4
from django.contrib import messages
5
from django.contrib.auth.decorators import login_required
6
from django.shortcuts import redirect, render_to_response
7
from django.utils.translation import ugettext as _
9
from django_nova_syspanel.models import *
14
nova = get_nova_admin_connection()
15
conn = nova.connection_for(settings.NOVA_ADMIN_USER, settings.NOVA_PROJECT)
16
volumes = conn.get_all_volumes()
18
for volume in volumes:
19
statusstr = str(volume.status)[:-1]
20
instance = statusstr.split(', ')[-2]
21
device = statusstr.split(', ')[-1]
22
status = statusstr.split(' ')[0]
24
volume.device = device
25
volume.instance = instance
26
volume.status_str = status
28
return render_to_response('django_nova_syspanel/volumes/index.html',
29
{'volumes': volumes, },
30
context_instance=template.RequestContext(request))
34
def detach(request, volume_id):
35
nova = get_nova_admin_connection()
36
conn = nova.connection_for(settings.NOVA_ADMIN_USER, settings.NOVA_PROJECT)
38
conn.detach_volume(volume_id)
39
except EC2ResponseError, e:
40
messages.error(request, 'Unable to detach volume %s: %s' % \
41
(volume_id, e.error_message))
43
messages.success(request,
44
_('Volume %s has been scheduled to be detached.') %
46
return redirect('syspanel_volumes')
50
def delete(request, volume_id):
51
nova = get_nova_admin_connection()
52
conn = nova.connection_for(settings.NOVA_ADMIN_USER, settings.NOVA_PROJECT)
54
conn.delete_volume(volume_id)
55
except EC2ResponseError, e:
56
messages.error(request,
57
_('Unable to delete volume %(vol)s: %(msg)s') %
58
{'vol': volume_id, 'msg': e.error_message})
60
messages.success(request,
61
_('Volume %s has been successfully deleted.') %
63
return redirect('syspanel_volumes')