class UpdateTenant(forms.SelfHandlingForm): id = forms.CharField( label=_("ID"), widget=forms.TextInput(attrs={'readonly': 'readonly'})) name = forms.CharField( label=_("Name"), widget=forms.TextInput(attrs={'readonly': 'readonly'})) description = forms.CharField(widget=forms.widgets.Textarea(), label=_("Description")) enabled = forms.BooleanField(required=False, label=_("Enabled")) 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 api_exceptions.ApiException, e: LOG.exception( 'ApiException while updating tenant\n' 'Id: "%s", Name: "%s", Description: "%s", Enabled "%s"' % (data['id'], data['name'], data['description'], data['enabled'])) messages.error(request, _('Unable to update tenant: %s') % e.message) return redirect('syspanel_tenants')
class FloatingIpAssociate(forms.SelfHandlingForm): floating_ip_id = forms.CharField(widget=forms.HiddenInput()) floating_ip = forms.CharField(widget=forms.TextInput( attrs={'readonly': 'readonly'})) instance_id = forms.ChoiceField() def __init__(self, *args, **kwargs): super(FloatingIpAssociate, self).__init__(*args, **kwargs) instancelist = kwargs.get('initial', {}).get('instances', []) self.fields['instance_id'] = forms.ChoiceField(choices=instancelist, label="Instance") def handle(self, request, data): try: api.server_add_floating_ip(request, data['instance_id'], data['floating_ip_id']) LOG.info('Associating Floating IP "%s" with Instance "%s"' % (data['floating_ip'], data['instance_id'])) messages.info( request, 'Successfully associated Floating IP: %s \ with Instance: %s' % (data['floating_ip'], data['instance_id'])) except novaclient_exceptions.ClientException, e: LOG.error("ClientException in FloatingIpAssociate", exc_info=True) messages.error(request, 'Error associating Floating IP: %s' % e.message) return shortcuts.redirect('dash_floating_ips', request.user.tenant)
class CreateSnapshot(forms.SelfHandlingForm): tenant_id = forms.CharField(widget=forms.HiddenInput()) instance_id = forms.CharField(widget=forms.TextInput( attrs={'readonly': 'readonly'})) name = forms.CharField(max_length="20", label=_("Snapshot Name")) def handle(self, request, data): try: LOG.info('Creating snapshot "%s"' % data['name']) snapshot = api.snapshot_create(request, data['instance_id'], data['name']) instance = api.server_get(request, data['instance_id']) messages.info( request, _('Snapshot "%(name)s" created for instance "%(inst)s"') % { "name": data['name'], "inst": instance.name }) return shortcuts.redirect('dash_snapshots', data['tenant_id']) except api_exceptions.ApiException, e: msg = _('Error Creating Snapshot: %s') % e.message LOG.exception(msg) messages.error(request, msg) return shortcuts.redirect(request.build_absolute_uri())
class UpdateQuotas(forms.SelfHandlingForm): tenant_id = forms.CharField(label="ID (name)", widget=forms.TextInput(attrs={'readonly': 'readonly'})) metadata_items = forms.CharField(label="Metadata Items") injected_files = forms.CharField(label="Injected Files") injected_file_content_bytes = forms.CharField(label="Injected File " "Content Bytes") cores = forms.CharField(label="VCPUs") instances = forms.CharField(label="Instances") volumes = forms.CharField(label="Volumes") gigabytes = forms.CharField(label="Gigabytes") ram = forms.CharField(label="RAM (in MB)") floating_ips = forms.CharField(label="Floating IPs") def handle(self, request, data): try: api.admin_api(request).quota_sets.update(data['tenant_id'], metadata_items=data['metadata_items'], injected_file_content_bytes=data['injected_file_content_bytes'], volumes=data['volumes'], gigabytes=data['gigabytes'], ram=int(data['ram']) * 100, 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 api_exceptions.ApiException, e: messages.error(request, 'Unable to update quotas: %s' % e.message) return redirect('syspanel_tenants')
class LoginWithTenant(Login): username = forms.CharField( max_length="255", widget=forms.TextInput(attrs={'readonly': 'readonly'})) tenant = forms.CharField(widget=forms.HiddenInput()) def handle(self, request, data): tenant = data['tenant'] region = request.session.get('region', None) token = util.auth(request, data, region) if not token: return None if not tenant: return shortcuts.redirect('dash_startup') return shortcuts.redirect('dash_containers', tenant)
class UserUpdateForm(forms.Form): def __init__(self, *args, **kwargs): tenant_list = kwargs.pop('tenant_list', None) super(UserUpdateForm, self).__init__(*args, **kwargs) self.fields['tenant_id'].choices = [[tenant.id, tenant.name] for tenant in tenant_list] id = forms.CharField(label="ID", widget=forms.TextInput(attrs={'readonly': 'readonly'})) # FIXME: keystone doesn't return the username from a get API call. #name = forms.CharField(label="Name") email = forms.CharField(label="Email") password = forms.CharField(label="Password", widget=forms.PasswordInput(render_value=False), required=False) tenant_id = forms.ChoiceField(label="Primary Tenant")
class LoginWithRegion(Login): username = forms.CharField( max_length="255", widget=forms.TextInput(attrs={'readonly': 'readonly'})) region = forms.CharField(widget=forms.HiddenInput()) def handle(self, request, data): token = util.auth(request, data, data['region']) if not token: return None request.session['region'] = data['region'] util.set_default_for_region(request) tenant = util.get_tenant_for_region(request) api.check_services_for_region(request) if not tenant: return shortcuts.redirect('dash_startup') return shortcuts.redirect('dash_containers', tenant)
class UpdateInstance(forms.SelfHandlingForm): tenant_id = forms.CharField(widget=forms.HiddenInput()) instance = forms.CharField(widget=forms.TextInput( attrs={'readonly': 'readonly'})) name = forms.CharField(required=True) description = forms.CharField(required=False) def handle(self, request, data): tenant_id = data['tenant_id'] description = data.get('description', '') try: api.server_update(request, data['instance'], data['name'], description) messages.success(request, "Instance '%s' updated" % data['name']) except api_exceptions.ApiException, e: messages.error(request, 'Unable to update instance: %s' % e.message) return shortcuts.redirect('dash_instances', tenant_id)
class LoginWithTenant(Login): username = forms.CharField(max_length="20", widget=forms.TextInput(attrs={'readonly': 'readonly'})) tenant = forms.CharField(widget=forms.HiddenInput())