Source code for horizon.dashboards.syspanel.projects.forms

# vim: tabstop=4 shiftwidth=4 softtabstop=4

# Copyright 2012 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# All Rights Reserved.
#
# Copyright 2012 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.contrib import messages
from django.utils.translation import ugettext_lazy as _

from horizon import api
from horizon import exceptions
from horizon import forms


LOG = logging.getLogger(__name__)


[docs]class AddUser(forms.SelfHandlingForm): tenant_id = forms.CharField(widget=forms.widgets.HiddenInput()) user_id = forms.CharField(widget=forms.widgets.HiddenInput()) role_id = forms.ChoiceField(label=_("Role")) def __init__(self, *args, **kwargs): roles = kwargs.pop('roles') super(AddUser, self).__init__(*args, **kwargs) role_choices = [(role.id, role.name) for role in roles] self.fields['role_id'].choices = role_choices
[docs] def handle(self, request, data): try: api.add_tenant_user_role(request, data['tenant_id'], data['user_id'], data['role_id']) messages.success(request, _('Successfully added user to tenant.')) except: exceptions.handle(request, _('Unable to add user to tenant.')) return shortcuts.redirect('horizon:syspanel:projects:users', tenant_id=data['tenant_id'])
[docs]class CreateTenant(forms.SelfHandlingForm): name = forms.CharField(label=_("Name")) description = forms.CharField( widget=forms.widgets.Textarea(), label=_("Description")) enabled = forms.BooleanField(label=_("Enabled"), required=False, initial=True)
[docs] def handle(self, request, data): try: LOG.info('Creating tenant with name "%s"' % data['name']) api.tenant_create(request, data['name'], data['description'], data['enabled']) messages.success(request, _('%s was successfully created.') % data['name']) except: exceptions.handle(request, _('Unable to create tenant.')) return shortcuts.redirect('horizon:syspanel:projects:index')
[docs]class UpdateTenant(forms.SelfHandlingForm): id = forms.CharField(label=_("ID"), widget=forms.TextInput(attrs={'readonly': 'readonly'})) name = forms.CharField(label=_("Name")) description = forms.CharField( widget=forms.widgets.Textarea(), label=_("Description")) enabled = forms.BooleanField(required=False, label=_("Enabled"))
[docs] def handle(self, request, data): try: LOG.info('Updating tenant with id "%s"' % data['id']) api.tenant_update(request, data['id'], data['name'], data['description'], data['enabled']) messages.success(request, _('%s was successfully updated.') % data['name']) except: exceptions.handle(request, _('Unable to update tenant.')) return shortcuts.redirect('horizon:syspanel:projects:index')
[docs]class UpdateQuotas(forms.SelfHandlingForm): tenant_id = forms.CharField(label=_("ID (name)"), widget=forms.TextInput(attrs={'readonly': 'readonly'})) metadata_items = forms.IntegerField(label=_("Metadata Items")) injected_files = forms.IntegerField(label=_("Injected Files")) injected_file_content_bytes = forms.IntegerField(label=_("Injected File " "Content Bytes")) cores = forms.IntegerField(label=_("VCPUs")) instances = forms.IntegerField(label=_("Instances")) volumes = forms.IntegerField(label=_("Volumes")) gigabytes = forms.IntegerField(label=_("Gigabytes")) ram = forms.IntegerField(label=_("RAM (in MB)")) floating_ips = forms.IntegerField(label=_("Floating IPs"))
[docs] def handle(self, request, data): try: api.nova.tenant_quota_update(request, data['tenant_id'], metadata_items=data['metadata_items'], injected_file_content_bytes=data['injected_file_content_bytes'], volumes=data['volumes'], gigabytes=data['gigabytes'], ram=data['ram'], floating_ips=data['floating_ips'], instances=data['instances'], injected_files=data['injected_files'], cores=data['cores'], ) messages.success(request, _('Quotas for %s were successfully updated.') % data['tenant_id']) except: exceptions.handle(request, _('Unable to update quotas.')) return shortcuts.redirect('horizon:syspanel:projects:index')