1
# vim: tabstop=4 shiftwidth=4 softtabstop=4
3
# Copyright 2010 United States Government as represented by the
4
# Administrator of the National Aeronautics and Space Administration.
7
# Licensed under the Apache License, Version 2.0 (the "License"); you may
8
# not use this file except in compliance with the License. You may obtain
9
# a copy of the License at
11
# http://www.apache.org/licenses/LICENSE-2.0
13
# Unless required by applicable law or agreed to in writing, software
14
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
# License for the specific language governing permissions and limitations
20
Views for managing Nova projects.
23
from django import http
24
from django import template
25
from django.conf import settings
26
from django.contrib.auth.decorators import login_required
27
from django.shortcuts import redirect, render_to_response
28
from django_openstack.core.connection import get_nova_admin_connection
29
from django_openstack import log as logging
30
from django_openstack.nova import forms as nova_forms
31
from django_openstack.nova.exceptions import handle_nova_error
32
from django_openstack.nova.shortcuts import get_project_or_404
35
LOG = logging.getLogger('django_openstack.nova')
40
def detail(request, project_id):
41
project = get_project_or_404(request, project_id)
43
return render_to_response(
44
'django_openstack/nova/projects/index.html',
46
'instance_count': project.get_instance_count()},
47
context_instance=template.RequestContext(request))
52
def manage(request, project_id):
53
project = get_project_or_404(request, project_id)
55
if project.projectManagerId != request.user.username:
56
return redirect('login')
58
nova = get_nova_admin_connection()
59
members = nova.get_project_members(project_id)
61
for member in members:
62
project_role = [str(role.role) for role in
63
nova.get_user_roles(member.memberId, project_id)]
64
global_role = [str(role.role) for role in
65
nova.get_user_roles(member.memberId, project=False)]
67
member.project_roles = ", ".join(project_role)
68
member.global_roles = ", ".join(global_role)
70
return render_to_response(
71
'django_openstack/nova/projects/manage.html',
74
context_instance=template.RequestContext(request))
79
def edit_user(request, project_id, username):
80
nova = get_nova_admin_connection()
81
project = get_project_or_404(request, project_id)
82
user = nova.get_user(username)
83
userroles = nova.get_user_roles(username, project_id)
85
if project.projectManagerId != request.user.username:
86
return redirect('login')
88
if request.method == 'POST':
89
form = nova_forms.ProjectUserForm(project, user, request.POST)
92
LOG.info('Roles for user "%s" on project "%s" changed to "%s' %
93
(str(user), project_id,
94
",".join(form.cleaned_data['role'])))
96
return redirect('nova_project_manage', project_id)
98
roles = [str(role.role) for role in userroles]
99
form = nova_forms.ProjectUserForm(project,
104
return render_to_response(
105
'django_openstack/nova/projects/edit_user.html',
109
context_instance=template.RequestContext(request))
114
def download_credentials(request, project_id):
115
project = get_project_or_404(request, project_id)
117
response = http.HttpResponse(mimetype='application/zip')
118
response['Content-Disposition'] = \
119
'attachment; filename=%s-%s-%s-x509.zip' % \
120
(settings.SITE_NAME, project.projectname, request.user)
121
response.write(project.get_zip())