summaryrefslogtreecommitdiff
path: root/horizon/horizon/dashboards/syspanel/tenants/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'horizon/horizon/dashboards/syspanel/tenants/views.py')
-rw-r--r--horizon/horizon/dashboards/syspanel/tenants/views.py143
1 files changed, 143 insertions, 0 deletions
diff --git a/horizon/horizon/dashboards/syspanel/tenants/views.py b/horizon/horizon/dashboards/syspanel/tenants/views.py
new file mode 100644
index 00000000..d6cc2735
--- /dev/null
+++ b/horizon/horizon/dashboards/syspanel/tenants/views.py
@@ -0,0 +1,143 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 United States Government as represented by the
+# Administrator of the National Aeronautics and Space Administration.
+# All Rights Reserved.
+#
+# Copyright 2011 Nebula, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import logging
+
+from django import shortcuts
+from django.conf import settings
+from django.contrib import messages
+from django.contrib.auth.decorators import login_required
+from django.utils.translation import ugettext as _
+from openstackx.api import exceptions as api_exceptions
+
+from horizon import api
+from horizon.dashboards.syspanel.tenants.forms import (AddUser, RemoveUser,
+ CreateTenant, UpdateTenant, UpdateQuotas, DeleteTenant)
+
+
+LOG = logging.getLogger(__name__)
+
+
+@login_required
+def index(request):
+ form, handled = DeleteTenant.maybe_handle(request)
+ if handled:
+ return handled
+
+ tenant_delete_form = DeleteTenant()
+
+ tenants = []
+ try:
+ tenants = api.tenant_list(request)
+ except api_exceptions.ApiException, e:
+ LOG.exception('ApiException while getting tenant list')
+ messages.error(request, _('Unable to get tenant info: %s') % e.message)
+ tenants.sort(key=lambda x: x.id, reverse=True)
+ return shortcuts.render(request,
+ 'syspanel/tenants/index.html', {
+ 'tenants': tenants,
+ 'tenant_delete_form': tenant_delete_form})
+
+
+@login_required
+def create(request):
+ form, handled = CreateTenant.maybe_handle(request)
+ if handled:
+ return handled
+
+ return shortcuts.render(request,
+ 'syspanel/tenants/create.html', {
+ 'form': form})
+
+
+@login_required
+def update(request, tenant_id):
+ form, handled = UpdateTenant.maybe_handle(request)
+ if handled:
+ return handled
+
+ if request.method == 'GET':
+ try:
+ tenant = api.tenant_get(request, tenant_id)
+ form = UpdateTenant(initial={'id': tenant.id,
+ 'name': tenant.name,
+ 'description': tenant.description,
+ 'enabled': tenant.enabled})
+ except api_exceptions.ApiException, e:
+ LOG.exception('Error fetching tenant with id "%s"' % tenant_id)
+ messages.error(request,
+ _('Unable to update tenant: %s') % e.message)
+ return shortcuts.redirect('horizon:syspanel:tenants:index')
+
+ return shortcuts.render(request,
+ 'syspanel/tenants/update.html', {
+ 'form': form})
+
+
+@login_required
+def users(request, tenant_id):
+ for f in (AddUser, RemoveUser,):
+ form, handled = f.maybe_handle(request)
+ if handled:
+ return handled
+
+ add_user_form = AddUser()
+ remove_user_form = RemoveUser()
+
+ users = api.user_list(request, tenant_id)
+ all_users = api.user_list(request)
+ user_ids = [u.id for u in users]
+ new_users = [u for u in all_users if not u.id in user_ids]
+ return shortcuts.render(request,
+ 'syspanel/tenants/users.html', {
+ 'add_user_form': add_user_form,
+ 'remove_user_form': remove_user_form,
+ 'tenant_id': tenant_id,
+ 'users': users,
+ 'new_users': new_users})
+
+
+@login_required
+def quotas(request, tenant_id):
+ for f in (UpdateQuotas,):
+ form, handled = f.maybe_handle(request)
+ if handled:
+ return handled
+
+ quotas = api.admin_api(request).quota_sets.get(tenant_id)
+ quota_set = {
+ 'tenant_id': quotas.id,
+ 'metadata_items': quotas.metadata_items,
+ 'injected_file_content_bytes': quotas.injected_file_content_bytes,
+ 'volumes': quotas.volumes,
+ 'gigabytes': quotas.gigabytes,
+ 'ram': int(quotas.ram),
+ 'floating_ips': quotas.floating_ips,
+ 'instances': quotas.instances,
+ 'injected_files': quotas.injected_files,
+ 'cores': quotas.cores,
+ }
+ form = UpdateQuotas(initial=quota_set)
+
+ return shortcuts.render(request,
+ 'syspanel/tenants/quotas.html', {
+ 'form': form,
+ 'tenant_id': tenant_id,
+ 'quotas': quotas})